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);
}
Aggregations