InternetData
view release on metacpan or search on metacpan
t/04-oauth.t view on Meta::CPAN
'metadata, on a base URL with a trailing slash');
for my $case (@{ $corpus->{forms}{cases} }, @{ $corpus->{deferred}{forms} }) {
serve({ status => 200, body => \%EVERY_REQUIRED_MEMBER });
call(client()->oauth, $case->{operation}, $case->{args}, timeout => 5);
is(scalar @requests, 1, "$case->{name}: one request");
my $want = $corpus->{endpoints}{ $case->{endpoint} };
my $sent = "$requests[0]{method} $requests[0]{path}";
is($sent, "$want->{method} $want->{path}", "$case->{name}: endpoint");
like($requests[0]{headers}{'content-type'}, qr/\A\Q$corpus->{forms}{contentType}\E/,
"$case->{name}: content type");
is_deeply(form_fields($requests[0]{body}), $case->{fields}, "$case->{name}: fields");
}
serve({ status => 200, body => \%EVERY_REQUIRED_MEMBER });
client()->oauth->device_authorization('internetdata-cli', scope => '', resource => '');
is_deeply(form_fields($requests[0]{body}), { client_id => 'internetdata-cli' },
'an empty optional field is left out');
};
t/04-oauth.t view on Meta::CPAN
serve({ status => 201, body => \%EVERY_REQUIRED_MEMBER });
my %given = exists $case->{args}{clientName} ? (client_name => $case->{args}{clientName}) : ();
my $outcome = settle(sub {
InternetData->new(base_url => $origin->url . '///')->oauth
->register($case->{args}{redirectUris}, %given, timeout => 5);
});
is(ref $outcome, 'HASH', "$case->{name}: answered");
is(scalar @requests, 1, "$case->{name}: one request");
is("$requests[0]{method} $requests[0]{path}", "$register->{endpoint}{method} $register->{endpoint}{path}",
"$case->{name}: endpoint");
like($requests[0]{headers}{'content-type'}, qr/\A\Q$register->{contentType}\E/, "$case->{name}: JSON");
is_deeply(Mojo::JSON::decode_json($requests[0]{body}), $case->{body}, "$case->{name}: body");
}
my @refused = (
(map { $_->{args}{redirectUris} } @{ $register->{refusals}{cases} }),
["http://127.0.0.1/cb\x{D800}"], 'http://127.0.0.1/cb', undef,
);
for my $uris (@refused) {
serve({ status => 201, body => \%EVERY_REQUIRED_MEMBER });
# Not encode_json: Cpanel::JSON::XS, which Mojo::JSON uses where it is
# installed, dies on the lone surrogate.
( run in 1.415 second using v1.01-cache-2.11-cpan-99fa8243a42 )