keycloak-aplcache

Details

diff --git a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/adapter/servlet/AbstractDemoServletsAdapterTest.java b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/adapter/servlet/AbstractDemoServletsAdapterTest.java
index 6a7986a..d3ceeb8 100644
--- a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/adapter/servlet/AbstractDemoServletsAdapterTest.java
+++ b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/adapter/servlet/AbstractDemoServletsAdapterTest.java
@@ -27,7 +27,6 @@ import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
 import org.keycloak.OAuth2Constants;
-import org.keycloak.adapters.OIDCAuthenticationError;
 import org.keycloak.admin.client.resource.ClientResource;
 import org.keycloak.common.util.Time;
 import org.keycloak.constants.AdapterConstants;
@@ -95,6 +94,7 @@ import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
+import static org.hamcrest.Matchers.allOf;
 import static org.hamcrest.Matchers.anyOf;
 import static org.hamcrest.Matchers.containsString;
 import static org.hamcrest.Matchers.notNullValue;
@@ -108,6 +108,7 @@ import static org.junit.Assert.assertTrue;
 import static org.keycloak.testsuite.auth.page.AuthRealm.DEMO;
 import static org.keycloak.testsuite.util.URLAssert.assertCurrentUrlEquals;
 import static org.keycloak.testsuite.util.URLAssert.assertCurrentUrlStartsWithLoginUrlOf;
