function LdapAuthorizationOg2Tests::testBasicFunctionsAndApi in Lightweight Directory Access Protocol (LDAP) 8.2
Same name and namespace in other branches
- 7.2 ldap_authorization/tests/Og2Tests.test \LdapAuthorizationOg2Tests::testBasicFunctionsAndApi()
- 7 ldap_authorization/tests/Og/Og2.test \LdapAuthorizationOg2Tests::testBasicFunctionsAndApi()
just make sure install succeeds and
File
- ldap_authorization/
tests/ Og2Tests.test, line 128
Class
Code
function testBasicFunctionsAndApi() {
if (ldap_authorization_og_og_version() != 2) {
debug('LdapAuthorizationOg2Tests must be run with OG 7.x-2.x');
return;
}
$this
->createCustomRoles();
$all_roles = og_roles($this->groupEntityType, $this->groupBundle, 0, FALSE, TRUE);
$this->ldapTestId = $this->module_name . ': setup success';
// just to give warning if setup doesn't succeed. may want to take these out at some point.
$setup_success = module_exists('ldap_authentication') && module_exists('ldap_servers') && module_exists('ldap_user') && module_exists('ldap_authorization') && module_exists('ldap_authorization_og') && config('ldap_test.settings')
->get('simpletest') == 2;
$this
->assertTrue($setup_success, ' ldap_authorizations og setup successful', $this->ldapTestId);
$this->ldapTestId = $this->module_name . ': cron test';
$this
->assertTrue(drupal_cron_run(), t('Cron can run with ldap authorization og enabled.'), $this->ldapTestId);
/***
* I. some basic tests to make sure og module's apis are working before testing ldap_authorization_og
* if these aren't working as expected, no ldap authorization og functionality will work.
*/
$web_user = $this
->drupalCreateUser();
$this->ldapTestId = $this->module_name . ': og2 functions';
list($group_nodes, $group_nids, $group_entity_ids, $roles_by_name, $consumer_ids) = $this
->getTestData(TRUE);
/**
* II.0 basic granting tests to make sure og_role_grant, ldap_authorization_og_rid_from_role_name,
* and ldap_authorization_og2_get_group functions work
* og_is_member($group_type, $gid, $entity_type = 'user', $entity = NULL, $states = array(OG_STATE_ACTIVE))
*/
$values = array(
'entity_type' => 'user',
'entity' => $web_user->uid,
'field_name' => FALSE,
'state' => OG_STATE_ACTIVE,
);
$og_gryffindor_membership = og_group($this->groupType, $group_nids['gryffindor'], $values);
$og_faculty_membership = og_group($this->groupType, $group_nids['faculty'], $values);
og_role_grant($this->groupType, $group_nids['gryffindor'], $web_user->uid, $roles_by_name['gryffindor'][OG_AUTHENTICATED_ROLE]);
og_role_grant($this->groupType, $group_nids['faculty'], $web_user->uid, $roles_by_name['faculty'][OG_ADMINISTRATOR_ROLE]);
og_role_grant($this->groupType, $group_nids['faculty'], $web_user->uid, $roles_by_name['faculty']['dungeon-master']);
og_role_grant($this->groupType, $group_nids['faculty'], $web_user->uid, $roles_by_name['faculty'][OG_AUTHENTICATED_ROLE]);
$web_user = user_load($web_user->uid, TRUE);
// need to reload because of issue with og_group and og_role_grant
$ids = array(
$web_user->uid,
);
$user_entity = entity_load('user', $ids);
$this
->assertTrue(og_is_member($this->groupType, $group_nids['gryffindor'], 'user', $web_user), 'User is member of Group gryffindor without LDAP (based on og_is_member() function)', $this->ldapTestId);
$this
->assertTrue(og_is_member($this->groupType, $group_nids['faculty'], 'user', $web_user), 'User is member of Group faculty without LDAP (based on og_is_member() function)', $this->ldapTestId);
$this
->assertTrue(ldap_authorization_og2_has_role($this->groupType, $group_nids['gryffindor'], $web_user->uid, OG_AUTHENTICATED_ROLE), 'User is member of Group gryffindor without LDAP (based on dap_authorization_og_has_role() function)', $this->ldapTestId);
$this
->assertTrue(ldap_authorization_og2_has_role($this->groupType, $group_nids['faculty'], $web_user->uid, OG_AUTHENTICATED_ROLE), 'User is member of Group faculty without LDAP (based on ldap_authorization_og2_has_role() function)', $this->ldapTestId);
$this
->assertTrue(ldap_authorization_og2_has_role($this->groupType, $group_nids['faculty'], $web_user->uid, OG_ADMINISTRATOR_ROLE), 'User is administrator member of Group faculty without LDAP (based on dap_authorization_og_has_role() function)', $this->ldapTestId);
/***
* II.A. construct ldapauthorization og object and test methods.
* (unit tests for methods and class without any ldap user context).
*/
//
$this->ldapTestId = $this->module_name . ': LdapAuthorizationConsumerOG class';
$og_auth = new LdapAuthorizationConsumerOG('og_group');
$this
->assertTrue(is_object($og_auth), 'Successfully instantiated LdapAuthorizationConsumerOG', $this->ldapTestId);
$this
->assertTrue($og_auth->consumerType == 'og_group', 'LdapAuthorizationConsumerOG ConsumerType set properly', $this->ldapTestId);
$this
->assertTrue($og_auth
->hasAuthorization($web_user, ldap_authorization_og_authorization_id($group_nids['faculty'], $roles_by_name['faculty'][OG_ADMINISTRATOR_ROLE], 'node')), 'hasAuthorization() method works for non LDAP provisioned og authorization, faculty admin role', $this->ldapTestId);
$should_haves = array(
$consumer_ids['gryffindor'][OG_AUTHENTICATED_ROLE] => 'gryffindor member',
$consumer_ids['faculty'][OG_AUTHENTICATED_ROLE] => 'faculty member',
$consumer_ids['faculty'][OG_ADMINISTRATOR_ROLE] => 'faculty admin',
$consumer_ids['faculty']['dungeon-master'] => 'faculty dungeon master',
);
foreach ($should_haves as $consumer_id => $descriptor) {
$this
->assertTrue(ldap_authorization_og2_has_consumer_id($consumer_id, $web_user->uid), "LdapAuthorizationConsumerOG usersAuthorizations() for {$descriptor} - {$consumer_id}", $this->ldapTestId);
}
$ldap_entry = NULL;
$user_data = array();
$web_user = user_load($web_user->uid, TRUE);
$this
->assertTrue(ldap_authorization_og2_has_consumer_id($consumer_ids['faculty']['dungeon-master'], $web_user->uid), "LdapAuthorizationConsumerOG has faculty member role BEFORE authorizationRevoke() test revoke on member role " . $consumer_ids['faculty']['dungeon-master'], $this->ldapTestId);
$web_user = user_load($web_user->uid, TRUE);
$consumers = array(
$consumer_ids['faculty']['dungeon-master'] => $og_auth->emptyConsumer,
);
$og_auth
->authorizationRevoke($web_user, $user_data, $consumers, $ldap_entry, TRUE);
$result = ldap_authorization_og2_has_consumer_id($consumer_ids['faculty']['dungeon-master'], $web_user->uid);
$this
->assertFalse($result, "LdapAuthorizationConsumerOG authorizationRevoke() test revoke on member role " . $consumer_ids['faculty']['dungeon-master'], $this->ldapTestId);
$web_user = user_load($web_user->uid, TRUE);
$consumers = array(
$consumer_ids['faculty']['dungeon-master'] => $og_auth->emptyConsumer,
);
$og_auth
->authorizationRevoke($web_user, $user_data, $consumers, $ldap_entry, TRUE);
$this
->assertFalse(ldap_authorization_og2_has_consumer_id($consumer_ids['faculty']['dungeon-master'], $web_user->uid), "LdapAuthorizationConsumerOG authorizationRevoke() test revoke on custom member role role " . $consumer_ids['faculty']['dungeon-master'], $this->ldapTestId);
$web_user = user_load($web_user->uid, TRUE);
$initial_user_authorizations = $og_auth
->usersAuthorizations($web_user, TRUE, TRUE);
debug("initial_user_authorizations authorizations:");
debug($initial_user_authorizations);
debug("initial_user data:");
debug($web_user->data);
$og_auth
->authorizationGrant($web_user, $user_data, array(
$consumer_ids['students'][OG_AUTHENTICATED_ROLE] => $og_auth->emptyConsumer,
), $ldap_entry, TRUE);
$success = ldap_authorization_og2_has_consumer_id($consumer_ids['students'][OG_AUTHENTICATED_ROLE], $web_user->uid);
$this
->assertTrue($success, "LdapAuthorizationConsumerOG authorizationGrant() test grant on member role " . $consumer_ids['students'][OG_AUTHENTICATED_ROLE], $this->ldapTestId);
if (!$success) {
debug(array(
$user_data,
array(
$consumer_ids['students'][OG_AUTHENTICATED_ROLE] => $og_auth->emptyConsumer,
),
));
debug("user authorizations:");
debug($og_auth
->usersAuthorizations($web_user, TRUE));
}
$web_user = user_load($web_user->uid, TRUE);
$result = $og_auth
->authorizationRevoke($web_user, $user_data, array(
'node:454:44334' => $og_auth->emptyConsumer,
), $ldap_entry, TRUE);
$this
->assertFalse($result, 'LdapAuthorizationConsumerOG authorizationRevoke() test revoke of bogus authorization', $this->ldapTestId);
$web_user = user_load($web_user->uid, TRUE);
$result = $og_auth
->authorizationGrant($web_user, $user_data, array(
'node:454:44334' => $og_auth->emptyConsumer,
), $ldap_entry, TRUE);
$this
->assertFalse($result, 'LdapAuthorizationConsumerOG authorizationGrant() test grant of bogus authorization', $this->ldapTestId);
$web_user = user_load($web_user->uid, TRUE);
$result = $og_auth
->authorizationRevoke($web_user, $user_data, array(
'bogusformat',
), $ldap_entry, TRUE);
$this
->assertFalse($result, 'LdapAuthorizationConsumerOG authorizationRevoke() test revoke malformed params', $this->ldapTestId);
$web_user = user_load($web_user->uid, TRUE);
$result = $og_auth
->authorizationGrant($web_user, $user_data, array(
'bogusformat',
), $ldap_entry, TRUE);
$this
->assertFalse($result, 'LdapAuthorizationConsumerOG authorizationGrant() test grant malformed params', $this->ldapTestId);
/***
* II.B. Also test function in ldap_authorization_og.module
*/
list($students_group, $group_entity_id) = ldap_authorization_og2_get_group_from_name('node', 'students');
//debug("ldap_authorization_og2_get_group_from_name: students_group"); debug($students_group);
$this
->assertTrue($students_group->title == 'students', 'ldap_authorization_og2_get_group_from_name() function works', $this->ldapTestId);
$test = ldap_authorization_og2_has_role($this->groupType, $group_nids['gryffindor'], $web_user->uid, OG_ADMINISTRATOR_ROLE);
$this
->assertTrue($test, 'ldap_authorization_og2_has_role() function works', $this->ldapTestId);
$test = ldap_authorization_og2_has_role($this->groupType, $group_nids['students'], $web_user->uid, OG_ADMINISTRATOR_ROLE);
$this
->assertTrue($test === FALSE, 'ldap_authorization_og2_has_role() function fails with FALSE', $this->ldapTestId);
}