The Perl and Raku Conference 2025: Greenville, South Carolina - June 27-29 Learn more

#!perl
use strict;
use lib qw(t/lib);
eval 'use TestUA';
plan skip_all => 'LWP::UserAgent 5.819 required' if $@;
plan tests => 13;
my $nt = Net::Twitter->new(legacy => 1);
isa_ok $nt, 'Net::Twitter';
$nt = Net::Twitter->new(legacy => 0);
my $t = TestUA->new(1, $nt->ua);
is exception { $nt->user_timeline }, undef, "lives without credentials";
ok !$t->request->header('Authorization'), "no auth header without credentials";
$nt->credentials(homer => 'doh!');
is exception { $nt->user_timeline }, undef, "lives with credentials";
like $t->request->header('Authorization'), qr/Basic/, "has Basic Auth header";
$nt->public_timeline;
ok $t->request->header('Authorization'), "public timeline auths by default";
$nt->public_timeline({ authenticate => 0 });
ok !$t->request->header('Authorization'), "public timeline can auth";
$nt->public_timeline({ authenticate => 1 });
ok $t->request->header('Authorization'), "can force authentication";
$nt->rate_limit_status({ authenticate => 0 });
ok !$t->request->header('Authorization'), "rate_limit_status allows no-auth";
$nt->rate_limit_status;
ok $t->request->header('Authorization'), "rate_limit_status defaults to auth";
$nt = Net::Twitter->new(
traits => [qw/API::REST OAuth/],
consumer_key => 'com key',
consumer_secret => 'com secret',
);
$t = TestUA->new(1, $nt->ua);
is exception { $nt->user_timeline }, undef, "lives without oauth tokens";
ok !$t->request->header('Authorization'), "no auth header without access tokens";
$nt->access_token('1234');
$nt->access_token_secret('5678');
is exception { $nt->user_timeline }, undef, "lives with access tokens";