+import static org.keycloak.testsuite.util.WaitUtils.pause;
 import static org.keycloak.testsuite.util.WaitUtils.waitForPageToLoad;
 
 /**
@@ -163,7 +164,7 @@ public abstract class AbstractDemoServletsAdapterTest extends AbstractServletsAd
 
     @Deployment(name = CustomerCookiePortal.DEPLOYMENT_NAME)
     protected static WebArchive customerCookiePortal() {
-        return servletDeployment(CustomerCookiePortal.DEPLOYMENT_NAME, CustomerServlet.class, ErrorServlet.class, ServletTestUtils.class);
+        return servletDeployment(CustomerCookiePortal.DEPLOYMENT_NAME, AdapterActionsFilter.class, CustomerServlet.class, ErrorServlet.class, ServletTestUtils.class);
     }
     
     @Deployment(name = CustomerPortalNoConf.DEPLOYMENT_NAME)
@@ -271,17 +272,17 @@ public abstract class AbstractDemoServletsAdapterTest extends AbstractServletsAd
     public void testTokenInCookieRefresh() {
         // Set token timeout 3 sec
         RealmRepresentation demo = adminClient.realm("demo").toRepresentation();
-        int originalTokenTimeout = demo.getAccessCodeLifespan();
-        demo.setAccessTokenLifespan(3);
+        int originalTokenTimeout = demo.getAccessTokenLifespan();
+        demo.setAccessTokenLifespan(10);
         adminClient.realm("demo").update(demo);
-        
+
         try {
             // login to customer-cookie-portal
             String tokenCookie1 = loginToCustomerCookiePortal();
             
-            // Simulate waiting 4 seconds
-            setTimeOffset(4);
-            
+            // Simulate waiting 12 seconds
+            setAdapterAndServerTimeOffset(12, customerCookiePortal.toString());
+
             // assert cookie was refreshed
             customerCookiePortal.navigateTo();
             assertCurrentUrlEquals(customerCookiePortal);
@@ -295,25 +296,35 @@ public abstract class AbstractDemoServletsAdapterTest extends AbstractServletsAd
             assertLogged();
             
             driver.navigate().to(customerCookiePortal.logoutURL());
+
+            pause(200); // can't use wait utils as logout page is only TextPage without elements -> can't use By.tagName("body")
             assertTrue(driver.getPageSource().contains("servlet logout ok"));
+
             customerPortal.navigateTo();
             assertCurrentUrlStartsWithLoginUrlOf(testRealmPage);
             
-            // Simulate another 4 seconds
-            setTimeOffset(8);
+            // Simulate another 12 seconds
+            setAdapterAndServerTimeOffset(24, customerCookiePortal.toString());
             
             // assert not logged in customer-cookie-portal
             customerCookiePortal.navigateTo();
             assertCurrentUrlStartsWithLoginUrlOf(testRealmPage);
         } finally {
+            loginToCustomerCookiePortal();
+
+            setAdapterAndServerTimeOffset(0, customerCookiePortal.toString());
+
+            driver.navigate().to(customerCookiePortal.logoutURL());
+            pause(200); // can't use wait utils as logout page is only TextPage without elements -> can't use By.tagName("body")
+            assertTrue(driver.getPageSource().contains("servlet logout ok"));
+
             // Set token timeout 3 sec
             demo.setAccessTokenLifespan(originalTokenTimeout);
             adminClient.realm("demo").update(demo);
-            
-            resetTimeOffset();
+
         }
     }
-    
+
     //KEYCLOAK-702
     @Test
     public void testInvalidTokenCookie() {
@@ -584,31 +595,21 @@ public abstract class AbstractDemoServletsAdapterTest extends AbstractServletsAd
     //KEYCLOAK-1368
     @Test
     public void testNullBearerTokenCustomErrorPage() {
-        ErrorServlet.authError = null;
         Client client = ClientBuilder.newClient();
         WebTarget target = client.target(customerDbErrorPage.toString());
         
         Response response = target.request().get();
-
         assertEquals(401, response.getStatus());
         String errorPageResponse = response.readEntity(String.class);
-        assertTrue(errorPageResponse.contains("Error Page"));
+        assertThat(errorPageResponse, allOf(containsString("reason=NO_BEARER_TOKEN"), containsString("Error Page")));
         response.close();
-        Assert.assertNotNull(ErrorServlet.authError);
-        OIDCAuthenticationError error = (OIDCAuthenticationError) ErrorServlet.authError;
-        Assert.assertEquals(OIDCAuthenticationError.Reason.NO_BEARER_TOKEN, error.getReason());
 
-        ErrorServlet.authError = null;
         response = target.request().header(HttpHeaders.AUTHORIZATION, "Bearer null").get();
-
         assertEquals(401, response.getStatus());
         errorPageResponse = response.readEntity(String.class);
-        assertTrue(errorPageResponse.contains("Error Page"));
+        assertThat(errorPageResponse, allOf(containsString("Error Page"), containsString("reason=INVALID_TOKEN")));
         response.close();
-        Assert.assertNotNull(ErrorServlet.authError);
-        error = (OIDCAuthenticationError) ErrorServlet.authError;
-        Assert.assertEquals(OIDCAuthenticationError.Reason.INVALID_TOKEN, error.getReason());
-        
+
         client.close();
     }
 
@@ -742,6 +743,7 @@ public abstract class AbstractDemoServletsAdapterTest extends AbstractServletsAd
         securePortal.navigateTo();
         assertCurrentUrlStartsWithLoginUrlOf(testRealmPage);
         testRealmLoginPage.form().login("bburke@redhat.com", "password");
+        waitForPageToLoad();
         assertCurrentUrlEquals(securePortal);
         String pageSource = driver.getPageSource();
         assertTrue(pageSource.contains("Bill Burke") && pageSource.contains("Stian Thorgersen"));
diff --git a/testsuite/integration-arquillian/tests/base/src/test/resources/adapter-test/customer-cookie-portal/WEB-INF/web.xml b/testsuite/integration-arquillian/tests/base/src/test/resources/adapter-test/customer-cookie-portal/WEB-INF/web.xml
index a744f9e..e3aef1d 100644
--- a/testsuite/integration-arquillian/tests/base/src/test/resources/adapter-test/customer-cookie-portal/WEB-INF/web.xml
+++ b/testsuite/integration-arquillian/tests/base/src/test/resources/adapter-test/customer-cookie-portal/WEB-INF/web.xml
@@ -32,6 +32,11 @@
         <servlet-class>org.keycloak.testsuite.adapter.servlet.ErrorServlet</servlet-class>
     </servlet>
 
+    <filter>
+        <filter-name>AdapterActionsFilter</filter-name>
+        <filter-class>org.keycloak.testsuite.adapter.filter.AdapterActionsFilter</filter-class>
+    </filter>
+
     <servlet-mapping>
         <servlet-name>Servlet</servlet-name>
         <url-pattern>/*</url-pattern>
@@ -42,6 +47,11 @@
         <url-pattern>/error.html</url-pattern>
     </servlet-mapping>
 
+    <filter-mapping>
+        <filter-name>AdapterActionsFilter</filter-name>
+        <url-pattern>/*</url-pattern>
+    </filter-mapping>
+
     <security-constraint>
         <web-resource-collection>
             <web-resource-name>Users</web-resource-name>