aboutsummaryrefslogtreecommitdiff
path: root/t/tests/Net/Hawk/Crypto.t
blob: eb1a52f56acb71798db39a964fe403bed97173a5 (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
#!perl 
use strict;
use warnings;
use Test::More;
use Net::Hawk::Crypto;
 
my $c = Net::Hawk::Crypto->new();
 
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 $string = $c->generate_normalized_string(
        header => {
            credentials => \%credentials,
            ts => $options{timestamp},
            nonce => $options{nonce},
            method => 'GET',
            resource => '/resource?a=1&b=2',
            host => 'example.com',
            port => 8000,
            ext => $options{ext},
        }
    );
 
    is(
        $string,
        "hawk.1.header\n1353832234\nj4h3g2\nGET\n/resource?a=1&b=2\nexample.com\n8000\n\nsome-app-ext-data\n",
        'normalized string generated ok',
    );
};
 
subtest POST => sub {
    my $payload = 'Thank you for flying Hawk';
    my $content_type = 'text/plain';
 
    my $payload_hash = $c->calculate_payload_hash(
        $payload,
        $credentials{algorithm},
        $content_type,
    );
 
    my $string = $c->generate_normalized_string(
        header => {
            credentials => \%credentials,
            ts => $options{timestamp},
            nonce => $options{nonce},
            method => 'POST',
            resource => '/resource?a=1&b=2',
            host => 'example.com',
            port => 8000,
            hash => $payload_hash,
            ext => $options{ext},
        }
    );
 
    is(
        $string,
        "hawk.1.header\n1353832234\nj4h3g2\nPOST\n/resource?a=1&b=2\nexample.com\n8000\nYi9LfIIFRtBEPt74PVmbTF/xVAwPn7ub15ePICfgnuY=\nsome-app-ext-data\n",
        'normalized string generated ok',
    );
};
 
done_testing;