Search in sources :

Example 1 with LoginPasswordUpdatePage

use of org.keycloak.testsuite.pages.LoginPasswordUpdatePage in project keycloak by keycloak.

the class AbstractFirstBrokerLoginTest method testLinkAccountByLogInAsUserAfterResettingPasswordUsingDifferentBrowsers.

/**
 * Refers to in old test suite: org.keycloak.testsuite.broker.AbstractFirstBrokerLoginTest#testLinkAccountByReauthentication_forgetPassword_differentBrowser
 */
@Test
public void testLinkAccountByLogInAsUserAfterResettingPasswordUsingDifferentBrowsers() throws InterruptedException {
    RealmResource realm = adminClient.realm(bc.consumerRealmName());
    RealmRepresentation realmRep = realm.toRepresentation();
    realmRep.setResetPasswordAllowed(true);
    realm.update(realmRep);
    updateExecutions(AbstractBrokerTest::disableUpdateProfileOnFirstLogin);
    String existingUser = createUser("consumer");
    UserResource providerUser = adminClient.realm(bc.providerRealmName()).users().get(userId);
    UserRepresentation userResource = providerUser.toRepresentation();
    userResource.setEmail(USER_EMAIL);
    userResource.setFirstName("FirstName");
    userResource.setLastName("LastName");
    providerUser.update(userResource);
    driver.navigate().to(getAccountUrl(getConsumerRoot(), bc.consumerRealmName()));
    logInWithBroker(bc);
    waitForPage(driver, "account already exists", false);
    idpConfirmLinkPage.assertCurrent();
    idpConfirmLinkPage.clickLinkAccount();
    configureSMTPServer();
    this.loginPage.resetPassword();
    this.loginPasswordResetPage.assertCurrent();
    this.loginPasswordResetPage.changePassword();
    assertEquals("You should receive an email shortly with further instructions.", this.loginPage.getSuccessMessage());
    assertEquals(1, MailServer.getReceivedMessages().length);
    MimeMessage message = MailServer.getLastReceivedMessage();
    String linkFromMail = assertEmailAndGetUrl(MailServerConfiguration.FROM, USER_EMAIL, "credentials", false);
    driver2.navigate().to(linkFromMail.trim());
    removeSMTPConfiguration(realm);
    // Need to update password now
    LoginPasswordUpdatePage passwordUpdatePage = PageFactory.initElements(driver2, LoginPasswordUpdatePage.class);
    passwordUpdatePage.changePassword("password", "password");
    assertNumFederatedIdentities(existingUser, 0);
    log.debug("Clicking social " + bc.getIDPAlias());
    loginPage.clickSocial(bc.getIDPAlias());
    try {
        waitForPage(driver, "account already exists", false);
    } catch (Exception e) {
        // this is a workaround to make this test work for both oidc and saml. when doing oidc the browser is redirected to the login page to finish the linking
        loginPage.login(bc.getUserPassword());
    }
    waitForPage(driver, "account already exists", false);
    idpConfirmLinkPage.assertCurrent();
    idpConfirmLinkPage.clickLinkAccount();
    loginPage.login("password");
    assertNumFederatedIdentities(existingUser, 1);
}
Also used : LoginPasswordUpdatePage(org.keycloak.testsuite.pages.LoginPasswordUpdatePage) MimeMessage(javax.mail.internet.MimeMessage) RealmResource(org.keycloak.admin.client.resource.RealmResource) RealmRepresentation(org.keycloak.representations.idm.RealmRepresentation) UserResource(org.keycloak.admin.client.resource.UserResource) NoSuchElementException(org.openqa.selenium.NoSuchElementException) UserRepresentation(org.keycloak.representations.idm.UserRepresentation) Test(org.junit.Test) VerifyProfileTest(org.keycloak.testsuite.forms.VerifyProfileTest)

Aggregations

MimeMessage (javax.mail.internet.MimeMessage)1 Test (org.junit.Test)1 RealmResource (org.keycloak.admin.client.resource.RealmResource)1 UserResource (org.keycloak.admin.client.resource.UserResource)1 RealmRepresentation (org.keycloak.representations.idm.RealmRepresentation)1 UserRepresentation (org.keycloak.representations.idm.UserRepresentation)1 VerifyProfileTest (org.keycloak.testsuite.forms.VerifyProfileTest)1 LoginPasswordUpdatePage (org.keycloak.testsuite.pages.LoginPasswordUpdatePage)1 NoSuchElementException (org.openqa.selenium.NoSuchElementException)1