From 920249b3e8992060113dc37475f21fbdbc79884c Mon Sep 17 00:00:00 2001 From: mposolda Date: Mon, 26 Jan 2015 17:07:12 +0100 Subject: [PATCH] Fixed test failures caused by uncleared Time offset --- .../adapter/CookieTokenStoreAdapterTest.java | 83 ++++++++++--------- .../testsuite/forms/ResetPasswordTest.java | 36 ++++---- .../testsuite/forms/SyncProvidersTest.java | 6 +- 3 files changed, 70 insertions(+), 55 deletions(-) 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 d4c6feedaa..e384467240 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(); + 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(); + // 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); + // 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); + // 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(); + // 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)); + 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); + // 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)); + // 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(); + // 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 59611209be..20926f40c6 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 7ec43e65d8..f256ee008c 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 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(), 1, "test-dummy", -1, 1, 0); } });