aboutsummaryrefslogtreecommitdiff
path: root/t
diff options
context:
space:
mode:
authordakkar <dakkar@thenautilus.net>2014-12-21 11:34:04 +0000
committerdakkar <dakkar@thenautilus.net>2014-12-21 11:34:04 +0000
commitaa127d020cc85e790c6caa158860a298142ed85d (patch)
tree9a08f5c7fc947558315751cdbc7485c753bedaed /t
parentmore client tests (diff)
downloadnet-hawk-aa127d020cc85e790c6caa158860a298142ed85d.tar.gz
net-hawk-aa127d020cc85e790c6caa158860a298142ed85d.tar.bz2
net-hawk-aa127d020cc85e790c6caa158860a298142ed85d.zip
authenticate client tests
Diffstat (limited to 't')
-rw-r--r--t/tests/Net/Hawk/Client.t68
1 files changed, 68 insertions, 0 deletions
diff --git a/t/tests/Net/Hawk/Client.t b/t/tests/Net/Hawk/Client.t
index 5320178..6a09c1e 100644
--- a/t/tests/Net/Hawk/Client.t
+++ b/t/tests/Net/Hawk/Client.t
@@ -119,4 +119,72 @@ subtest header => sub {
);
};
+subtest authenticate => sub {
+ ok(
+ ! $c->authenticate([
+ 'server-authorization' => 'Hawk mac="abc", bad="xyz"',
+ ],{}),
+ 'returns false on invalid header',
+ );
+
+ my %artifacts = (
+ method => 'POST',
+ host => 'example.com',
+ port => '8080',
+ resource => '/resource/4?filter=a',
+ ts => '1362336900',
+ nonce => 'eb5S_L',
+ hash => 'nJjkVtBE5Y/Bk38Aiokwn0jiJxt/0S2WRSUwWLCf5xk=',
+ ext => 'some-app-data',
+ app => undef,
+ dlg => undef,
+ mac => 'BlmSe8K+pbKIb6YsZCnt4E1GrYvY1AaYayNR82dGpIk=',
+ id => '123456',
+ );
+
+ my %credentials = (
+ id => '123456',
+ key => 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn',
+ algorithm => 'sha256',
+ user => 'steve'
+ );
+
+ ok(
+ ! $c->authenticate([
+ 'content-type' => 'text/plain',
+ 'server-authorization' => 'Hawk mac="_IJRsMl/4oL+nn+vKoeVZPdCHXB4yJkNnBbTbHFZUYE=", hash="f9cDF/TDm7TkYRLnGwRMfeDzT6LixQVLvrIKhh0vgmM=", ext="response-specific"',
+ ],\%credentials,\%artifacts),
+ 'returns false on invalid mac',
+ );
+
+ ok(
+ $c->authenticate([
+ 'content-type' => 'text/plain',
+ 'server-authorization' => 'Hawk mac="XIJRsMl/4oL+nn+vKoeVZPdCHXB4yJkNnBbTbHFZUYE=", hash="f9cDF/TDm7TkYRLnGwRMfeDzT6LixQVLvrIKhh0vgmM=", ext="response-specific"',
+ ],\%credentials,\%artifacts),
+ 'returns true on ignoring hash',
+ );
+
+ ok(
+ ! $c->authenticate([
+ 'www-authenticate' => 'Hawk ts="1362346425875", tsm="PhwayS28vtnn3qbv0mqRBYSXebN/zggEtucfeZ620Zo=", x="Stale timestamp"',
+ ],{}),
+ 'fails on invalid WWW-Authenticate header format',
+ );
+
+ ok(
+ ! $c->authenticate([
+ 'www-authenticate' => 'Hawk ts="1362346425875", tsm="hwayS28vtnn3qbv0mqRBYSXebN/zggEtucfeZ620Zo=", error="Stale timestamp"',
+ ],\%credentials),
+ 'fails on invalid WWW-Authenticate header format',
+ );
+
+ ok(
+ $c->authenticate([
+ 'www-authenticate' => 'Hawk error="Stale timestamp"',
+ ],{}),
+ 'skips tsm validation when missing ts',
+ );
+};
+
done_testing();