Lines 19-25
Link Here
|
19 |
|
19 |
|
20 |
use Modern::Perl; |
20 |
use Modern::Perl; |
21 |
|
21 |
|
22 |
use Test::More tests => 21; |
22 |
use Test::More tests => 22; |
23 |
use Test::Warn; |
23 |
use Test::Warn; |
24 |
use DateTime; |
24 |
use DateTime; |
25 |
|
25 |
|
Lines 52-57
my $new_patron_1 = Koha::Patron->new(
Link Here
|
52 |
surname => 'surname for patron1', |
52 |
surname => 'surname for patron1', |
53 |
firstname => 'firstname for patron1', |
53 |
firstname => 'firstname for patron1', |
54 |
userid => 'a_nonexistent_userid_1', |
54 |
userid => 'a_nonexistent_userid_1', |
|
|
55 |
flags => 1, # Is superlibrarian |
55 |
} |
56 |
} |
56 |
)->store; |
57 |
)->store; |
57 |
my $new_patron_2 = Koha::Patron->new( |
58 |
my $new_patron_2 = Koha::Patron->new( |
Lines 65-71
my $new_patron_2 = Koha::Patron->new(
Link Here
|
65 |
)->store; |
66 |
)->store; |
66 |
|
67 |
|
67 |
C4::Context->_new_userenv('xxx'); |
68 |
C4::Context->_new_userenv('xxx'); |
68 |
C4::Context->set_userenv(0,0,0,'firstname','surname', $library->{branchcode}, 'Midway Public Library', '', '', ''); |
69 |
set_logged_in_user( $new_patron_1 ); |
69 |
|
70 |
|
70 |
is( Koha::Patrons->search->count, $nb_of_patrons + 2, 'The 2 patrons should have been added' ); |
71 |
is( Koha::Patrons->search->count, $nb_of_patrons + 2, 'The 2 patrons should have been added' ); |
71 |
|
72 |
|
Lines 879-884
subtest 'search_patrons_to_anonymise & anonymise_issue_history' => sub {
Link Here
|
879 |
|
880 |
|
880 |
Koha::Patrons->find( $anonymous->{borrowernumber})->delete; |
881 |
Koha::Patrons->find( $anonymous->{borrowernumber})->delete; |
881 |
Koha::Patrons->find( $userenv_patron->{borrowernumber})->delete; |
882 |
Koha::Patrons->find( $userenv_patron->{borrowernumber})->delete; |
|
|
883 |
|
884 |
# Reset IndependentBranches for further tests |
885 |
t::lib::Mocks::mock_preference('IndependentBranches', 0); |
886 |
}; |
887 |
|
888 |
subtest 'libraries_where_can_see_patrons + can_see_patron_infos + search_limited' => sub { |
889 |
plan tests => 3; |
890 |
|
891 |
# group1 |
892 |
# + library_11 |
893 |
# + library_12 |
894 |
# group2 |
895 |
# + library21 |
896 |
my $group_1 = Koha::Library::Group->new( { title => 'TEST Group 1' } )->store; |
897 |
my $group_2 = Koha::Library::Group->new( { title => 'TEST Group 2' } )->store; |
898 |
my $library_11 = $builder->build( { source => 'Branch' } ); |
899 |
my $library_12 = $builder->build( { source => 'Branch' } ); |
900 |
my $library_21 = $builder->build( { source => 'Branch' } ); |
901 |
$library_11 = Koha::Libraries->find( $library_11->{branchcode} ); |
902 |
$library_12 = Koha::Libraries->find( $library_12->{branchcode} ); |
903 |
$library_21 = Koha::Libraries->find( $library_21->{branchcode} ); |
904 |
Koha::Library::Group->new( |
905 |
{ branchcode => $library_11->branchcode, parent_id => $group_1->id } )->store; |
906 |
Koha::Library::Group->new( |
907 |
{ branchcode => $library_12->branchcode, parent_id => $group_1->id } )->store; |
908 |
Koha::Library::Group->new( |
909 |
{ branchcode => $library_21->branchcode, parent_id => $group_2->id } )->store; |
910 |
|
911 |
my $sth = C4::Context->dbh->prepare(q|INSERT INTO user_permissions( borrowernumber, module_bit, code ) VALUES (?, 4, ?)|); # 4 for borrowers |
912 |
# 2 patrons from library_11 (group1) |
913 |
# patron_11_1 see patron's infos from outside its group |
914 |
# Setting flags => undef to not be considered as superlibrarian |
915 |
my $patron_11_1 = $builder->build({ source => 'Borrower', value => { branchcode => $library_11->branchcode, flags => undef, }}); |
916 |
$patron_11_1 = Koha::Patrons->find( $patron_11_1->{borrowernumber} ); |
917 |
$sth->execute( $patron_11_1->borrowernumber, 'edit_borrowers' ); |
918 |
$sth->execute( $patron_11_1->borrowernumber, 'view_borrower_infos_from_any_libraries' ); |
919 |
# patron_11_2 can only see patron's info from its group |
920 |
my $patron_11_2 = $builder->build({ source => 'Borrower', value => { branchcode => $library_11->branchcode, flags => undef, }}); |
921 |
$patron_11_2 = Koha::Patrons->find( $patron_11_2->{borrowernumber} ); |
922 |
$sth->execute( $patron_11_2->borrowernumber, 'edit_borrowers' ); |
923 |
# 1 patron from library_12 (group1) |
924 |
my $patron_12 = $builder->build({ source => 'Borrower', value => { branchcode => $library_12->branchcode, flags => undef, }}); |
925 |
$patron_12 = Koha::Patrons->find( $patron_12->{borrowernumber} ); |
926 |
# 1 patron from library_21 (group2) can only see patron's info from its group |
927 |
my $patron_21 = $builder->build({ source => 'Borrower', value => { branchcode => $library_21->branchcode, flags => undef, }}); |
928 |
$patron_21 = Koha::Patrons->find( $patron_21->{borrowernumber} ); |
929 |
$sth->execute( $patron_21->borrowernumber, 'edit_borrowers' ); |
930 |
|
931 |
# Pfiou, we can start now! |
932 |
subtest 'libraries_where_can_see_patrons' => sub { |
933 |
plan tests => 3; |
934 |
|
935 |
my @branchcodes; |
936 |
|
937 |
set_logged_in_user( $patron_11_1 ); |
938 |
@branchcodes = $patron_11_1->libraries_where_can_see_patrons; |
939 |
is_deeply( \@branchcodes, [], q|patron_11_1 has view_borrower_infos_from_any_libraries => No restriction| ); |
940 |
|
941 |
set_logged_in_user( $patron_11_2 ); |
942 |
@branchcodes = $patron_11_2->libraries_where_can_see_patrons; |
943 |
is_deeply( \@branchcodes, [ sort ( $library_11->branchcode, $library_12->branchcode ) ], q|patron_11_2 has not view_borrower_infos_from_any_libraries => Can only see patron's from its group| ); |
944 |
|
945 |
set_logged_in_user( $patron_21 ); |
946 |
@branchcodes = $patron_21->libraries_where_can_see_patrons; |
947 |
is_deeply( \@branchcodes, [$library_21->branchcode], q|patron_21 has not view_borrower_infos_from_any_libraries => Can only see patron's from its group| ); |
948 |
}; |
949 |
subtest 'can_see_patron_infos' => sub { |
950 |
plan tests => 6; |
951 |
|
952 |
set_logged_in_user( $patron_11_1 ); |
953 |
is( $patron_11_1->can_see_patron_infos( $patron_11_2 ), 1, q|patron_11_1 can see patron_11_2, from its library| ); |
954 |
is( $patron_11_1->can_see_patron_infos( $patron_12 ), 1, q|patron_11_1 can see patron_12, from its group| ); |
955 |
is( $patron_11_1->can_see_patron_infos( $patron_21 ), 1, q|patron_11_1 can see patron_11_2, from another group| ); |
956 |
|
957 |
set_logged_in_user( $patron_11_2 ); |
958 |
is( $patron_11_2->can_see_patron_infos( $patron_11_1 ), 1, q|patron_11_2 can see patron_11_1, from its library| ); |
959 |
is( $patron_11_2->can_see_patron_infos( $patron_12 ), 1, q|patron_11_2 can see patron_12, from its group| ); |
960 |
is( $patron_11_2->can_see_patron_infos( $patron_21 ), 0, q|patron_11_2 can NOT see patron_21, from another group| ); |
961 |
}; |
962 |
subtest 'search_limited' => sub { |
963 |
plan tests => 6; |
964 |
|
965 |
set_logged_in_user( $patron_11_1 ); |
966 |
my $total_number_of_patrons = $nb_of_patrons + 6; # 2 created before + 4 for these subtests |
967 |
is( Koha::Patrons->search->count, $total_number_of_patrons, 'Non-limited search should return all patrons'); |
968 |
is( Koha::Patrons->search_limited->count, $total_number_of_patrons, 'patron_11_1 is allowed to see all patrons' ); |
969 |
|
970 |
set_logged_in_user( $patron_11_2 ); |
971 |
is( Koha::Patrons->search->count, $total_number_of_patrons, 'Non-limited search should return all patrons'); |
972 |
is( Koha::Patrons->search_limited->count, 3, 'patron_12_1 is not allowed to see patrons from other groups, only patron_11_1, patron_11_2 and patron_12' ); |
973 |
|
974 |
set_logged_in_user( $patron_21 ); |
975 |
is( Koha::Patrons->search->count, $total_number_of_patrons, 'Non-limited search should return all patrons'); |
976 |
is( Koha::Patrons->search_limited->count, 1, 'patron_21 is not allowed to see patrons from other groups, only himself' ); |
977 |
}; |
978 |
$patron_11_1->delete; |
979 |
$patron_11_2->delete; |
980 |
$patron_12->delete; |
981 |
$patron_21->delete; |
882 |
}; |
982 |
}; |
883 |
|
983 |
|
884 |
$retrieved_patron_1->delete; |
984 |
$retrieved_patron_1->delete; |
Lines 886-889
is( Koha::Patrons->search->count, $nb_of_patrons + 1, 'Delete should have delete
Link Here
|
886 |
|
986 |
|
887 |
$schema->storage->txn_rollback; |
987 |
$schema->storage->txn_rollback; |
888 |
|
988 |
|
|
|
989 |
# TODO Move to t::lib::Mocks and reuse it! |
990 |
sub set_logged_in_user { |
991 |
my ($patron) = @_; |
992 |
C4::Context->set_userenv( |
993 |
$patron->borrowernumber, $patron->userid, |
994 |
$patron->cardnumber, 'firstname', |
995 |
'surname', $patron->library->branchcode, |
996 |
'Midway Public Library', $patron->flags, |
997 |
'', '' |
998 |
); |
999 |
} |
1000 |
|
889 |
1; |
1001 |
1; |
890 |
- |
|
|