@@ -, +, @@ --- t/db_dependent/Auth_with_ldap.t | 59 +++++++++++++++++++++++++++++++-- 1 file changed, 57 insertions(+), 2 deletions(-) --- a/t/db_dependent/Auth_with_ldap.t +++ a/t/db_dependent/Auth_with_ldap.t @@ -28,6 +28,15 @@ use C4::Context; use Koha::Patrons; +# Hide all the subrouteine redefined warnings when running this test.. +# We reload the ldap module lots in the test and each reload triggers the +# 'Subroutine X redefined at' warning.. disable that to make the test output +# readable. +$SIG{__WARN__} = sub { + my $warning = shift; + warn $warning unless $warning =~ /Subroutine .* redefined at/; +}; + # Start transaction my $schema = Koha::Database->new->schema; $schema->storage->txn_begin(); @@ -37,6 +46,7 @@ my $builder = t::lib::TestBuilder->new(); # Variables controlling LDAP server config my $update = 0; my $replicate = 0; +my $welcome = 0; my $auth_by_bind = 1; my $anonymous_bind = 1; my $user = 'cn=Manager,dc=metavore,dc=com'; @@ -144,7 +154,7 @@ subtest 'checkpw_ldap tests' => sub { subtest 'auth_by_bind = 1 tests' => sub { - plan tests => 11; + plan tests => 14; $auth_by_bind = 1; @@ -221,7 +231,51 @@ subtest 'checkpw_ldap tests' => sub { 'checkpw_ldap returns 0 if user lookup returns 0' ); - $desired_bind_result = 'error'; + # test replicate functionality and welcome notice + $desired_authentication_result = 'success'; + $anonymous_bind = 1; + $desired_admin_bind_result = 'success'; + $desired_search_result = 'success'; + $desired_count_result = 1; + $desired_bind_result = 'success'; + $replicate = 1; + $welcome = 1; + reload_ldap_module(); + + $auth->mock( + 'ldap_entry_2_hash', + sub { + return ( + userid => 'hola', + branchcode => $branchcode, + categorycode => $categorycode, + email => 'me@myemail.com', + ); + } + ); + + C4::Auth_with_ldap::checkpw_ldap( 'hola', password => 'hey' ); + my $patrons = Koha::Patrons->search( { userid => 'hola' } ); + is( $patrons->count, 1, 'New patron added with "replicate"' ); + + $patron = $patrons->next; + my $queued_notices = Koha::Notice::Messages->search( + { borrowernumber => $patron->borrowernumber } ); + is( $queued_notices->count, 1, + "One notice queued when `welcome` is set" ); + + my $THE_notice = $queued_notices->next; + is( $THE_notice->status, 'failed', "The notice was sent immediately" ); + + # clean up + $patron->delete; + $replicate = 0; + $welcome = 0; + $auth->unmock('ldap_entry_2_hash'); + # end replicate testing + + $desired_count_result = 0; + $desired_bind_result = 'error'; reload_ldap_module(); warning_like { @@ -376,6 +430,7 @@ sub mockedC4Config { pass => $pass, principal_name => '%s@my_domain.com', replicate => $replicate, + welcome => $welcome, update => $update, user => $user, ); --