summaryrefslogtreecommitdiff
path: root/modules/openid/openid.test
diff options
context:
space:
mode:
Diffstat (limited to 'modules/openid/openid.test')
-rw-r--r--modules/openid/openid.test83
1 files changed, 83 insertions, 0 deletions
diff --git a/modules/openid/openid.test b/modules/openid/openid.test
index 6e2528e66..442a358ee 100644
--- a/modules/openid/openid.test
+++ b/modules/openid/openid.test
@@ -536,6 +536,89 @@ class OpenIDRegistrationTestCase extends OpenIDWebTestCase {
}
/**
+ * Test account registration using Simple Registration and Attribute Exchange.
+ */
+class OpenIDInvalidIdentifierTransitionTestCase extends OpenIDFunctionalTestCase {
+
+ public static function getInfo() {
+ return array(
+ 'name' => 'OpenID account update',
+ 'description' => 'Tries to correct OpenID identifiers attached to accounts if their identifiers were stripped.',
+ 'group' => 'OpenID',
+ );
+ }
+
+ function setUp() {
+ parent::setUp('openid', 'openid_test');
+ variable_set('user_register', USER_REGISTER_VISITORS);
+ variable_set('openid_less_obtrusive_transition', TRUE);
+ }
+
+ /**
+ * Test OpenID transition with e-mail mismatch.
+ */
+ function testStrippedFragmentAccountEmailMismatch() {
+ $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, 'fragment' => $this->randomName()));
+ $identity_stripped = preg_replace('/#.*/', '', $identity);
+
+ // Add invalid identifier to the authmap (identifier has stripped fragment).
+ $this->addIdentity($identity_stripped);
+ $this->drupalLogout();
+
+ // Test logging in via the login form, provider will respond with full
+ // identifier (including fragment) but with different email, so we can't
+ // provide auto-update.
+ variable_set('openid_test_response', array(
+ 'openid.claimed_id' => $identity,
+ 'openid.sreg.nickname' => $this->web_user->name,
+ 'openid.sreg.email' => 'invalid-' . $this->web_user->mail));
+
+ $edit = array('openid_identifier' => $identity_stripped);
+ $this->submitLoginForm($identity_stripped);
+
+ // Verify user was redirected away from user login to an accessible page.
+ $this->assertResponse(200);
+
+ // Verify the message.
+ $this->assertRaw(t('There is already an existing account associated with the OpenID identifier that you have provided.'), t('Message that OpenID identifier must be updated manually was displayed.'));
+ }
+
+ /**
+ * Test OpenID auto transition with e-mail.
+ */
+ function testStrippedFragmentAccountAutoUpdateSreg() {
+ $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, 'fragment' => $this->randomName()));
+ $identity_stripped = preg_replace('/#.*/', '', $identity);
+
+ // Add invalid identifier to the authmap (identifier has stripped fragment).
+ $this->addIdentity($identity_stripped);
+ $this->drupalLogout();
+
+ // Test logging in via the login form, provider will respond with full
+ // identifier (including fragment) but with different email, so we can't
+ // provide auto-update.
+ variable_set('openid_test_response', array(
+ 'openid.claimed_id' => $identity,
+ 'openid.sreg.nickname' => $this->web_user->name,
+ 'openid.sreg.email' => $this->web_user->mail));
+
+ $this->submitLoginForm($identity_stripped);
+
+ // Verify user was redirected away from user login to an accessible page.
+ $this->assertResponse(200);
+
+ // Verify the message.
+ $this->assertRaw(t('New OpenID identifier %identity was added as a replacement for invalid identifier %invalid_identity.', array('%invalid_identity' => $identity_stripped, '%identity' => $identity)), t('Message that OpenID identifier was added automatically was displayed.'));
+ }
+}
+
+/**
* Test internal helper functions.
*/
class OpenIDUnitTest extends DrupalWebTestCase {