use Sip::Constants qw(:all);
-use SIPtest qw($datepat $textpat);
+use SIPtest qw($datepat $textpat $instid $user_barcode $user_fullname $item_barcode $item_title $item_owner);
+
+warn "Holds not implemented (for Evergreen)";
+SIPtest::run_sip_tests();
+exit;
my $hold_test_template = {
id => 'Place Hold: valid item, valid patron',
- msg => '15+20060415 110158BW20060815 110158|BSTaylor|BY2|AOUWOLS|AAdjfiander|AB1565921879|',
+ msg => "15+20060415 110158BW20060815 110158|BSTaylor|BY2|AO$instid|AA$user_barcode|AB$item_barcode|",
pat => qr/^161N$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/^djfiander$/,
+ pat => qr/^$user_barcode$/,
required => 1, },
{ field => FID_EXPIRATION,
pat => $datepat,
pat => qr/^Taylor$/,
required => 1, },
{ field => FID_TITLE_ID,
- pat => qr/^Perl 5 desktop reference$/,
+ pat => qr/^$item_title$/,
required => 1, },
{ field => FID_ITEM_ID,
- pat => qr/^1565921879$/,
+ pat => qr/^$item_barcode$/,
required => 1, },
],};
my $hold_count_test_template0 = {
id => 'Confirm patron has 0 holds',
- msg => '6300020060329 201700 AOUWOLS|AAdjfiander|',
+ msg => "6300020060329 201700 AO$instid|AA$user_barcode|",
pat => qr/^64 [ Y]{13}\d{3}${datepat}0000(\d{4}){5}/,
fields => [],
};
my $hold_count_test_template1 = {
id => 'Confirm patron has 1 hold',
- msg => '6300020060329 201700 AOUWOLS|AAdjfiander|',
+ msg => "6300020060329 201700 AO$instid|AA$user_barcode|",
pat => qr/^64 [ Y]{13}\d{3}${datepat}0001(\d{4}){5}/,
fields => [],
};
# Hold Queue: second hold placed on item
$test = clone($hold_test_template);
$test->{id} = 'Place hold: second hold on item';
-$test->{msg} =~ s/djfiander/miker/;
+$test->{msg} =~ s/$user_barcode/miker/;
$test->{pat} = qr/^161N$datepat/;
foreach my $i (0 .. (scalar @{$test->{fields}})-1) {
my $field = $test->{fields}[$i];
$SIPtest::field_specs{(FID_SCREEN_MSG)},
$SIPtest::field_specs{(FID_PRINT_LINE)},
{ field => FID_PATRON_ID,
- pat => qr/^djfiander$/,
+ pat => qr/^$user_barcode$/,
required => 1, },
];
$test = clone($hold_test_template);
$test->{id} = "Cancel hold: cleanup second patron's hold";
$test->{msg} =~ s/\+/-/;
-$test->{msg} =~ s/djfiander/miker/;
+$test->{msg} =~ s/$user_barcode/miker/;
$test->{pat} = qr/^161[NY]$datepat/;
delete $test->{fields};
$test->{fields} = [
$SIPtest::field_specs{(FID_SCREEN_MSG)},
$SIPtest::field_specs{(FID_PRINT_LINE)},
{ field => FID_PATRON_ID,
- pat => qr/^djfiander$/,
+ pat => qr/^$user_barcode$/,
required => 1, },
];
# Place hold: invalid patron
$test = clone($hold_test_template);
$test->{id} = 'Place hold: invalid patron';
-$test->{msg} =~ s/AAdjfiander\|/AAberick|/;
+$test->{msg} =~ s/AA$user_barcode\|/AAno_such_user|/;
$test->{pat} = qr/^160N$datepat/;
delete $test->{fields};
$test->{fields} = [
$SIPtest::field_specs{(FID_SCREEN_MSG)},
$SIPtest::field_specs{(FID_PRINT_LINE)},
{ field => FID_PATRON_ID,
- pat => qr/^berick$/,
+ pat => qr/^no_such_user$/,
required => 1, },
];
# Place hold: invalid item
$test = clone($hold_test_template);
$test->{id} = 'Place hold: invalid item';
-$test->{msg} =~ s/AB1565921879\|/ABnosuchitem|/;
+$test->{msg} =~ s/AB$item_barcode\|/ABnosuchitem|/;
$test->{pat} = qr/^160N$datepat/;
delete $test->{fields};
$test->{fields} = [
$SIPtest::field_specs{(FID_SCREEN_MSG)},
$SIPtest::field_specs{(FID_PRINT_LINE)},
{ field => FID_PATRON_ID,
- pat => qr/^djfiander$/,
+ pat => qr/^$user_barcode$/,
required => 1, },
{ field => FID_ITEM_ID,
pat => qr/^nosuchitem$/,
$item2_barcode $item2_title $item2_owner
$item_diacritic_barcode $item_diacritic_title
$item_diacritic_owner);
-#use Data::Dumper;
# The number of tests is set in run_sip_tests() below, based
# on the size of the array of tests.
#
# Configuration parameters to run the test suite
#
-our $instid = 'UWOLS';
-our $currency = 'CAD';
+our $instid = 'BR1';
+our $currency = 'USD';
our $server = 'localhost:6001'; # Address of the SIP server
# SIP username and password to connect to the server. See the
# SIP config.xml for the correct values.
-our $username = 'scclient';
-our $password = 'clientpwd';
+# our $username = 'scclient';
+# our $password = 'clientpwd';
+our $username = 'sip_01';
+our $password = 'sip_01';
# ILS Information
# Valid user barcode and corresponding user password/pin and full name
-our $user_barcode = 'djfiander';
-our $user_pin = '6789';
-our $user_fullname= 'David J\. Fiander';
-our $user_homeaddr= '2 Meadowvale Dr\. St Thomas, ON';
-our $user_email = 'djfiander\@hotmail\.com';
-our $user_phone = '\(519\) 555 1234';
-our $user_birthday= '19640925';
-our $user_ptype = 'A';
-our $user_inet = 'Y';
-our $user_homelib = 'Beacock';
+our $user_barcode = '999999'; # 'djfiander';
+our $user_pin = '6789';
+our $user_fullname = 'David J\. Fiander';
+our $user_homeaddr = '2 Meadowvale Dr\. St Thomas, ON Canada 90210';
+our $user_email = 'djfiander\@hotmail\.com';
+our $user_phone = '\(519\) 555 1234';
+our $user_birthday = '19640925';
+our $user_ptype = 'A';
+our $user_inet = 'Y';
+our $user_homelib = 'BR1';
# Valid item barcode and corresponding title
+# isbn: 9781565921870, 1565921879
+# OCoLC: 34373965
our $item_barcode = '1565921879';
our $item_title = 'Perl 5 desktop reference';
-our $item_owner = 'UWOLS';
+our $item_owner = 'BR1';
# Another valid item
+# isbn: 9780553088533
+# OCoLC: 25026617
our $item2_barcode = '0440242746';
-our $item2_title = 'The deep blue alibi';
-our $item2_owner = 'UWOLS';
+our $item2_title = 'Snow crash';
+our $item2_owner = 'BR1';
# An item with a diacritical in the title
+# isbn: 9788478886456, 9788478886456;
+# OCoLC: 48667449
our $item_diacritic_barcode = '660';
our $item_diacritic_title = decode_utf8('Harry Potter y el cáliz de fuego');
-our $item_diacritic_owner = 'UWOLS';
+our $item_diacritic_owner = 'BR1';
# End configuration
our $textpat = qr/^[^|]*$/;
our %field_specs = (
- (FID_SCREEN_MSG) => { field => FID_SCREEN_MSG,
- pat => $textpat,
- required => 0, },
- (FID_PRINT_LINE) => { field => FID_PRINT_LINE,
- pat => $textpat,
- required => 0, },
- (FID_INST_ID) => { field => FID_INST_ID,
- pat => qr/^$instid$/o,
- required => 1, },
- (FID_HOLD_ITEMS_LMT)=> { field => FID_HOLD_ITEMS_LMT,
- pat => qr/^\d{4}$/,
- required => 0, },
- (FID_OVERDUE_ITEMS_LMT)=> { field => FID_OVERDUE_ITEMS_LMT,
- pat => qr/^\d{4}$/,
- required => 0, },
- (FID_CHARGED_ITEMS_LMT)=> { field => FID_CHARGED_ITEMS_LMT,
- pat => qr/^\d{4}$/,
- required => 0, },
- (FID_VALID_PATRON) => { field => FID_VALID_PATRON,
- pat => qr/^[NY]$/,
- required => 0, },
- (FID_VALID_PATRON_PWD)=> { field => FID_VALID_PATRON_PWD,
- pat => qr/^[NY]$/,
- required => 0, },
- (FID_CURRENCY) => { field => FID_CURRENCY,
- pat => qr/^$currency$/io,
- required => 0, },
- );
+ (FID_SCREEN_MSG) => {
+ field => FID_SCREEN_MSG,
+ pat => $textpat,
+ required => 0,
+ },
+ (FID_PRINT_LINE) => {
+ field => FID_PRINT_LINE,
+ pat => $textpat,
+ required => 0,
+ },
+ (FID_INST_ID) => {
+ field => FID_INST_ID,
+ pat => qr/^$instid$/o,
+ required => 1,
+ },
+ (FID_HOLD_ITEMS_LMT) => {
+ field => FID_HOLD_ITEMS_LMT,
+ pat => qr/^\d{4}$/,
+ required => 0,
+ },
+ (FID_OVERDUE_ITEMS_LMT) => {
+ field => FID_OVERDUE_ITEMS_LMT,
+ pat => qr/^\d{4}$/,
+ required => 0,
+ },
+ (FID_CHARGED_ITEMS_LMT) => {
+ field => FID_CHARGED_ITEMS_LMT,
+ pat => qr/^\d{4}$/,
+ required => 0,
+ },
+ (FID_VALID_PATRON) => {
+ field => FID_VALID_PATRON,
+ pat => qr/^[NY]$/,
+ required => 0,
+ },
+ (FID_VALID_PATRON_PWD) => {
+ field => FID_VALID_PATRON_PWD,
+ pat => qr/^[NY]$/,
+ required => 0,
+ },
+ (FID_CURRENCY) => {
+ field => FID_CURRENCY,
+ pat => qr/^$currency$/io,
+ required => 0,
+ },
+);
# Login and SC Status are always the first two messages that
# the terminal sends to the server, so just create the test
# cases here and reference them in the individual test files.
our $login_test = { id => 'login',
- msg => "9300CN$username|CO$password|CPThe floor|",
+ msg => "9300CN$username|CO$password|CP$instid|",
pat => qr/^941/,
fields => [], };
};
our $debug = 1;
+our $error_detect = 0;
sub one_msg {
my ($sock, $test, $seqno) = @_;
chomp($resp);
$resp =~ tr/\cM//d;
$resp =~ s/\015?\012$//;
+ $resp =~ s/^\s*//sg;
chomp($resp);
- if (!verify_cksum($resp)) {
- fail("checksum $test->{id}");
+ if ($error_detect and !verify_cksum($resp)) {
+ fail("$test->{id} checksum($resp)");
return;
}
if ($resp !~ $test->{pat}) {
}
sub run_sip_tests {
- $Sip::error_detection = 1;
+ $Sip::error_detection = $error_detect;
$/ = "\r";
# $/ = "\015\012"; # must use correct record separator