Bug 6979 - Update tests
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
This commit is contained in:
parent
8c3fc47338
commit
68c365ea8a
|
|
@ -60,6 +60,7 @@ my $prefhost = $ldap->{hostname} or die ldapserver_error('hostname');
|
|||
my $base = $ldap->{base} or die ldapserver_error('base');
|
||||
$ldapname = $ldap->{user} ;
|
||||
$ldappassword = $ldap->{pass} ;
|
||||
$ldap->{anonymous_bind} = 1 unless $ldapname && $ldappassword;
|
||||
our %mapping = %{$ldap->{mapping}}; # FIXME dpavlin -- don't die because of || (); from 6eaf8511c70eb82d797c941ef528f4310a15e9f9
|
||||
my @mapkeys = keys %mapping;
|
||||
$debug and print STDERR "Got ", scalar(@mapkeys), " ldap mapkeys ( total ): ", join ' ', @mapkeys, "\n";
|
||||
|
|
@ -176,7 +177,7 @@ sub checkpw_ldap {
|
|||
$userldapentry = $search->shift_entry;
|
||||
}
|
||||
} else {
|
||||
my $res = ($config{anonymous}) ? $db->bind : $db->bind($ldapname, password=>$ldappassword);
|
||||
my $res = ($ldap->{anonymous_bind}) ? $db->bind : $db->bind($ldapname, password=>$ldappassword);
|
||||
if ($res->code) { # connection refused
|
||||
warn "LDAP bind failed as ldapuser " . ($ldapname || '[ANONYMOUS]') . ": " . description($res);
|
||||
return 0;
|
||||
|
|
@ -189,6 +190,7 @@ sub checkpw_ldap {
|
|||
warn "LDAP Auth rejected : invalid password for user '$userid'. " . description($user_ldap_bind_ret);
|
||||
return -1;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
# To get here, LDAP has accepted our user's login attempt.
|
||||
|
|
|
|||
|
|
@ -46,11 +46,11 @@ my $anonymous_bind = 1;
|
|||
# Variables controlling LDAP behaviour
|
||||
my $desired_authentication_result = 'success';
|
||||
my $desired_connection_result = 'error';
|
||||
my $desired_bind_result = 'error';
|
||||
my $desired_admin_bind_result = 'error';
|
||||
my $desired_compare_result = 'error';
|
||||
my $desired_search_result = 'error';
|
||||
my $desired_count_result = 1;
|
||||
my $non_anonymous_bind_result = 'error';
|
||||
my $desired_bind_result = 'error';
|
||||
my $ret;
|
||||
|
||||
# Mock the context module
|
||||
|
|
@ -150,7 +150,7 @@ subtest 'checkpw_ldap tests' => sub {
|
|||
|
||||
$desired_authentication_result = 'success';
|
||||
$anonymous_bind = 1;
|
||||
$desired_bind_result = 'error';
|
||||
$desired_admin_bind_result = 'error';
|
||||
$desired_search_result = 'error';
|
||||
reload_ldap_module();
|
||||
|
||||
|
|
@ -164,10 +164,10 @@ subtest 'checkpw_ldap tests' => sub {
|
|||
|
||||
$desired_authentication_result = 'success';
|
||||
$anonymous_bind = 1;
|
||||
$desired_bind_result = 'success';
|
||||
$desired_admin_bind_result = 'success';
|
||||
$desired_search_result = 'success';
|
||||
$desired_count_result = 1;
|
||||
$non_anonymous_bind_result = 'success';
|
||||
$desired_bind_result = 'success';
|
||||
$update = 1;
|
||||
reload_ldap_module();
|
||||
|
||||
|
|
@ -212,7 +212,7 @@ subtest 'checkpw_ldap tests' => sub {
|
|||
'checkpw_ldap returns 0 if user lookup returns 0'
|
||||
);
|
||||
|
||||
$non_anonymous_bind_result = 'error';
|
||||
$desired_bind_result = 'error';
|
||||
reload_ldap_module();
|
||||
|
||||
warning_like {
|
||||
|
|
@ -227,10 +227,10 @@ subtest 'checkpw_ldap tests' => sub {
|
|||
# regression tests for bug 12831
|
||||
$desired_authentication_result = 'error';
|
||||
$anonymous_bind = 0;
|
||||
$desired_bind_result = 'error';
|
||||
$desired_admin_bind_result = 'error';
|
||||
$desired_search_result = 'success';
|
||||
$desired_count_result = 0; # user auth problem
|
||||
$non_anonymous_bind_result = 'error';
|
||||
$desired_bind_result = 'error';
|
||||
reload_ldap_module();
|
||||
|
||||
warning_like {
|
||||
|
|
@ -252,8 +252,8 @@ subtest 'checkpw_ldap tests' => sub {
|
|||
|
||||
# Anonymous bind
|
||||
$anonymous_bind = 1;
|
||||
$desired_bind_result = 'error';
|
||||
$non_anonymous_bind_result = 'error';
|
||||
$desired_admin_bind_result = 'error';
|
||||
$desired_bind_result = 'error';
|
||||
reload_ldap_module();
|
||||
|
||||
warning_like {
|
||||
|
|
@ -265,9 +265,8 @@ qr/LDAP bind failed as ldapuser cn=Manager,dc=metavore,dc=com: LDAP error #1: er
|
|||
is( $ret, 0, 'checkpw_ldap returns 0 if bind fails' );
|
||||
|
||||
$anonymous_bind = 1;
|
||||
$desired_bind_result = 'success';
|
||||
$non_anonymous_bind_result = 'success';
|
||||
$desired_compare_result = 'error';
|
||||
$desired_admin_bind_result = 'success';
|
||||
$desired_bind_result = 'error';
|
||||
reload_ldap_module();
|
||||
|
||||
warning_like {
|
||||
|
|
@ -280,9 +279,8 @@ qr/LDAP Auth rejected : invalid password for user 'hola'. LDAP error #1: error_n
|
|||
|
||||
# Non-anonymous bind
|
||||
$anonymous_bind = 0;
|
||||
$desired_bind_result = 'success';
|
||||
$non_anonymous_bind_result = 'error';
|
||||
$desired_compare_result = 'dont care';
|
||||
$desired_admin_bind_result = 'error';
|
||||
$desired_bind_result = 'error';
|
||||
reload_ldap_module();
|
||||
|
||||
warning_like {
|
||||
|
|
@ -294,9 +292,8 @@ qr/LDAP bind failed as ldapuser cn=Manager,dc=metavore,dc=com: LDAP error #1: er
|
|||
is( $ret, 0, 'checkpw_ldap returns 0 if bind fails' );
|
||||
|
||||
$anonymous_bind = 0;
|
||||
$desired_bind_result = 'success';
|
||||
$non_anonymous_bind_result = 'success';
|
||||
$desired_compare_result = 'error';
|
||||
$desired_admin_bind_result = 'success';
|
||||
$desired_bind_result = 'error';
|
||||
reload_ldap_module();
|
||||
|
||||
warning_like {
|
||||
|
|
@ -394,59 +391,22 @@ sub mock_net_ldap {
|
|||
|
||||
my $mocked_ldap = Test::MockObject->new();
|
||||
|
||||
$mocked_ldap->mock(
|
||||
'bind',
|
||||
sub {
|
||||
|
||||
my @args = @_;
|
||||
my $mocked_message;
|
||||
|
||||
if ( $#args > 1 ) {
|
||||
|
||||
# Args passed => non-anonymous bind
|
||||
if ( $non_anonymous_bind_result eq 'error' ) {
|
||||
return mock_net_ldap_message( 1, 1, 'error_name',
|
||||
'error_text' );
|
||||
}
|
||||
else {
|
||||
return mock_net_ldap_message( 0, 0, q{}, q{} );
|
||||
}
|
||||
}
|
||||
else {
|
||||
$mocked_message = mock_net_ldap_message(
|
||||
( $desired_bind_result eq 'error' ) ? 1 : 0, # code
|
||||
( $desired_bind_result eq 'error' ) ? 1 : 0, # error
|
||||
( $desired_bind_result eq 'error' )
|
||||
? 'error_name'
|
||||
: 0, # error_name
|
||||
( $desired_bind_result eq 'error' )
|
||||
? 'error_text'
|
||||
: 0 # error_text
|
||||
);
|
||||
}
|
||||
|
||||
return $mocked_message;
|
||||
$mocked_ldap->mock( 'bind', sub {
|
||||
if (is_admin_bind(@_)) {
|
||||
return mock_net_ldap_message(
|
||||
($desired_admin_bind_result eq 'error' ) ? 1 : 0, # code
|
||||
($desired_admin_bind_result eq 'error' ) ? 1 : 0, # error
|
||||
($desired_admin_bind_result eq 'error' ) ? 'error_name' : 0, # error_name
|
||||
($desired_admin_bind_result eq 'error' ) ? 'error_text' : 0 # error_text
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
$mocked_ldap->mock(
|
||||
'compare',
|
||||
sub {
|
||||
|
||||
my $mocked_message;
|
||||
|
||||
if ( $desired_compare_result eq 'error' ) {
|
||||
$mocked_message =
|
||||
mock_net_ldap_message( 1, 1, 'error_name', 'error_text' );
|
||||
else {
|
||||
if ( $desired_bind_result eq 'error' ) {
|
||||
return mock_net_ldap_message(1,1,'error_name','error_text');
|
||||
}
|
||||
else {
|
||||
# we expect return code 6 for success
|
||||
$mocked_message = mock_net_ldap_message( 6, 0, q{}, q{} );
|
||||
}
|
||||
|
||||
return $mocked_message;
|
||||
return mock_net_ldap_message(0,0,'','');
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
$mocked_ldap->mock(
|
||||
'search',
|
||||
|
|
@ -531,6 +491,16 @@ sub reload_ldap_module {
|
|||
return;
|
||||
}
|
||||
|
||||
$schema->storage->txn_rollback();
|
||||
sub is_admin_bind {
|
||||
my @args = @_;
|
||||
|
||||
if ($#args <= 1 || $args[1] eq 'cn=Manager,dc=metavore,dc=com') {
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
$schema->storage->txn_rollback;
|
||||
|
||||
1;
|
||||
|
|
|
|||
Loading…
Reference in New Issue