summary refs log tree commit diff
path: root/t/05_authentication.t
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--t/05_authentication.t67
1 files changed, 67 insertions, 0 deletions
diff --git a/t/05_authentication.t b/t/05_authentication.t
new file mode 100644
index 0000000..e769a53
--- /dev/null
+++ b/t/05_authentication.t
@@ -0,0 +1,67 @@
+use strict;
+use warnings;
+use Test::More;
+
+package test::auth;
+use MooseX::Net::API;
+
+net_api_declare fake_auth => (
+    api_base_url          => 'http://localhost',
+    format                => 'json',
+    authentication        => 1,
+    authentication_method => 'my_auth',
+);
+
+net_api_method user => (
+    method => 'GET',
+    path   => '/user/',
+);
+
+sub my_auth {
+    my ($self, $request, $ua, $h) = @_;
+    $request->header('Authentication' => 1);
+}
+
+package test::auth::simple;
+use MooseX::Net::API;
+
+net_api_declare fake_auth => (
+    api_base_url          => 'http://localhost',
+    format                => 'json',
+    authentication        => 1,
+);
+
+net_api_method user => (
+    method => 'GET',
+    path   => '/user/',
+);
+
+package main;
+
+ok my $api = test::auth->new, 'object api created';
+$api->api_useragent->add_handler(
+    request_send => sub {
+        my $request = shift;
+        is $request->header('Authentication'), 1, 'authentication header is set';
+        my $res = HTTP::Response->new(200);
+        $res->content('[{"name":"eris"}]');
+        $res;
+    }
+);
+ok $api->user, 'method user success';
+
+ok $api =
+  test::auth::simple->new(api_username => 'foo', api_password => 'bar'),
+  'object api simple created';
+$api->api_useragent->add_handler(
+    request_send => sub {
+        my $request = shift;
+        ok $request->header('authorization'), 'authentication header is set';
+        my $res = HTTP::Response->new(200);
+        $res->content('[{"name":"eris"}]');
+        $res;
+    }
+);
+ok $api->user, 'method user success';
+
+done_testing;