Lines 1284-1290
subtest 'search_patrons_to_anonymise' => sub {
Link Here
|
1284 |
t::lib::Mocks::mock_preference('IndependentBranches', 0); |
1284 |
t::lib::Mocks::mock_preference('IndependentBranches', 0); |
1285 |
}; |
1285 |
}; |
1286 |
|
1286 |
|
1287 |
subtest 'libraries_where_can_see_patrons + libraries_where_can_see_things + can_see_patron_infos + search_limited' => sub { |
1287 |
subtest 'libraries_where_can_see_patrons + libraries_where_can_see_things + can_see_patron_infos + search_limited' => |
|
|
1288 |
sub { |
1288 |
plan tests => 4; |
1289 |
plan tests => 4; |
1289 |
|
1290 |
|
1290 |
# group1 |
1291 |
# group1 |
Lines 1293-1330
subtest 'libraries_where_can_see_patrons + libraries_where_can_see_things + can_
Link Here
|
1293 |
# group2 |
1294 |
# group2 |
1294 |
# + library21 |
1295 |
# + library21 |
1295 |
$nb_of_patrons = Koha::Patrons->search->count; |
1296 |
$nb_of_patrons = Koha::Patrons->search->count; |
1296 |
my $group_1 = Koha::Library::Group->new( { title => 'TEST Group 1', ft_hide_patron_info => 1 } )->store; |
1297 |
my $group_1 = Koha::Library::Group->new( { title => 'TEST Group 1', ft_hide_patron_info => 1 } )->store; |
1297 |
my $group_2 = Koha::Library::Group->new( { title => 'TEST Group 2', ft_hide_patron_info => 1 } )->store; |
1298 |
my $group_2 = Koha::Library::Group->new( { title => 'TEST Group 2', ft_hide_patron_info => 1 } )->store; |
1298 |
my $library_11 = $builder->build( { source => 'Branch' } ); |
1299 |
my $library_11 = $builder->build( { source => 'Branch' } ); |
1299 |
my $library_12 = $builder->build( { source => 'Branch' } ); |
1300 |
my $library_12 = $builder->build( { source => 'Branch' } ); |
1300 |
my $library_21 = $builder->build( { source => 'Branch' } ); |
1301 |
my $library_21 = $builder->build( { source => 'Branch' } ); |
1301 |
$library_11 = Koha::Libraries->find( $library_11->{branchcode} ); |
1302 |
$library_11 = Koha::Libraries->find( $library_11->{branchcode} ); |
1302 |
$library_12 = Koha::Libraries->find( $library_12->{branchcode} ); |
1303 |
$library_12 = Koha::Libraries->find( $library_12->{branchcode} ); |
1303 |
$library_21 = Koha::Libraries->find( $library_21->{branchcode} ); |
1304 |
$library_21 = Koha::Libraries->find( $library_21->{branchcode} ); |
1304 |
Koha::Library::Group->new( |
1305 |
Koha::Library::Group->new( { branchcode => $library_11->branchcode, parent_id => $group_1->id } )->store; |
1305 |
{ branchcode => $library_11->branchcode, parent_id => $group_1->id } )->store; |
1306 |
Koha::Library::Group->new( { branchcode => $library_12->branchcode, parent_id => $group_1->id } )->store; |
1306 |
Koha::Library::Group->new( |
1307 |
Koha::Library::Group->new( { branchcode => $library_21->branchcode, parent_id => $group_2->id } )->store; |
1307 |
{ branchcode => $library_12->branchcode, parent_id => $group_1->id } )->store; |
1308 |
|
1308 |
Koha::Library::Group->new( |
1309 |
my $sth = |
1309 |
{ branchcode => $library_21->branchcode, parent_id => $group_2->id } )->store; |
1310 |
C4::Context->dbh->prepare(q|INSERT INTO user_permissions( borrowernumber, module_bit, code ) VALUES (?, 4, ?)|) |
1310 |
|
1311 |
; # 4 for borrowers |
1311 |
my $sth = C4::Context->dbh->prepare(q|INSERT INTO user_permissions( borrowernumber, module_bit, code ) VALUES (?, 4, ?)|); # 4 for borrowers |
1312 |
# 2 patrons from library_11 (group1) |
1312 |
# 2 patrons from library_11 (group1) |
1313 |
# patron_11_1 see patron's infos from outside its group |
1313 |
# patron_11_1 see patron's infos from outside its group |
1314 |
# Setting flags => undef to not be considered as superlibrarian |
1314 |
# Setting flags => undef to not be considered as superlibrarian |
1315 |
my $patron_11_1 = $builder->build( |
1315 |
my $patron_11_1 = $builder->build({ source => 'Borrower', value => { branchcode => $library_11->branchcode, flags => undef, }}); |
1316 |
{ source => 'Borrower', value => { branchcode => $library_11->branchcode, flags => undef, } } ); |
1316 |
$patron_11_1 = Koha::Patrons->find( $patron_11_1->{borrowernumber} ); |
1317 |
$patron_11_1 = Koha::Patrons->find( $patron_11_1->{borrowernumber} ); |
1317 |
$sth->execute( $patron_11_1->borrowernumber, 'edit_borrowers' ); |
1318 |
$sth->execute( $patron_11_1->borrowernumber, 'edit_borrowers' ); |
1318 |
$sth->execute( $patron_11_1->borrowernumber, 'view_borrower_infos_from_any_libraries' ); |
1319 |
$sth->execute( $patron_11_1->borrowernumber, 'view_borrower_infos_from_any_libraries' ); |
|
|
1320 |
|
1319 |
# patron_11_2 can only see patron's info from its group |
1321 |
# patron_11_2 can only see patron's info from its group |
1320 |
my $patron_11_2 = $builder->build({ source => 'Borrower', value => { branchcode => $library_11->branchcode, flags => undef, }}); |
1322 |
my $patron_11_2 = $builder->build( |
|
|
1323 |
{ source => 'Borrower', value => { branchcode => $library_11->branchcode, flags => undef, } } ); |
1321 |
$patron_11_2 = Koha::Patrons->find( $patron_11_2->{borrowernumber} ); |
1324 |
$patron_11_2 = Koha::Patrons->find( $patron_11_2->{borrowernumber} ); |
1322 |
$sth->execute( $patron_11_2->borrowernumber, 'edit_borrowers' ); |
1325 |
$sth->execute( $patron_11_2->borrowernumber, 'edit_borrowers' ); |
|
|
1326 |
|
1323 |
# 1 patron from library_12 (group1) |
1327 |
# 1 patron from library_12 (group1) |
1324 |
my $patron_12 = $builder->build({ source => 'Borrower', value => { branchcode => $library_12->branchcode, flags => undef, }}); |
1328 |
my $patron_12 = $builder->build( |
|
|
1329 |
{ source => 'Borrower', value => { branchcode => $library_12->branchcode, flags => undef, } } ); |
1325 |
$patron_12 = Koha::Patrons->find( $patron_12->{borrowernumber} ); |
1330 |
$patron_12 = Koha::Patrons->find( $patron_12->{borrowernumber} ); |
|
|
1331 |
|
1326 |
# 1 patron from library_21 (group2) can only see patron's info from its group |
1332 |
# 1 patron from library_21 (group2) can only see patron's info from its group |
1327 |
my $patron_21 = $builder->build({ source => 'Borrower', value => { branchcode => $library_21->branchcode, flags => undef, }}); |
1333 |
my $patron_21 = $builder->build( |
|
|
1334 |
{ source => 'Borrower', value => { branchcode => $library_21->branchcode, flags => undef, } } ); |
1328 |
$patron_21 = Koha::Patrons->find( $patron_21->{borrowernumber} ); |
1335 |
$patron_21 = Koha::Patrons->find( $patron_21->{borrowernumber} ); |
1329 |
$sth->execute( $patron_21->borrowernumber, 'edit_borrowers' ); |
1336 |
$sth->execute( $patron_21->borrowernumber, 'edit_borrowers' ); |
1330 |
|
1337 |
|
Lines 1354-1410
subtest 'libraries_where_can_see_patrons + libraries_where_can_see_things + can_
Link Here
|
1354 |
|
1361 |
|
1355 |
my @branchcodes; |
1362 |
my @branchcodes; |
1356 |
|
1363 |
|
1357 |
t::lib::Mocks::mock_userenv({ patron => $patron_11_1 }); |
1364 |
t::lib::Mocks::mock_userenv( { patron => $patron_11_1 } ); |
1358 |
@branchcodes = $patron_11_1->libraries_where_can_see_patrons; |
1365 |
@branchcodes = $patron_11_1->libraries_where_can_see_patrons; |
1359 |
is_deeply( \@branchcodes, [], q|patron_11_1 has view_borrower_infos_from_any_libraries => No restriction| ); |
1366 |
is_deeply( \@branchcodes, [], q|patron_11_1 has view_borrower_infos_from_any_libraries => No restriction| ); |
1360 |
|
1367 |
|
1361 |
t::lib::Mocks::mock_userenv({ patron => $patron_11_2 }); |
1368 |
t::lib::Mocks::mock_userenv( { patron => $patron_11_2 } ); |
1362 |
@branchcodes = $patron_11_2->libraries_where_can_see_patrons; |
1369 |
@branchcodes = $patron_11_2->libraries_where_can_see_patrons; |
1363 |
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| ); |
1370 |
is_deeply( |
|
|
1371 |
\@branchcodes, [ sort ( $library_11->branchcode, $library_12->branchcode ) ], |
1372 |
q|patron_11_2 has not view_borrower_infos_from_any_libraries => Can only see patron's from its group| |
1373 |
); |
1364 |
|
1374 |
|
1365 |
t::lib::Mocks::mock_userenv({ patron => $patron_21 }); |
1375 |
t::lib::Mocks::mock_userenv( { patron => $patron_21 } ); |
1366 |
@branchcodes = $patron_21->libraries_where_can_see_patrons; |
1376 |
@branchcodes = $patron_21->libraries_where_can_see_patrons; |
1367 |
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| ); |
1377 |
is_deeply( |
|
|
1378 |
\@branchcodes, [ $library_21->branchcode ], |
1379 |
q|patron_21 has not view_borrower_infos_from_any_libraries => Can only see patron's from its group| |
1380 |
); |
1368 |
}; |
1381 |
}; |
1369 |
subtest 'can_see_patron_infos' => sub { |
1382 |
subtest 'can_see_patron_infos' => sub { |
1370 |
plan tests => 6; |
1383 |
plan tests => 6; |
1371 |
|
1384 |
|
1372 |
t::lib::Mocks::mock_userenv({ patron => $patron_11_1 }); |
1385 |
t::lib::Mocks::mock_userenv( { patron => $patron_11_1 } ); |
1373 |
$patron_11_1 = Koha::Patrons->find( $patron_11_1->borrowernumber ); |
1386 |
$patron_11_1 = Koha::Patrons->find( $patron_11_1->borrowernumber ); |
1374 |
is( $patron_11_1->can_see_patron_infos( $patron_11_2 ), 1, q|patron_11_1 can see patron_11_2, from its library| ); |
1387 |
is( $patron_11_1->can_see_patron_infos($patron_11_2), 1, q|patron_11_1 can see patron_11_2, from its library| ); |
1375 |
is( $patron_11_1->can_see_patron_infos( $patron_12 ), 1, q|patron_11_1 can see patron_12, from its group| ); |
1388 |
is( $patron_11_1->can_see_patron_infos($patron_12), 1, q|patron_11_1 can see patron_12, from its group| ); |
1376 |
is( $patron_11_1->can_see_patron_infos( $patron_21 ), 1, q|patron_11_1 can see patron_11_2, from another group| ); |
1389 |
is( $patron_11_1->can_see_patron_infos($patron_21), 1, q|patron_11_1 can see patron_11_2, from another group| ); |
1377 |
|
1390 |
|
1378 |
t::lib::Mocks::mock_userenv({ patron => $patron_11_2 }); |
1391 |
t::lib::Mocks::mock_userenv( { patron => $patron_11_2 } ); |
1379 |
$patron_11_2 = Koha::Patrons->find( $patron_11_2->borrowernumber ); |
1392 |
$patron_11_2 = Koha::Patrons->find( $patron_11_2->borrowernumber ); |
1380 |
is( $patron_11_2->can_see_patron_infos( $patron_11_1 ), 1, q|patron_11_2 can see patron_11_1, from its library| ); |
1393 |
is( $patron_11_2->can_see_patron_infos($patron_11_1), 1, q|patron_11_2 can see patron_11_1, from its library| ); |
1381 |
is( $patron_11_2->can_see_patron_infos( $patron_12 ), 1, q|patron_11_2 can see patron_12, from its group| ); |
1394 |
is( $patron_11_2->can_see_patron_infos($patron_12), 1, q|patron_11_2 can see patron_12, from its group| ); |
1382 |
is( $patron_11_2->can_see_patron_infos( $patron_21 ), 0, q|patron_11_2 can NOT see patron_21, from another group| ); |
1395 |
is( |
|
|
1396 |
$patron_11_2->can_see_patron_infos($patron_21), 0, |
1397 |
q|patron_11_2 can NOT see patron_21, from another group| |
1398 |
); |
1383 |
}; |
1399 |
}; |
1384 |
subtest 'search_limited' => sub { |
1400 |
subtest 'search_limited' => sub { |
1385 |
plan tests => 6; |
1401 |
plan tests => 6; |
1386 |
|
1402 |
|
1387 |
t::lib::Mocks::mock_userenv({ patron => $patron_11_1 }); |
1403 |
t::lib::Mocks::mock_userenv( { patron => $patron_11_1 } ); |
1388 |
$patron_11_1 = Koha::Patrons->find( $patron_11_1->borrowernumber ); |
1404 |
$patron_11_1 = Koha::Patrons->find( $patron_11_1->borrowernumber ); |
1389 |
my $total_number_of_patrons = $nb_of_patrons + 4; #we added four in these tests |
1405 |
my $total_number_of_patrons = $nb_of_patrons + 4; #we added four in these tests |
1390 |
is( Koha::Patrons->search->count, $total_number_of_patrons, 'Non-limited search should return all patrons' ); |
1406 |
is( Koha::Patrons->search->count, $total_number_of_patrons, 'Non-limited search should return all patrons' ); |
1391 |
is( Koha::Patrons->search_limited->count, $total_number_of_patrons, 'patron_11_1 is allowed to see all patrons' ); |
1407 |
is( |
|
|
1408 |
Koha::Patrons->search_limited->count, $total_number_of_patrons, |
1409 |
'patron_11_1 is allowed to see all patrons' |
1410 |
); |
1392 |
|
1411 |
|
1393 |
t::lib::Mocks::mock_userenv({ patron => $patron_11_2 }); |
1412 |
t::lib::Mocks::mock_userenv( { patron => $patron_11_2 } ); |
1394 |
$patron_11_2 = Koha::Patrons->find( $patron_11_2->borrowernumber ); |
1413 |
$patron_11_2 = Koha::Patrons->find( $patron_11_2->borrowernumber ); |
1395 |
is( Koha::Patrons->search->count, $total_number_of_patrons, 'Non-limited search should return all patrons'); |
1414 |
is( Koha::Patrons->search->count, $total_number_of_patrons, 'Non-limited search should return all patrons' ); |
1396 |
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' ); |
1415 |
is( |
|
|
1416 |
Koha::Patrons->search_limited->count, 3, |
1417 |
'patron_12_1 is not allowed to see patrons from other groups, only patron_11_1, patron_11_2 and patron_12' |
1418 |
); |
1397 |
|
1419 |
|
1398 |
t::lib::Mocks::mock_userenv({ patron => $patron_21 }); |
1420 |
t::lib::Mocks::mock_userenv( { patron => $patron_21 } ); |
1399 |
$patron_21 = Koha::Patrons->find( $patron_21->borrowernumber ); |
1421 |
$patron_21 = Koha::Patrons->find( $patron_21->borrowernumber ); |
1400 |
is( Koha::Patrons->search->count, $total_number_of_patrons, 'Non-limited search should return all patrons'); |
1422 |
is( Koha::Patrons->search->count, $total_number_of_patrons, 'Non-limited search should return all patrons' ); |
1401 |
is( Koha::Patrons->search_limited->count, 1, 'patron_21 is not allowed to see patrons from other groups, only himself' ); |
1423 |
is( |
|
|
1424 |
Koha::Patrons->search_limited->count, 1, |
1425 |
'patron_21 is not allowed to see patrons from other groups, only himself' |
1426 |
); |
1402 |
}; |
1427 |
}; |
1403 |
$patron_11_1->delete; |
1428 |
$patron_11_1->delete; |
1404 |
$patron_11_2->delete; |
1429 |
$patron_11_2->delete; |
1405 |
$patron_12->delete; |
1430 |
$patron_12->delete; |
1406 |
$patron_21->delete; |
1431 |
$patron_21->delete; |
1407 |
}; |
1432 |
}; |
1408 |
|
1433 |
|
1409 |
subtest 'account_locked' => sub { |
1434 |
subtest 'account_locked' => sub { |
1410 |
plan tests => 13; |
1435 |
plan tests => 13; |
1411 |
- |
|
|