aboutsummaryrefslogtreecommitdiff
path: root/t/tests/Net/Hawk/Client.t
blob: 320de94d3edbad167201c1a07e111e3d757cc874 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#!perl 
use strict;
use warnings;
use Test::More;
use Net::Hawk::Client;
 
my $c = Net::Hawk::Client->new();
 
subtest readme => sub {
    my %credentials = (
        id => 'dh37fgj492je',
        key => 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn',
        algorithm => 'sha256',
    );
    my %options = (
        credentials => \%credentials,
        timestamp => 1353832234,
        nonce => 'j4h3g2',
        ext => 'some-app-ext-data'
    );
 
    subtest GET => sub {
        my $field = $c->header(
            'http://example.com:8000/resource/1?b=1&a=2',
            'GET',
            \%options,
        )->{field};
 
        is(
            $field,
            'Hawk id="dh37fgj492je", ts="1353832234", nonce="j4h3g2", ext="some-app-ext-data", mac="6R4rV5iE+NPoym+WwjeHzjAGXUtLNIxmo1vpMofpLAE="',
            'Hawk header generated ok',
        );
    };
 
    subtest POST => sub {
        $options{payload} = 'Thank you for flying Hawk';
        $options{content_type} = 'text/plain';
 
        my $field = $c->header(
            'http://example.com:8000/resource/1?b=1&a=2',
            'POST',
            \%options,
        )->{field};
 
        is(
            $field,
            'Hawk id="dh37fgj492je", ts="1353832234", nonce="j4h3g2", hash="Yi9LfIIFRtBEPt74PVmbTF/xVAwPn7ub15ePICfgnuY=", ext="some-app-ext-data", mac="aSe1DERmZuRl3pI36/9BdZmnErTw3sNzOOAUlfeKjVw="',
            'Hawk header generated ok',
        );
    };
};
 
subtest header => sub {
    my $uri = 'http://example.net/somewhere/over/the/rainbow';
    my $uri_s = 'https://example.net/somewhere/over/the/rainbow';
    my %args = (
        credentials => {
            id => '123456',
            key => '2983d45yun89q',
            algorithm => 'sha1',
        },
        ext => 'Bazinga!',
        timestamp => 1353809207,
        nonce => 'Ygvqdz',
        payload => 'something to write about',
    );
 
    my $header = $c->header($uri,POST => \%args);
    is(
        $header->{field},
        'Hawk id="123456", ts="1353809207", nonce="Ygvqdz", hash="bsvY3IfUllw6V5rvk4tStEvpBhE=", ext="Bazinga!", mac="qbf1ZPG/r/e06F4ht+T77LXi5vw="',
        'valid authorization header (sha1)',
    );
 
    $args{credentials}{algorithm}='sha256';
    $args{content_type} = 'text/plain';
    $header = $c->header($uri_s,POST => \%args);
    is(
        $header->{field},
        'Hawk id="123456", ts="1353809207", nonce="Ygvqdz", hash="2QfCt3GuY9HQnHWyWD3wX68ZOKbynqlfYmuO2ZBRqtY=", ext="Bazinga!", mac="q1CwFoSHzPZSkbIvl0oYlD+91rBUEvFk763nMjMndj8="',
        'valid authorization header (sha256)',
    );
 
    delete $args{ext};
    $header = $c->header($uri_s,POST => \%args);
    is(
        $header->{field},
        'Hawk id="123456", ts="1353809207", nonce="Ygvqdz", hash="2QfCt3GuY9HQnHWyWD3wX68ZOKbynqlfYmuO2ZBRqtY=", mac="HTgtd0jPI6E4izx8e4OHdO36q00xFCU0FolNq3RiCYs="',
        'valid authorization header (no ext)',
    );
 
    $args{ext}=undef;
    $header = $c->header($uri_s,POST => \%args);
    is(
        $header->{field},
        'Hawk id="123456", ts="1353809207", nonce="Ygvqdz", hash="2QfCt3GuY9HQnHWyWD3wX68ZOKbynqlfYmuO2ZBRqtY=", mac="HTgtd0jPI6E4izx8e4OHdO36q00xFCU0FolNq3RiCYs="',
        'valid authorization header (null ext)',
    );
};
 
done_testing();