From 57e37405c4b8e220dab763d767d252a11224f76f Mon Sep 17 00:00:00 2001 From: Tomas Cohen Arazi Date: Wed, 18 Apr 2018 13:32:34 -0300 Subject: [PATCH] Bug 20612: Unit tests This patch makes the oauth.t tests leverage on the new Koha::ApiKey(s) classes. It adds tests for expired tokens too. To test: - Apply this patch - Run: $ kshell k$ prove t/db_dependent/api/v1/oauth.t => FAIL: Tests should fail without the rest of the patches. Sponsored-by: ByWater Solutions Signed-off-by: Julian Maurice Signed-off-by: Benjamin Rokseth --- t/db_dependent/api/v1/oauth.t | 34 +++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/t/db_dependent/api/v1/oauth.t b/t/db_dependent/api/v1/oauth.t index eb95195..cc56293 100755 --- a/t/db_dependent/api/v1/oauth.t +++ b/t/db_dependent/api/v1/oauth.t @@ -31,15 +31,14 @@ my $schema = Koha::Database->new->schema; my $builder = t::lib::TestBuilder->new(); subtest '/oauth/token tests' => sub { - plan tests => 19; + plan tests => 24; $schema->storage->txn_begin; my $patron = $builder->build_object({ class => 'Koha::Patrons', value => { - surname => 'Test OAuth', - flags => 0, + flags => 0 # no permissions }, }); @@ -57,17 +56,12 @@ subtest '/oauth/token tests' => sub { ->status_is(403) ->json_is({error => 'unauthorized_client'}); - my ($client_id, $client_secret) = ('client1', 'secr3t'); - t::lib::Mocks::mock_config('api_client', { - 'client_id' => $client_id, - 'client_secret' => $client_secret, - patron_id => $patron->borrowernumber, - }); + my $api_key = Koha::ApiKey->new({ patron_id => $patron->id, description => 'blah' })->store; my $formData = { - grant_type => 'client_credentials', - client_id => $client_id, - client_secret => $client_secret, + grant_type => 'client_credentials', + client_id => $api_key->client_id, + client_secret => $api_key->secret }; $t->post_ok('/api/v1/oauth/token', form => $formData) ->status_is(200) @@ -87,9 +81,23 @@ subtest '/oauth/token tests' => sub { # With access token and permissions, it returns 200 $patron->flags(2**4)->store; - $tx = $t->ua->build_tx(GET => '/api/v1/patrons'); + $tx = $t->ua->build_tx(GET => '/api/v1/patrons/' . $patron->borrowernumber); $tx->req->headers->authorization("Bearer $access_token"); $t->request_ok($tx)->status_is(200); + # expire token + my $token = Koha::OAuthAccessTokens->find($access_token); + $token->expires( time - 1 )->store; + $tx = $t->ua->build_tx( GET => '/api/v1/patrons' ); + $tx->req->headers->authorization("Bearer $access_token"); + $t->request_ok($tx) + ->status_is(401); + + # revoke key + $api_key->active(0)->store; + $t->post_ok('/api/v1/oauth/token', form => $formData) + ->status_is(403) + ->json_is({ error => 'unauthorized_client' }); + $schema->storage->txn_rollback; }; -- 2.1.4