function OpenIDFunctionalTestCase::testLogin

Test login using OpenID.

File

modules/openid/openid.test, line 154

Class

OpenIDFunctionalTestCase
Test discovery and login using OpenID

Code

function testLogin() {
    $this->drupalLogin($this->web_user);
    // Use a User-supplied Identity that is the URL of an XRDS document.
    $identity = url('openid-test/yadis/xrds', array(
        'absolute' => TRUE,
    ));
    $this->addIdentity($identity);
    $this->drupalLogout();
    // Test logging in via the login block on the front page.
    $this->submitLoginForm($identity);
    $this->assertLink(t('Log out'), 0, 'User was logged in.');
    $this->drupalLogout();
    // Test logging in via the user/login page.
    $edit = array(
        'openid_identifier' => $identity,
    );
    $this->drupalPost('user/login', $edit, t('Log in'));
    // Check we are on the OpenID redirect form.
    $this->assertTitle(t('OpenID redirect'), 'OpenID redirect page was displayed.');
    // Submit form to the OpenID Provider Endpoint.
    $this->drupalPost(NULL, array(), t('Send'));
    $this->assertLink(t('Log out'), 0, 'User was logged in.');
    // Verify user was redirected away from user/login to an accessible page.
    $this->assertResponse(200);
    $this->drupalLogout();
    // Use a User-supplied Identity that is the URL of an XRDS document.
    // Tell the test module to add a doctype. This should fail.
    $identity = url('openid-test/yadis/xrds', array(
        'absolute' => TRUE,
        'query' => array(
            'doctype' => 1,
        ),
    ));
    // Test logging in via the login block on the front page.
    $edit = array(
        'openid_identifier' => $identity,
    );
    $this->drupalPost('', $edit, t('Log in'));
    $this->assertRaw(t('Sorry, that is not a valid OpenID. Ensure you have spelled your ID correctly.'), 'XML with DOCTYPE was rejected.');
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.