@ -1,122 +1,115 @@
#!/usr/bin/perl
# This file is part of Koha.
#
# Koha is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# Koha is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Koha; if not, see <http://www.gnu.org/licenses>.
use Modern::Perl ;
use C4::Members qw/AddMember GetMember GetBorrowercategory/ ;
use Koha::Libraries ;
use CGI qw ( - utf8 ) ;
use Test::More tests = > 16 ;
use Test::More tests = > 3 ;
use t::lib::Mocks ;
use t::lib::TestBuilder ;
use Koha::AuthUtils ;
BEGIN {
use_ok ( 'C4::ILSDI::Services' ) ;
}
my $ dbh = C4::Context - > dbh ;
# Start transaction
$ dbh - > { AutoCommit } = 0 ;
$ dbh - > { RaiseError } = 1 ;
# Create patron
my % data = (
firstname = > 'my firstname' ,
surname = > 'my surname' ,
categorycode = > 'UT' ,
branchcode = > 'UT' ,
cardnumber = > 'ilsdi-cardnumber' ,
userid = > 'ilsdi-userid' ,
password = > 'ilsdi-password' ,
) ;
# Crate patron category
unless ( GetBorrowercategory ( 'UT' ) ) {
$ dbh - > do ( " INSERT INTO categories
( categorycode , description , enrolmentperiod , upperagelimit , enrolmentfee , overduenoticerequired , reservefee , category_type , default_privacy )
VALUES
( 'UT' , 'Unit tester' , 99 , 99 , 0.000000 , 1 , 0.000000 , 'C' , 'default' ) ; " ) ;
}
# Create library
unless ( Koha::Libraries - > find ( 'UT' ) ) {
$ dbh - > do ( "INSERT INTO branches (branchcode,branchname) VALUES ('UT','Unit test library');" ) ;
}
my $ schema = Koha::Database - > schema ;
my $ dbh = C4::Context - > dbh ;
my $ builder = t::lib::TestBuilder - > new ;
my $ borrowernumber = AddMember ( % data ) ;
my $ borrower = GetMember ( borrowernumber = > $ borrowernumber ) ;
subtest 'AuthenticatePatron test' = > sub {
{ # AuthenticatePatron test
plan tests = > 14 ;
my $ query = new CGI ;
$ query - > param ( 'username' , $ borrower - > { 'userid' } ) ;
$ query - > param ( 'password' , 'ilsdi-password' ) ;
my $ reply = C4::ILSDI::Services:: AuthenticatePatron ( $ query ) ;
is ( $ reply - > { 'id' } , $ borrowernumber , "userid and password - Patron authenticated" ) ;
is ( $ reply - > { 'code' } , undef , "Error code undef" ) ;
$ schema - > storage - > txn_begin ;
$ query - > param ( 'password' , 'ilsdi-passworD' ) ;
$ reply = C4::ILSDI::Services:: AuthenticatePatron ( $ query ) ;
is ( $ reply - > { 'code' } , 'PatronNotFound' , "userid and wrong password - PatronNotFound" ) ;
is ( $ reply - > { 'id' } , undef , "id undef" ) ;
my $ plain_password = 'tomasito' ;
$ query - > param ( 'password' , 'ilsdi-password' ) ;
$ query - > param ( 'username' , 'wrong-ilsdi-useriD' ) ;
$ reply = C4::ILSDI::Services:: AuthenticatePatron ( $ query ) ;
is ( $ reply - > { 'code' } , 'PatronNotFound' , "non-existing userid - PatronNotFound" ) ;
is ( $ reply - > { 'id' } , undef , "id undef" ) ;
my $ borrower = $ builder - > build ( {
source = > 'Borrower' ,
value = > {
password = > Koha::AuthUtils:: hash_password ( $ plain_password )
}
} ) ;
$ query - > param ( 'username' , uc ( $ borrower - > { 'userid' } ) ) ;
$ reply = C4::ILSDI::Services:: AuthenticatePatron ( $ query ) ;
is ( $ reply - > { 'id' } , $ borrowernumber , "userid is not case sensitive - Patron authenticated" ) ;
is ( $ reply - > { 'code' } , undef , "Error code undef" ) ;
my $ query = new CGI ;
$ query - > param ( 'username' , $ borrower - > { userid } ) ;
$ query - > param ( 'password' , $ plain_password ) ;
$ query - > param ( 'username' , $ borrower - > { 'cardnumber' } ) ;
$ reply = C4::ILSDI::Services:: AuthenticatePatron ( $ query ) ;
is ( $ reply - > { 'id' } , $ borrowernumber , "cardnumber and password - Patron authenticated" ) ;
is ( $ reply - > { 'code' } , undef , "Error code undef" ) ;
my $ reply = C4::ILSDI::Services:: AuthenticatePatron ( $ query ) ;
is ( $ reply - > { id } , $ borrower - > { borrowernumber } , "userid and password - Patron authenticated" ) ;
is ( $ reply - > { code } , undef , "Error code undef" ) ;
$ query - > param ( 'password' , 'ilsdi-passworD' ) ;
$ reply = C4::ILSDI::Services:: AuthenticatePatron ( $ query ) ;
is ( $ reply - > { code } , 'PatronNotFound' , "userid and wrong password - PatronNotFound" ) ;
is ( $ reply - > { id } , undef , "id undef" ) ;
$ query - > param ( 'password' , $ plain_password ) ;
$ query - > param ( 'username' , 'wrong-ilsdi-useriD' ) ;
$ reply = C4::ILSDI::Services:: AuthenticatePatron ( $ query ) ;
is ( $ reply - > { code } , 'PatronNotFound' , "non-existing userid - PatronNotFound" ) ;
is ( $ reply - > { id } , undef , "id undef" ) ;
$ query - > param ( 'username' , uc ( $ borrower - > { userid } ) ) ;
$ reply = C4::ILSDI::Services:: AuthenticatePatron ( $ query ) ;
is ( $ reply - > { id } , $ borrower - > { borrowernumber } , "userid is not case sensitive - Patron authenticated" ) ;
is ( $ reply - > { code } , undef , "Error code undef" ) ;
$ query - > param ( 'username' , $ borrower - > { cardnumber } ) ;
$ reply = C4::ILSDI::Services:: AuthenticatePatron ( $ query ) ;
is ( $ reply - > { id } , $ borrower - > { borrowernumber } , "cardnumber and password - Patron authenticated" ) ;
is ( $ reply - > { code } , undef , "Error code undef" ) ;
$ query - > param ( 'password' , 'ilsdi-passworD' ) ;
$ reply = C4::ILSDI::Services:: AuthenticatePatron ( $ query ) ;
is ( $ reply - > { code } , 'PatronNotFound' , "cardnumber and wrong password - PatronNotFount" ) ;
is ( $ reply - > { id } , undef , "id undef" ) ;
$ query - > param ( 'username' , 'randomcardnumber1234' ) ;
$ query - > param ( 'password' , $ plain_password ) ;
$ reply = C4::ILSDI::Services:: AuthenticatePatron ( $ query ) ;
is ( $ reply - > { 'code' } , 'PatronNotFound' , "cardnumber and wrong password - PatronNotFount" ) ;
is ( $ reply - > { 'id' } , undef , "id undef" ) ;
is ( $ reply - > { code } , 'PatronNotFound' , "non-existing cardnumer/userid - PatronNotFound" ) ;
is ( $ reply - > { id } , undef , "id undef" ) ;
$ query - > param ( 'username' , 'randomcardnumber1234' ) ;
$ query - > param ( 'password' , 'ilsdi-password' ) ;
$ reply = C4::ILSDI::Services:: AuthenticatePatron ( $ query ) ;
is ( $ reply - > { 'code' } , 'PatronNotFound' , "non-existing cardnumer/userid - PatronNotFound" ) ;
is ( $ reply - > { 'id' } , undef , "id undef" ) ;
$ schema - > storage - > txn_rollback ;
} ;
}
# End transaction
$ dbh - > rollback ;
$ dbh - > { AutoCommit } = 1 ;
$ dbh - > { RaiseError } = 0 ;
my $ schema = Koha::Database - > schema ;
$ schema - > storage - > txn_begin ;
subtest 'GetPatronInfo/GetBorrowerAttributes test for extended patron attributes' = > sub {
$ schema - > resultset ( 'Issue' ) - > delete_all ;
$ schema - > resultset ( 'Borrower' ) - > delete_all ;
$ schema - > resultset ( 'BorrowerAttribute' ) - > delete_all ;
$ schema - > resultset ( 'BorrowerAttributeType' ) - > delete_all ;
$ schema - > resultset ( 'Category' ) - > delete_all ;
$ schema - > resultset ( 'Item' ) - > delete_all ; # 'Branch' deps. on this
$ schema - > resultset ( 'Branch' ) - > delete_all ;
plan tests = > 1 ;
$ schema - > storage - > txn_begin ;
{ # GetPatronInfo/GetBorrowerAttributes test for extended patron attributes:
$ schema - > resultset ( 'Issue' ) - > delete_all ;
$ schema - > resultset ( 'Borrower' ) - > delete_all ;
$ schema - > resultset ( 'BorrowerAttribute' ) - > delete_all ;
$ schema - > resultset ( 'BorrowerAttributeType' ) - > delete_all ;
$ schema - > resultset ( 'Category' ) - > delete_all ;
$ schema - > resultset ( 'Item' ) - > delete_all ; # 'Branch' deps. on this
$ schema - > resultset ( 'Branch' ) - > delete_all ;
# Configure Koha to enable ILS-DI server and extended attributes:
t::lib::Mocks:: mock_preference ( 'ILS-DI' , 1 ) ;
t::lib::Mocks:: mock_preference ( 'ExtendedPatronAttributes' , 1 ) ;
my $ builder = t::lib::TestBuilder - > new ;
# Set up a library/branch for our user to belong to:
my $ lib = $ builder - > build ( {
source = > 'Branch' ,
@ -195,7 +188,9 @@ $schema->resultset( 'Branch' )->delete_all;
# Check results:
is_deeply ( $ reply - > { 'attributes' } , [ $ cmp ] , 'Test GetPatronInfo - show_attributes parameter' ) ;
}
# Cleanup
$ schema - > storage - > txn_rollback ;
# Cleanup
$ schema - > storage - > txn_rollback ;
} ;
1 ;