You are here

public function LdapServersTestCase::testUIForms in Lightweight Directory Access Protocol (LDAP) 8.2

Same name and namespace in other branches
  1. 7.2 ldap_servers/tests/ldap_servers.test \LdapServersTestCase::testUIForms()
  2. 7 ldap_servers/tests/ldap_servers.test \LdapServersTestCase::testUIForms()

File

ldap_servers/tests/ldap_servers.test, line 232

Class

LdapServersTestCase

Code

public function testUIForms() {
  foreach (array(
    1,
  ) as $ctools_enabled) {
    $this->ldapTestId = "testUIForms.ctools.{$ctools_enabled}";
    if ($ctools_enabled) {
      module_enable(array(
        'ctools',
      ));
    }
    else {

      // module_disable(array('ctools'));
    }
    $ldap_simpletest_initial = config('ldap_test.settings')
      ->get('simpletest');
    variable_del('ldap_simpletest');

    // need to be out of fake server mode to test ui.
    $this->privileged_user = $this
      ->drupalCreateUser(array(
      'administer site configuration',
    ));
    $this
      ->drupalLogin($this->privileged_user);
    $sid = 'server1';
    $server_data = array();
    $server_data[$sid] = array(
      'sid' => array(
        $sid,
        $sid,
      ),
      'name' => array(
        "Server {$sid}",
        "My Server {$sid}",
      ),
      'status' => array(
        1,
        1,
      ),
      'ldap_type' => array(
        'openldap',
        'ad',
      ),
      'address' => array(
        "{$sid}.ldap.fake",
        "{$sid}.ldap.fake",
      ),
      'port' => array(
        389,
        7000,
      ),
      'tls' => array(
        TRUE,
        FALSE,
      ),
      'bind_method' => array(
        1,
        3,
      ),
      'binddn' => array(
        'cn=service-account,ou=people,dc=hogwarts,dc=edu',
        '',
      ),
      'bindpw' => array(
        'sdfsdafsdfasdf',
        'sdfsdafsdfasdf',
      ),
      'user_attr' => array(
        'sAMAccountName',
        'blah',
      ),
      'account_name_attr' => array(
        'sAMAccountName',
        'blah',
      ),
      'mail_attr' => array(
        'mail',
        '',
      ),
      'mail_template' => array(
        '',
        '[email]',
      ),
      'unique_persistent_attr' => array(
        'dn',
        'uniqueregistryid',
      ),
      'unique_persistent_attr_binary' => array(
        1,
        1,
        1,
        1,
      ),
      'user_dn_expression' => array(
        'cn=%cn,%basedn',
        'cn=%username,%basedn',
      ),
      'ldap_to_drupal_user' => array(
        'code',
        'different code',
      ),
      'testing_drupal_username' => array(
        'hpotter',
        'hpotter',
      ),
      'testing_drupal_user_dn' => array(
        'cn=hpotter,ou=people,dc=hogwarts,dc=edu',
        'cn=hpotter,ou=people,dc=hogwarts,dc=edu',
      ),
      'grp_unused' => array(
        FALSE,
        FALSE,
      ),
      'grp_object_cat' => array(
        'group',
        'group',
      ),
      'grp_nested' => array(
        FALSE,
        FALSE,
      ),
      'grp_user_memb_attr_exists' => array(
        1,
        1,
      ),
      'grp_user_memb_attr' => array(
        'memberof',
        'memberof',
      ),
      'grp_memb_attr' => array(
        'member',
        'member',
      ),
      'grp_memb_attr_match_user_attr' => array(
        'dn',
        'dn',
      ),
      'grp_derive_from_dn' => array(
        1,
        1,
      ),
      'grp_derive_from_dn_attr' => array(
        'ou',
        'ou',
      ),
      'grp_test_grp_dn' => array(
        'cn=students,ou=groups,dc=hogwarts,dc=edu',
        'cn=students,ou=groups,dc=hogwarts,dc=edu',
      ),
      'grp_test_grp_dn_writeable' => array(
        'cn=students,ou=groups,dc=hogwarts,dc=edu',
        'cn=students,ou=groups,dc=hogwarts,dc=edu',
      ),
    );
    $lcase_transformed = array(
      'user_attr',
      'account_name_attr',
      'mail_attr',
      'unique_persistent_attr',
      'grp_user_memb_attr',
      'grp_memb_attr_match_user_attr',
      'grp_derive_from_dn_attr',
    );
    if (!module_exists('php')) {
      unset($server_data[$sid]['ldap_to_drupal_user']);
    }

    /** add server conf test **/
    $this
      ->drupalGet('admin/config/people/ldap/servers/add');
    $edit = array();
    foreach ($server_data['server1'] as $input_name => $input_values) {
      $edit[$input_name] = $input_values[0];
    }
    $this
      ->drupalPost('admin/config/people/ldap/servers/add', $edit, t('Add'));
    $field_to_prop_map = LdapServer::field_to_properties_map();
    $field_to_prop_map['bindpw'] = 'bindpw';
    $ldap_servers = ldap_servers_get_servers(NULL, 'all', FALSE, TRUE);
    $this
      ->assertTrue(count(array_keys($ldap_servers)) == 1, 'Add form for ldap server added server.', $this->ldapTestId . ' Add Server');
    $this
      ->assertText('LDAP Server Server server1 added', 'Add form confirmation message', $this->ldapTestId . ' Add Server');

    // assert one ldap server exists in db table
    // assert load of server has correct properties for each input
    $mismatches = $this
      ->compareFormToProperties($ldap_servers['server1'], $server_data['server1'], 0, $field_to_prop_map, $lcase_transformed);
    if (count($mismatches)) {
      debug('mismatches between ldap server properties and form submitted values');
      debug($mismatches);
      debug($ldap_servers);
      debug($server_data['server1']);
    }
    $this
      ->assertTrue(count($mismatches) == 0, 'Add form for ldap server properties match values submitted.', $this->ldapTestId . ' Add Server');

    /** update server conf test **/
    $this
      ->drupalGet('admin/config/people/ldap/servers/edit/server1');
    $edit = array();
    foreach ($server_data['server1'] as $input_name => $input_values) {
      if ($input_values[1] !== NULL) {
        $edit[$input_name] = $input_values[1];
      }
    }
    unset($edit['sid']);
    $this
      ->drupalPost('admin/config/people/ldap/servers/edit/server1', $edit, t('Update'));
    $ldap_servers = ldap_servers_get_servers(NULL, 'all', FALSE, TRUE);
    $this
      ->assertTrue(count(array_keys($ldap_servers)) == 1, 'Update form for ldap server didnt delete or add another server.', $this->ldapTestId . '.Update Server');

    // assert confirmation message without error
    // assert one ldap server exists in db table
    // assert load of server has correct properties for each input
    // unset($server_data['server1']['bindpw']);
    $mismatches = $this
      ->compareFormToProperties($ldap_servers['server1'], $server_data['server1'], 1, $field_to_prop_map, $lcase_transformed);
    if (count($mismatches)) {
      debug('mismatches between ldap server properties and form submitted values');
      debug($mismatches);
    }
    $this
      ->assertTrue(count($mismatches) == 0, 'Update form for ldap server properties match values submitted.', $this->ldapTestId . '.Update Server');

    /** delete server conf test **/
    $this
      ->drupalGet('admin/config/people/ldap/servers/delete/server1');
    $this
      ->drupalPost('admin/config/people/ldap/servers/delete/server1', array(), t('Delete'));
    $ldap_servers = ldap_servers_get_servers(NULL, 'all', FALSE, TRUE);
    $this
      ->assertTrue(count(array_keys($ldap_servers)) == 0, 'Delete form for ldap server deleted server.', $this->ldapTestId . '.Delete Server');
    variable_set('ldap_simpletest', $ldap_simpletest_initial);

    // return to fake server mode
  }
}