Jonathan Druart
f1f9c6dc74
.pm must not have -x .t must have -x .pl must have -x Test plan: Apply only the first patch, run the tests and confirm that the failures make sense Apply this patch and confirm that the test now returns green Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl> Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
146 lines
4.5 KiB
Perl
Executable file
146 lines
4.5 KiB
Perl
Executable file
#!/usr/bin/perl
|
|
# patron_enable: test Patron Enable Response
|
|
|
|
use strict;
|
|
use warnings;
|
|
use FindBin qw($Bin);
|
|
use lib "$Bin";
|
|
use Clone qw(clone);
|
|
|
|
use C4::SIP::Sip::Constants qw(:all);
|
|
|
|
use SIPtest qw(:basic :user1);
|
|
|
|
my $patron_enable_test_template = {
|
|
id => 'Patron Enable: valid patron',
|
|
msg => "2520060102 084238AOUWOLS|AA$user_barcode|",
|
|
pat => qr/^26 {4}[ Y]{10}000$datepat/,
|
|
fields => [
|
|
$SIPtest::field_specs{(FID_INST_ID)},
|
|
$SIPtest::field_specs{(FID_SCREEN_MSG)},
|
|
$SIPtest::field_specs{(FID_PRINT_LINE)},
|
|
{ field => FID_PATRON_ID,
|
|
pat => qr/^$user_barcode$/,
|
|
required => 1, },
|
|
{ field => FID_PERSONAL_NAME,
|
|
pat => qr/^$user_fullname$/,
|
|
required => 1, },
|
|
{ field => FID_VALID_PATRON,
|
|
pat => qr/^Y$/,
|
|
# Not required by the spec, but by the test
|
|
required => 1, },
|
|
], };
|
|
|
|
# We need to disable the valid patron before we can
|
|
# ensure that they were properly enabled.
|
|
my $patron_disable_test_template = {
|
|
id => 'Patron Enable: block patron (prep to test enabling)',
|
|
msg => "01N20060102 084238AO$instid|ALBlocked patron for SIP test.|AA$user_barcode|",
|
|
# response to block patron is a patron status message
|
|
pat => qr/^24Y{4}[ Y]{10}000$datepat/,
|
|
fields => [
|
|
$SIPtest::field_specs{(FID_INST_ID)},
|
|
{ field => FID_PATRON_ID,
|
|
pat => qr/^$user_barcode$/,
|
|
required => 1, },
|
|
{ field => FID_PERSONAL_NAME,
|
|
pat => qr/^$user_fullname$/,
|
|
required => 1, },
|
|
{ field => FID_VALID_PATRON,
|
|
pat => qr/^Y$/,
|
|
# Not required by the spec, but by the test
|
|
required => 1, },
|
|
], };
|
|
|
|
my @tests = (
|
|
$SIPtest::login_test,
|
|
$SIPtest::sc_status_test,
|
|
$patron_disable_test_template,
|
|
clone($patron_enable_test_template),
|
|
);
|
|
|
|
my $test;
|
|
|
|
# Valid patron, valid password
|
|
$test = clone($patron_enable_test_template);
|
|
$test->{id} = "Patron Enable: valid patron, valid password";
|
|
$test->{msg} .= FID_PATRON_PWD . "$user_pin|";
|
|
$test->{pat} = qr/^26 {4}[ Y]{10}000$datepat/;
|
|
delete $test->{fields};
|
|
$test->{fields} = [
|
|
$SIPtest::field_specs{(FID_INST_ID)},
|
|
$SIPtest::field_specs{(FID_SCREEN_MSG)},
|
|
$SIPtest::field_specs{(FID_PRINT_LINE)},
|
|
{ field => FID_PATRON_ID,
|
|
pat => qr/^$user_barcode$/,
|
|
required => 1, },
|
|
{ field => FID_PERSONAL_NAME,
|
|
pat => qr/^$user_fullname$/,
|
|
required => 1, },
|
|
{ field => FID_VALID_PATRON,
|
|
pat => qr/^Y$/,
|
|
# Not required by the spec, but by the test
|
|
required => 1, },
|
|
{ field => FID_VALID_PATRON_PWD,
|
|
pat => qr/^Y$/,
|
|
required => 1, },
|
|
];
|
|
|
|
push @tests, $patron_disable_test_template, $test;
|
|
|
|
# Valid patron, invalid password
|
|
$test = clone($patron_enable_test_template);
|
|
$test->{id} = "Patron Enable: valid patron, invalid password";
|
|
$test->{msg} .= FID_PATRON_PWD . 'bad password|';
|
|
$test->{pat} = qr/^26[ Y]{14}000$datepat/;
|
|
delete $test->{fields};
|
|
$test->{fields} = [
|
|
$SIPtest::field_specs{(FID_INST_ID)},
|
|
$SIPtest::field_specs{(FID_SCREEN_MSG)},
|
|
$SIPtest::field_specs{(FID_PRINT_LINE)},
|
|
{ field => FID_PATRON_ID,
|
|
pat => qr/^$user_barcode$/,
|
|
required => 1, },
|
|
{ field => FID_PERSONAL_NAME,
|
|
pat => qr/^$user_fullname$/,
|
|
required => 1, },
|
|
{ field => FID_VALID_PATRON,
|
|
pat => qr/^Y$/,
|
|
# Not required by the spec, but by the test
|
|
required => 1, },
|
|
{ field => FID_VALID_PATRON_PWD,
|
|
pat => qr/^N$/,
|
|
required => 1, },
|
|
];
|
|
|
|
push @tests, $patron_disable_test_template, $test;
|
|
# After this test, the patron is left disabled, so re-enable
|
|
push @tests, $patron_enable_test_template;
|
|
|
|
# Invalid patron
|
|
$test = clone($patron_enable_test_template);
|
|
$test->{id} =~ s/valid/invalid/;
|
|
$test->{msg} =~ s/AA$user_barcode\|/AAbad_barcode|/;
|
|
$test->{pat} = qr/^26Y{4}[ Y]{10}000$datepat/;
|
|
delete $test->{fields};
|
|
$test->{fields} = [
|
|
$SIPtest::field_specs{(FID_INST_ID)},
|
|
$SIPtest::field_specs{(FID_SCREEN_MSG)},
|
|
$SIPtest::field_specs{(FID_PRINT_LINE)},
|
|
{ field => FID_PATRON_ID,
|
|
pat => qr/^bad_barcode$/,
|
|
required => 1, },
|
|
{ field => FID_PERSONAL_NAME,
|
|
pat => qr/^$/,
|
|
required => 1, },
|
|
{ field => FID_VALID_PATRON,
|
|
pat => qr/^N$/,
|
|
# Not required by the spec, but by the test
|
|
required => 1, },
|
|
];
|
|
|
|
push @tests, $test;
|
|
|
|
SIPtest::run_sip_tests(@tests);
|
|
|
|
1;
|