Codebase list libnet-twitter-perl / f72439a
Add tests for URL attributes Marc Mims 7 years ago
1 changed file(s) with 110 addition(s) and 0 deletion(s). Raw diff Collapse all Expand all
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;