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 )