From a59f0f707d3f40c4a4a64b26ad29be576ac9727b Mon Sep 17 00:00:00 2001 From: Lucas Gass Date: Tue, 12 Feb 2019 00:37:34 +0000 Subject: [PATCH] Bug 22132: (QA follow-up) Tests - use Mojo builtin for auth - Revert This reverts commit 7296f1d0bf76798ab914f45d65810e23194a565d. Signed-off-by: Lucas Gass --- t/db_dependent/api/v1/auth_basic.t | 42 ++++++++++++++++++++---------- 1 file changed, 28 insertions(+), 14 deletions(-) diff --git a/t/db_dependent/api/v1/auth_basic.t b/t/db_dependent/api/v1/auth_basic.t index eba153a67d..d689678cce 100644 --- a/t/db_dependent/api/v1/auth_basic.t +++ b/t/db_dependent/api/v1/auth_basic.t @@ -23,10 +23,13 @@ use Test::Mojo; use t::lib::TestBuilder; use t::lib::Mocks; +use MIME::Base64; + my $schema = Koha::Database->new->schema; my $builder = t::lib::TestBuilder->new; my $t = Test::Mojo->new('Koha::REST::V1'); +my $tx; subtest 'success tests' => sub { @@ -41,19 +44,22 @@ subtest 'success tests' => sub { my $patron = $builder->build_object( { class => 'Koha::Patrons', value => { userid => 'tomasito', flags => 2**4 } } ); $patron->set_password($password); - my $userid = $patron->userid; - $t->get_ok("//$userid:$password@/api/v1/patrons") - ->status_is( 200, 'Successful authentication and permissions check' ); + my $credentials = encode_base64( $patron->userid . ':' . $password ); + + $tx = $t->ua->build_tx( GET => "/api/v1/patrons" ); + $tx->req->headers->authorization("Basic $credentials"); + $t->request_ok($tx)->status_is( 200, 'Successful authentication and permissions check' ); $patron->flags(undef)->store; - $t->get_ok("//$userid:$password@/api/v1/patrons") - ->status_is( 403, 'Successful authentication and not enough permissions' ) - ->json_is( + $tx = $t->ua->build_tx( GET => "/api/v1/patrons" ); + $tx->req->headers->authorization("Basic $credentials"); + $t->request_ok($tx)->status_is( 403, 'Successful authentication and not enough permissions' ) + ->json_is( '/error' => 'Authorization failure. Missing required permission(s).', 'Error message returned' - ); + ); $schema->storage->txn_rollback; }; @@ -72,18 +78,26 @@ subtest 'failure tests' => sub { my $patron = $builder->build_object( { class => 'Koha::Patrons', value => { userid => 'tomasito', flags => 2**4 } } ); $patron->set_password($password); - my $userid = $patron->userid; - $t->get_ok("//@/api/v1/patrons") - ->status_is( 401, 'No credentials passed' ); + $tx = $t->ua->build_tx( GET => "/api/v1/patrons" ); + $tx->req->headers->authorization("Basic "); + $t->request_ok($tx)->status_is( 401, 'No credentials passed' ); + + $patron->flags(undef)->store; + + my $credentials = encode_base64( $patron->userid . ':' . $bad_password ); + + $tx = $t->ua->build_tx( GET => "/api/v1/patrons" ); + $tx->req->headers->authorization("Basic $credentials"); + $t->request_ok($tx)->status_is( 403, 'Successful authentication and not enough permissions' ) + ->json_is( '/error' => 'Invalid password', 'Error message returned' ); - $t->get_ok("//$userid:$bad_password@/api/v1/patrons") - ->status_is( 403, 'Failed authentication, invalid password' ) - ->json_is( '/error' => 'Invalid password', 'Error message returned' ); t::lib::Mocks::mock_preference( 'RESTBasicAuth', 0 ); - $t->get_ok("//$userid:$password@/api/v1/patrons") + $tx = $t->ua->build_tx( GET => "/api/v1/patrons" ); + $tx->req->headers->authorization("Basic $credentials"); + $t->request_ok($tx) ->status_is( 401, 'Basic authentication is disabled' ) ->json_is( '/error' => 'Basic authentication disabled', 'Expected error message rendered' ); -- 2.39.5