Merge remote-tracking branch 'origin/new/bug_8209'
[koha.git] / C4 / SIP / t / 04patron_status.t
1 #!/usr/bin/perl
2 # patron_status: test Patron Status Response
3
4 use strict;
5 use warnings;
6 use Clone qw(clone);
7
8 use Sip::Constants qw(:all);
9 use SIPtest qw(:user1 :basic);
10
11 my $patron_status_test_template = {
12     id => 'Patron Status: valid patron, no patron password',
13     msg => "2300120060101    084237AO$instid|AA$user_barcode|AC$password|",
14     pat => qr/^24[ Y]{14}001$datepat/,
15     fields => [
16                $SIPtest::field_specs{(FID_INST_ID)},
17                $SIPtest::field_specs{(FID_SCREEN_MSG)},
18                $SIPtest::field_specs{(FID_PRINT_LINE)},
19                { field    => FID_PATRON_ID,
20                  pat      => qr/^23529001000463$/,
21                  required => 1, },
22                { field    => FID_PERSONAL_NAME,
23                  pat      => qr/^Edna Acosta$/,
24                  required => 1, },
25                { field    => FID_VALID_PATRON,
26                  pat      => qr/^Y$/,
27                  # Not required by the spec, but by the test
28                  required => 1, },
29                $SIPtest::field_specs{(FID_CURRENCY)},
30                { field    => FID_FEE_AMT,
31                  pat      => $textpat,
32                  required => 0, },
33                ], };
34
35 my @tests = (
36              $SIPtest::login_test,
37              $SIPtest::sc_status_test,
38              clone($patron_status_test_template),
39              );
40
41 # Invalid patron
42 my $test = clone($patron_status_test_template);
43
44 $test->{id} = 'Patron Status: invalid id';
45 $test->{msg} =~ s/AA$user_barcode\|/AAbad_userid|/;
46
47 # The test assumes that the language sent by the terminal is
48 # just echoed back for invalid patrons.
49 $test->{pat} = qr/^24Y[ Y]{13}001$datepat/; 
50
51 delete $test->{fields};
52 $test->{fields} = [
53                    $SIPtest::field_specs{(FID_INST_ID)},
54                    $SIPtest::field_specs{(FID_SCREEN_MSG)},
55                    $SIPtest::field_specs{(FID_PRINT_LINE)},
56                    { field    => FID_PATRON_ID,
57                      pat      => qr/^bad_userid$/,
58                      required => 1, },
59                    { field    => FID_PERSONAL_NAME,
60                      pat      => qr/^$/,
61                      required => 1, },
62                    { field    => FID_VALID_PATRON,
63                      pat      => qr/^N$/,
64                      required => 1, },
65                    ];
66
67 push @tests, $test;
68
69 # Valid patron, invalid patron password
70 $test = clone($patron_status_test_template);
71 $test->{id} = 'Patron Status: Valid patron, invalid patron password';
72 $test->{msg} .= (FID_PATRON_PWD) . 'badpwd|';
73 delete $test->{fields};
74 $test->{fields} = [
75                  $SIPtest::field_specs{(FID_INST_ID)},
76                  $SIPtest::field_specs{(FID_SCREEN_MSG)},
77                  $SIPtest::field_specs{(FID_PRINT_LINE)},
78                  { field    => FID_PATRON_ID,
79                    pat      => qr/^23529001000463$/,
80                    required => 1, },
81                  { field    => FID_PERSONAL_NAME,
82                    pat      => qr/^Edna Acosta$/,
83                    required => 1, },
84                  { field    => FID_VALID_PATRON,
85                    pat      => qr/^Y$/,
86                    required => 1, },
87                  { field    => FID_VALID_PATRON_PWD,
88                    pat      => qr/^N$/,
89                    required => 1, },
90                  ];
91 push @tests, $test;
92
93 # TODO: Need multiple patrons to test each individual 
94 # status field
95
96 SIPtest::run_sip_tests(@tests);
97
98 1;