From d46debdff26d1bc0290149e0da3d1f8ae60cf9cb Mon Sep 17 00:00:00 2001 From: Tomas Cohen Arazi Date: Wed, 17 Nov 2021 16:35:33 -0300 Subject: [PATCH] Bug 29508: Regression tests Signed-off-by: Tomas Cohen Arazi Signed-off-by: Martin Renvoize Signed-off-by: Nick Clemens Signed-off-by: Fridolin Somers --- t/db_dependent/api/v1/patrons.t | 56 ++++++++++++++++++++++++++++++++- 1 file changed, 55 insertions(+), 1 deletion(-) diff --git a/t/db_dependent/api/v1/patrons.t b/t/db_dependent/api/v1/patrons.t index 7866042935..b7e65dc91c 100755 --- a/t/db_dependent/api/v1/patrons.t +++ b/t/db_dependent/api/v1/patrons.t @@ -195,7 +195,8 @@ subtest 'list() tests' => sub { }; subtest 'get() tests' => sub { - plan tests => 2; + + plan tests => 3; $schema->storage->txn_begin; unauthorized_access_tests('GET', -1, undef); @@ -227,6 +228,59 @@ subtest 'get() tests' => sub { $schema->storage->txn_rollback; }; + + subtest 'search_limited() tests' => sub { + + plan tests => 12; + + $schema->storage->txn_begin; + + my $library_1 = $builder->build_object({ class => 'Koha::Libraries' }); + my $library_2 = $builder->build_object({ class => 'Koha::Libraries' }); + my $library_3 = $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_2->id } }); + my $patron_3 = $builder->build_object({ class => 'Koha::Patrons', value => { branchcode => $library_3->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, branchcode => $library_3->id } # 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/" . $patron_1->id ) + ->status_is(200) + ->json_is( '/patron_id' => $patron_1->id ); + + $t->get_ok("//$userid:$password@/api/v1/patrons/" . $patron_2->id ) + ->status_is(200) + ->json_is( '/patron_id' => $patron_2->id ); + + @libraries_where_can_see_patrons = ($library_1->id); + + $t->get_ok("//$userid:$password@/api/v1/patrons/" . $patron_1->id ) + ->status_is(200) + ->json_is( '/patron_id' => $patron_1->id ); + + $t->get_ok("//$userid:$password@/api/v1/patrons/" . $patron_2->id ) + ->status_is(404) + ->json_is({ error => "Patron not found." }); + + $schema->storage->txn_rollback; + }; }; subtest 'add() tests' => sub {