Details
diff --git a/testsuite/integration/src/test/java/org/keycloak/testsuite/adapter/CookieTokenStoreAdapterTest.java b/testsuite/integration/src/test/java/org/keycloak/testsuite/adapter/CookieTokenStoreAdapterTest.java
index d4c6fee..e384467 100644
--- a/testsuite/integration/src/test/java/org/keycloak/testsuite/adapter/CookieTokenStoreAdapterTest.java
+++ b/testsuite/integration/src/test/java/org/keycloak/testsuite/adapter/CookieTokenStoreAdapterTest.java
@@ -38,6 +38,9 @@ public class CookieTokenStoreAdapterTest {
@Override
protected void configure(KeycloakSession session, RealmManager manager, RealmModel adminRealm) {
+ // Other tests may left Time offset uncleared, which could cause issues
+ Time.setOffset(0);
+
RealmRepresentation representation = KeycloakServer.loadJson(getClass().getResourceAsStream("/adapter-test/demorealm.json"), RealmRepresentation.class);
manager.importRealm(representation);
@@ -87,52 +90,56 @@ public class CookieTokenStoreAdapterTest {
@Test
public void testTokenInCookieRefresh() throws Throwable {
- // Set token timeout 1 sec
- KeycloakSession session = keycloakRule.startSession();
- RealmModel realm = session.realms().getRealmByName("demo");
- int originalTokenTimeout = realm.getAccessTokenLifespan();
- realm.setAccessTokenLifespan(3);
- session.getTransaction().commit();
- session.close();
-
- // login to customer-cookie-portal
- String tokenCookie1 = loginToCustomerCookiePortal();
-
- // Simulate waiting 4 seconds (Running testsuite in real env like Wildfly or EAP may still require to do Thread.sleep to really wait 4 seconds...)
- Time.setOffset(4);
- //Thread.sleep(4000);
-
- // assert cookie was refreshed
- driver.navigate().to("http://localhost:8081/customer-cookie-portal");
- Assert.assertEquals(driver.getCurrentUrl(), "http://localhost:8081/customer-cookie-portal");
- assertLogged();
- String tokenCookie2 = driver.manage().getCookieNamed(AdapterConstants.KEYCLOAK_ADAPTER_STATE_COOKIE).getValue();
- Assert.assertNotEquals(tokenCookie1, tokenCookie2);
-
- // login to 2nd app and logout from it
- driver.navigate().to("http://localhost:8081/customer-portal");
- Assert.assertEquals(driver.getCurrentUrl(), "http://localhost:8081/customer-portal");
- assertLogged();
-
- driver.navigate().to("http://localhost:8081/customer-portal/logout");
- Assert.assertTrue(driver.getPageSource().contains("servlet logout ok"));
- driver.navigate().to("http://localhost:8081/customer-portal");
- Assert.assertTrue(driver.getCurrentUrl().startsWith(LOGIN_URL));
-
- // Simulate another 4 seconds
- Time.setOffset(8);
-
- // assert not logged in customer-cookie-portal
- driver.navigate().to("http://localhost:8081/customer-cookie-portal");
- Assert.assertTrue(driver.getCurrentUrl().startsWith(LOGIN_URL));
-
- // Change timeout back
- Time.setOffset(0);
- session = keycloakRule.startSession();
- realm = session.realms().getRealmByName("demo");
- realm.setAccessTokenLifespan(originalTokenTimeout);
- session.getTransaction().commit();
- session.close();
+ try {
+ // Set token timeout 1 sec
+ KeycloakSession session = keycloakRule.startSession();
+ RealmModel realm = session.realms().getRealmByName("demo");
+ int originalTokenTimeout = realm.getAccessTokenLifespan();
+ realm.setAccessTokenLifespan(3);
+ session.getTransaction().commit();
+ session.close();
+
+ // login to customer-cookie-portal
+ String tokenCookie1 = loginToCustomerCookiePortal();
+
+ // Simulate waiting 4 seconds (Running testsuite in real env like Wildfly or EAP may still require to do Thread.sleep to really wait 4 seconds...)
+ Time.setOffset(4);
+ //Thread.sleep(4000);
+
+ // assert cookie was refreshed
+ driver.navigate().to("http://localhost:8081/customer-cookie-portal");
+ Assert.assertEquals(driver.getCurrentUrl(), "http://localhost:8081/customer-cookie-portal");
+ assertLogged();
+ String tokenCookie2 = driver.manage().getCookieNamed(AdapterConstants.KEYCLOAK_ADAPTER_STATE_COOKIE).getValue();
+ Assert.assertNotEquals(tokenCookie1, tokenCookie2);
+
+ // login to 2nd app and logout from it
+ driver.navigate().to("http://localhost:8081/customer-portal");
+ Assert.assertEquals(driver.getCurrentUrl(), "http://localhost:8081/customer-portal");
+ assertLogged();
+
+ driver.navigate().to("http://localhost:8081/customer-portal/logout");
+ Assert.assertTrue(driver.getPageSource().contains("servlet logout ok"));
+ driver.navigate().to("http://localhost:8081/customer-portal");
+ Assert.assertTrue(driver.getCurrentUrl().startsWith(LOGIN_URL));
+
+ // Simulate another 4 seconds
+ Time.setOffset(8);
+
+ // assert not logged in customer-cookie-portal
+ driver.navigate().to("http://localhost:8081/customer-cookie-portal");
+ Assert.assertTrue(driver.getCurrentUrl().startsWith(LOGIN_URL));
+
+ // Change timeout back
+ Time.setOffset(0);
+ session = keycloakRule.startSession();
+ realm = session.realms().getRealmByName("demo");
+ realm.setAccessTokenLifespan(originalTokenTimeout);
+ session.getTransaction().commit();
+ session.close();
+ } finally {
+ Time.setOffset(0);
+ }
}
@Test
diff --git a/testsuite/integration/src/test/java/org/keycloak/testsuite/forms/ResetPasswordTest.java b/testsuite/integration/src/test/java/org/keycloak/testsuite/forms/ResetPasswordTest.java
index 5961120..20926f4 100755
--- a/testsuite/integration/src/test/java/org/keycloak/testsuite/forms/ResetPasswordTest.java
+++ b/testsuite/integration/src/test/java/org/keycloak/testsuite/forms/ResetPasswordTest.java
@@ -256,35 +256,39 @@ public class ResetPasswordTest {
@Test
public void resetPasswordExpiredCode() throws IOException, MessagingException, InterruptedException {
- loginPage.open();
- loginPage.resetPassword();
+ try {
+ loginPage.open();
+ loginPage.resetPassword();
- resetPasswordPage.assertCurrent();
+ resetPasswordPage.assertCurrent();
- resetPasswordPage.changePassword("login-test");
+ resetPasswordPage.changePassword("login-test");
- resetPasswordPage.assertCurrent();
+ resetPasswordPage.assertCurrent();
- String sessionId = events.expectRequiredAction(EventType.SEND_RESET_PASSWORD).user(userId).detail(Details.USERNAME, "login-test").detail(Details.EMAIL, "login@test.com").assertEvent().getSessionId();
+ String sessionId = events.expectRequiredAction(EventType.SEND_RESET_PASSWORD).user(userId).detail(Details.USERNAME, "login-test").detail(Details.EMAIL, "login@test.com").assertEvent().getSessionId();
- Assert.assertEquals("You should receive an email shortly with further instructions.", resetPasswordPage.getSuccessMessage());
+ Assert.assertEquals("You should receive an email shortly with further instructions.", resetPasswordPage.getSuccessMessage());
- Assert.assertEquals(1, greenMail.getReceivedMessages().length);
+ Assert.assertEquals(1, greenMail.getReceivedMessages().length);
- MimeMessage message = greenMail.getReceivedMessages()[0];
+ MimeMessage message = greenMail.getReceivedMessages()[0];
- String body = (String) message.getContent();
- String changePasswordUrl = MailUtil.getLink(body);
+ String body = (String) message.getContent();
+ String changePasswordUrl = MailUtil.getLink(body);
- Time.setOffset(350);
+ Time.setOffset(350);
- driver.navigate().to(changePasswordUrl.trim());
+ driver.navigate().to(changePasswordUrl.trim());
- errorPage.assertCurrent();
+ errorPage.assertCurrent();
- Assert.assertEquals("Invalid code, please login again through your application.", errorPage.getError());
+ Assert.assertEquals("Invalid code, please login again through your application.", errorPage.getError());
- events.expectRequiredAction(EventType.RESET_PASSWORD).error("invalid_code").client((String) null).user((String) null).session((String) null).clearDetails().assertEvent();
+ events.expectRequiredAction(EventType.RESET_PASSWORD).error("invalid_code").client((String) null).user((String) null).session((String) null).clearDetails().assertEvent();
+ } finally {
+ Time.setOffset(0);
+ }
}
@Test
diff --git a/testsuite/integration/src/test/java/org/keycloak/testsuite/forms/SyncProvidersTest.java b/testsuite/integration/src/test/java/org/keycloak/testsuite/forms/SyncProvidersTest.java
index 7ec43e6..f256ee0 100755
--- a/testsuite/integration/src/test/java/org/keycloak/testsuite/forms/SyncProvidersTest.java
+++ b/testsuite/integration/src/test/java/org/keycloak/testsuite/forms/SyncProvidersTest.java
@@ -24,6 +24,7 @@ import org.keycloak.testsuite.rule.LDAPRule;
import org.keycloak.testutils.DummyUserFederationProviderFactory;
import org.keycloak.testutils.LDAPEmbeddedServer;
import org.keycloak.timer.TimerProvider;
+import org.keycloak.util.Time;
import org.picketlink.idm.PartitionManager;
import org.picketlink.idm.model.basic.User;
@@ -45,6 +46,9 @@ public class SyncProvidersTest {
@Override
public void config(RealmManager manager, RealmModel adminstrationRealm, RealmModel appRealm) {
+ // Other tests may left Time offset uncleared, which could cause issues
+ Time.setOffset(0);
+
LDAPEmbeddedServer ldapServer = ldapRule.getEmbeddedServer();
Map<String,String> ldapConfig = ldapServer.getLDAPConfig();
ldapConfig.put(LDAPFederationProvider.SYNC_REGISTRATIONS, "false");
@@ -68,7 +72,7 @@ public class SyncProvidersTest {
User user5 = LDAPUtils.addUser(partitionManager, "user5", "User5FN", "User5LN", "user5@email.org");
LDAPUtils.updatePassword(partitionManager, user5, "Password5");
- // Add properties provider
+ // Add dummy provider
dummyModel = appRealm.addUserFederationProvider(DummyUserFederationProviderFactory.PROVIDER_NAME, new HashMap<String, String>(), 1, "test-dummy", -1, 1, 0);
}
});