diff options
author | sunnavy <sunnavy@bestpractical.com> | 2022-03-22 18:51:51 +0300 |
---|---|---|
committer | sunnavy <sunnavy@bestpractical.com> | 2022-03-22 20:45:41 +0300 |
commit | deb679070e44788fc9010bbaffedb6d9b46a81bd (patch) | |
tree | 8496fa412d7d1ee9918c7926a10d629553b43a30 /t | |
parent | db80eeb350da0a8240ecb19887265c1dfc4bd2a9 (diff) |
Test user/group Disabled field in LDAP import
Diffstat (limited to 't')
-rw-r--r-- | t/ldapimport/group-import.t | 34 | ||||
-rw-r--r-- | t/ldapimport/user-import.t | 34 |
2 files changed, 60 insertions, 8 deletions
diff --git a/t/ldapimport/group-import.t b/t/ldapimport/group-import.t index b87bc97c0d..fc3f97bd92 100644 --- a/t/ldapimport/group-import.t +++ b/t/ldapimport/group-import.t @@ -54,6 +54,16 @@ $ldap->add( ], ); +my $entry = { + cn => "testdisabled", + members => ["uid=testuser1,ou=foo,dc=bestpractical,dc=com"], + objectClass => 'Group', + disabled => 1, +}; +$ldap->add( "cn=testdisabled,ou=groups,dc=bestpractical,dc=com", attr => [ %$entry ] ); +push @ldap_group_entries, $entry; + + RT->Config->Set('LDAPHost',"ldap://localhost:$ldap_port"); RT->Config->Set('LDAPMapping', {Name => 'uid', @@ -74,10 +84,17 @@ for my $entry (@ldap_user_entries) { RT->Config->Set('LDAPGroupBase','dc=bestpractical,dc=com'); RT->Config->Set('LDAPGroupFilter','(objectClass=Group)'); -RT->Config->Set('LDAPGroupMapping', - {Name => 'cn', - Member_Attr => 'members', - }); +RT->Config->Set( + 'LDAPGroupMapping', + { + Name => 'cn', + Member_Attr => 'members', + Disabled => sub { + my %args = @_; + return $args{ldap_entry}->get_value('disabled') ? 1 : 0; + }, + } +); # confirm that we skip the import ok( $importer->import_groups() ); @@ -89,6 +106,15 @@ ok( $importer->import_groups() ); import_group_members_ok( members => 'dn' ); +my $group = RT::Group->new($RT::SystemUser); +$group->LoadUserDefinedGroup('testdisabled'); +ok( $group->Disabled, 'Group testdisabled is disabled' ); + +$ldap->modify( "cn=testdisabled,ou=groups,dc=bestpractical,dc=com", replace => { disabled => 0 } ); +ok( $importer->import_groups( import => 1 ), "imported groups" ); +$group->LoadUserDefinedGroup('testdisabled'); +ok( !$group->Disabled, 'Group testdisabled is enabled' ); + RT->Config->Set('LDAPGroupMapping', {Name => 'cn', Member_Attr => 'memberUid', diff --git a/t/ldapimport/user-import.t b/t/ldapimport/user-import.t index 4092a1c1cb..c4f6a5934c 100644 --- a/t/ldapimport/user-import.t +++ b/t/ldapimport/user-import.t @@ -41,15 +41,34 @@ $ldap->add( ], ); +$ldap->add( + "uid=testdisabled,ou=foo,dc=bestpractical,dc=com", + attr => [ + cn => "Disabled user", + mail => "testdisabled\@invalid.tld", + uid => 'testdisabled', + objectclass => 'User', + disabled => 1, + ], +); RT->Config->Set('LDAPHost',"ldap://localhost:$ldap_port"); RT->Config->Set('LDAPOptions', [ port => $ldap_port ]); -RT->Config->Set('LDAPMapping', - {Name => 'uid', - EmailAddress => 'mail', - RealName => 'cn'}); +RT->Config->Set( + 'LDAPMapping', + { + Name => 'uid', + EmailAddress => 'mail', + RealName => 'cn', + Disabled => sub { + my %args = @_; + return $args{ldap_entry}->get_value('disabled') ? 1 : 0; + }, + } +); RT->Config->Set('LDAPBase','ou=foo,dc=bestpractical,dc=com'); RT->Config->Set('LDAPFilter','(objectClass=User)'); +RT->Config->Set('LDAPUpdateUsers', 1); # check that we don't import ok($importer->import_users()); @@ -81,6 +100,13 @@ ok(!$user->Id); $user->Load( 9000 ); ok(!$user->Id); +$user->Load('testdisabled'); +ok( $user->Disabled, 'User testdisabled is disabled' ); +$ldap->modify( "uid=testdisabled,ou=foo,dc=bestpractical,dc=com", replace => { disabled => 0 } ); +ok( $importer->import_users( import => 1 ) ); +$user->Load('testdisabled'); +ok( !$user->Disabled, 'User testdisabled is enabled' ); + # can't unbind earlier or the server will die $ldap->unbind; |