From 8a36380079049f362814c17611209589a8f08537 Mon Sep 17 00:00:00 2001 From: Tomas Cohen Arazi Date: Wed, 17 Nov 2021 13:07:07 -0300 Subject: [PATCH] Bug 29503: Regression tests Signed-off-by: Tomas Cohen Arazi Signed-off-by: Martin Renvoize --- t/db_dependent/api/v1/patrons.t | 53 ++++++++++++++++++++++++++++++++- 1 file changed, 52 insertions(+), 1 deletion(-) diff --git a/t/db_dependent/api/v1/patrons.t b/t/db_dependent/api/v1/patrons.t index c3726f54bb..1201629ffd 100755 --- a/t/db_dependent/api/v1/patrons.t +++ b/t/db_dependent/api/v1/patrons.t @@ -43,7 +43,8 @@ my $t = Test::Mojo->new('Koha::REST::V1'); t::lib::Mocks::mock_preference( 'RESTBasicAuth', 1 ); subtest 'list() tests' => sub { - plan tests => 2; + + plan tests => 3; $schema->storage->txn_begin; unauthorized_access_tests('GET', undef, undef); @@ -140,6 +141,56 @@ subtest 'list() tests' => sub { $schema->storage->txn_rollback; }; + + subtest 'search_limited() tests' => sub { + + plan tests => 9; + + $schema->storage->txn_begin; + + my $library_1 = $builder->build_object({ class => 'Koha::Libraries' }); + my $library_2 = $builder->build_object({ class => 'Koha::Libraries' }); + + my $patron_1 = $builder->build_object({ class => 'Koha::Patrons', value => { branchcode => $library_1->id } }); + my $patron_2 = $builder->build_object({ class => 'Koha::Patrons', value => { branchcode => $library_1->id } }); + my $patron_3 = $builder->build_object({ class => 'Koha::Patrons', value => { branchcode => $library_2->id } }); + + my @libraries_where_can_see_patrons = ($library_1->id, $library_2->id); + + my $mocked_patron = Test::MockModule->new('Koha::Patron'); + $mocked_patron->mock( 'libraries_where_can_see_patrons', sub + { + return @libraries_where_can_see_patrons; + } + ); + + my $librarian = $builder->build_object( + { + class => 'Koha::Patrons', + value => { flags => 2**4 } # borrowers flag = 4 + } + ); + my $password = 'thePassword123'; + $librarian->set_password( { password => $password, skip_validation => 1 } ); + my $userid = $librarian->userid; + + $t->get_ok("//$userid:$password@/api/v1/patrons?_order_by=patron_id&q=" . encode_json({ library_id => [ $library_1->id, $library_2->id ] })) + ->status_is(200) + ->json_is( '/0/patron_id' => $patron_1->id ) + ->json_is( '/1/patron_id' => $patron_2->id ) + ->json_is( '/2/patron_id' => $patron_3->id ); + + @libraries_where_can_see_patrons = ($library_2->id); + + my $res = $t->get_ok("//$userid:$password@/api/v1/patrons?_order_by=patron_id&q=" . encode_json({ library_id => [ $library_1->id, $library_2->id ] })) + ->status_is(200) + ->json_is( '/0/patron_id' => $patron_3->id, 'Returns the only allowed patron' ) + ->tx->res->json; + + is( scalar @{$res}, 1, 'Only one patron returned' ); + + $schema->storage->txn_rollback; + }; }; subtest 'get() tests' => sub { -- 2.20.1