public function LdapServersTestCase::testApiFunctions in Lightweight Directory Access Protocol (LDAP) 8.2
Same name and namespace in other branches
- 7.2 ldap_servers/tests/ldap_servers.test \LdapServersTestCase::testApiFunctions()
File
- ldap_servers/
tests/ ldap_servers.test, line 50
Class
Code
public function testApiFunctions() {
$group = 'ldap_servers: functions';
foreach (array(
'openldap1',
'activedirectory1',
) as $sid) {
// , 'activedirectory1'
$ldap_type = $sid == 'openldap1' ? 'Open Ldap' : 'Active Directory';
$this
->prepTestData('hogwarts', array(
$sid,
));
$group = "ldap_servers: functions: {$ldap_type}";
$test_data = variable_get('ldap_test_server__' . $sid, array());
ldap_servers_module_load_include('php', 'ldap_test', 'LdapServerTest.class');
$ldap_server = LdapServerTest::getLdapServerObjects($sid, NULL, TRUE);
// check against csv data rather than ldap array to make sure csv to ldap conversion is correct
$user_csv_entry = $test_data['csv']['users']['101'];
$user_dn = $user_csv_entry['dn'];
$user_cn = $user_csv_entry['cn'];
$user_ldap_entry = $test_data['ldap'][$user_dn];
$username = $ldap_server
->userUsernameFromLdapEntry($user_ldap_entry);
$this
->assertTrue($username == $user_csv_entry['cn'], 'LdapServer::userUsernameFromLdapEntry works when LdapServer::user_attr attribute used', $group);
$bogus_ldap_entry = array();
$username = $ldap_server
->userUsernameFromLdapEntry($bogus_ldap_entry);
$this
->assertTrue($username === FALSE, 'LdapServer::userUsernameFromLdapEntry fails correctly', $group);
$username = $ldap_server
->userUsernameFromDn($user_dn);
$this
->assertTrue($username == $user_cn, 'LdapServer::userUsernameFromDn works when LdapServer::user_attr attribute used', $group);
$username = $ldap_server
->userUsernameFromDn('bogus dn');
$this
->assertTrue($username === FALSE, 'LdapServer::userUsernameFromDn fails correctly', $group);
$desired = array();
$desired[0] = array(
0 => 'cn=gryffindor,ou=groups,dc=hogwarts,dc=edu',
1 => 'cn=students,ou=groups,dc=hogwarts,dc=edu',
2 => 'cn=honors students,ou=groups,dc=hogwarts,dc=edu',
);
$desired[1] = array_merge($desired[0], array(
'cn=users,ou=groups,dc=hogwarts,dc=edu',
));
foreach (array(
0,
1,
) as $nested) {
$nested_display = $nested ? 'nested' : 'not nested';
$desired_count = $nested ? 4 : 3;
$ldap_module_user_entry = array(
'attr' => $user_ldap_entry,
'dn' => $user_dn,
);
$groups_desired = $desired[$nested];
$suffix = ",desired={$desired_count}, nested=" . (bool) $nested;
// test parent function groupMembershipsFromUser
$groups = $ldap_server
->groupMembershipsFromUser($ldap_module_user_entry, 'group_dns', $nested);
$count = count($groups);
$diff1 = array_diff($groups_desired, $groups);
$diff2 = array_diff($groups, $groups_desired);
$pass = count($diff1) == 0 && count($diff2) == 0 && $count == $desired_count;
$this
->assertTrue($pass, "LdapServer::groupMembershipsFromUser nested={$nested}", $group . $suffix);
if (!$pass) {
debug('groupMembershipsFromUser');
debug($groups);
debug($diff1);
debug($diff2);
debug($groups_desired);
}
// test parent groupUserMembershipsFromUserAttr, for openldap should be false, for ad should work
$groups = $ldap_server
->groupUserMembershipsFromUserAttr($ldap_module_user_entry, $nested);
$count = is_array($groups) ? count($groups) : $count;
$pass = $count === FALSE;
if ($sid == 'openldap1') {
$pass = $groups === FALSE;
}
else {
$pass = count($diff1) == 0 && count($diff2) == 0 && $count == $desired_count;
}
$this
->assertTrue($pass, "LdapServer::groupUserMembershipsFromUserAttr {$nested_display}, {$ldap_type}, is false because not configured", $group . $suffix);
if (!$pass) {
debug('groupUserMembershipsFromUserAttr');
debug($groups);
debug($diff1);
debug($diff2);
}
$groups = $ldap_server
->groupUserMembershipsFromEntry($ldap_module_user_entry, $nested);
$count = count($groups);
$diff1 = array_diff($groups_desired, $groups);
$diff2 = array_diff($groups, $groups_desired);
$pass = count($diff1) == 0 && count($diff2) == 0 && $count == $desired_count;
$this
->assertTrue($pass, "LdapServer::groupUserMembershipsFromEntry {$nested_display} works", $group . $suffix);
if (!$pass) {
debug('groupUserMembershipsFromEntry');
debug($groups);
debug($diff1);
debug($diff2);
debug($groups_desired);
}
}
}
}