Add tests for URL attributes
Marc Mims
7 years ago
0 | use Test::More; | |
1 | use Net::Twitter; | |
2 | use URI; | |
3 | ||
4 | sub test_uris { | |
5 | my ( $nt, $urls ) = @_; | |
6 | ||
7 | for my $attr ( keys %$urls ) { | |
8 | my $uri = $nt->$attr; | |
9 | ok $uri->isa('URI'), "$attr isa URI"; | |
10 | is "$uri", $urls->{$attr}, "$attr is expected url"; | |
11 | } | |
12 | }; | |
13 | ||
14 | subtest 'default URL attributes' => sub { | |
15 | ||
16 | my %urls = ( | |
17 | authentication_url => 'https://api.twitter.com/oauth/authenticate', | |
18 | authorization_url => 'https://api.twitter.com/oauth/authorize', | |
19 | request_token_url => 'https://api.twitter.com/oauth/request_token', | |
20 | access_token_url => 'https://api.twitter.com/oauth/access_token', | |
21 | xauth_url => 'https://api.twitter.com/oauth/access_token', | |
22 | ); | |
23 | ||
24 | my $nt = Net::Twitter->new( | |
25 | traits => [ qw/API::RESTv1_1 OAuth/ ], | |
26 | consumer_key => 'key', | |
27 | consumer_secret => 'secret', | |
28 | ); | |
29 | ||
30 | test_uris($nt, \%urls); | |
31 | }; | |
32 | ||
33 | subtest 'explicit URL attributes' => sub { | |
34 | ||
35 | my %urls = ( | |
36 | authentication_url => 'https://example.com/authenticate', | |
37 | authorization_url => 'https://example.com/authorize', | |
38 | request_token_url => 'https://example.com/request', | |
39 | access_token_url => 'https://example.com/access', | |
40 | xauth_url => 'https://example.com/xauth', | |
41 | ); | |
42 | ||
43 | my $nt = Net::Twitter->new( | |
44 | traits => [ qw/API::RESTv1_1 OAuth/ ], | |
45 | consumer_key => 'key', | |
46 | consumer_secret => 'secret', | |
47 | %urls, | |
48 | ); | |
49 | ||
50 | test_uris($nt, \%urls); | |
51 | }; | |
52 | ||
53 | subtest 'with URIs' => sub { | |
54 | ||
55 | my %urls = ( | |
56 | authentication_url => URI->new('https://example.com/authenticate'), | |
57 | authorization_url => URI->new('https://example.com/authorize'), | |
58 | request_token_url => URI->new('https://example.com/request'), | |
59 | access_token_url => URI->new('https://example.com/access'), | |
60 | xauth_url => URI->new('https://example.com/xauth'), | |
61 | ); | |
62 | ||
63 | my $nt = Net::Twitter->new( | |
64 | traits => [ qw/API::RESTv1_1 OAuth/ ], | |
65 | consumer_key => 'key', | |
66 | consumer_secret => 'secret', | |
67 | %urls, | |
68 | ); | |
69 | ||
70 | test_uris($nt, \%urls); | |
71 | }; | |
72 | ||
73 | subtest 'oauth_urls pseudo attribute' => sub { | |
74 | ||
75 | my %urls = ( | |
76 | authentication_url => 'https://example.com/authenticate', | |
77 | authorization_url => 'https://example.com/authorize', | |
78 | request_token_url => 'https://example.com/request', | |
79 | access_token_url => 'https://example.com/access', | |
80 | xauth_url => 'https://example.com/xauth', | |
81 | ); | |
82 | ||
83 | my $nt = Net::Twitter->new( | |
84 | traits => [ qw/API::RESTv1_1 OAuth/ ], | |
85 | consumer_key => 'key', | |
86 | consumer_secret => 'secret', | |
87 | oauth_urls => \%urls, | |
88 | ); | |
89 | ||
90 | test_uris($nt, \%urls); | |
91 | }; | |
92 | ||
93 | subtest 'AppAuth URLs' => sub { | |
94 | ||
95 | my %urls = ( | |
96 | request_token_url => "https://api.twitter.com/oauth2/token", | |
97 | invalidate_token_url => "https://api.twitter.com/oauth2/invalidate_token", | |
98 | ); | |
99 | ||
100 | my $nt = Net::Twitter->new( | |
101 | traits => [ qw/API::RESTv1_1 AppAuth/ ], | |
102 | consumer_key => 'key', | |
103 | consumer_secret => 'secret', | |
104 | ); | |
105 | ||
106 | test_uris($nt, \%urls); | |
107 | }; | |
108 | ||
109 | done_testing; |