keycloak-uncached

Merge pull request #2790 from mhajas/SAML-stability-1.9.x KEYCLOAK-2959

5/6/2016 1:58:54 AM

Details

diff --git a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/adapter/example/AbstractSAMLExampleAdapterTest.java b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/adapter/example/AbstractSAMLExampleAdapterTest.java
index 1495dfa..450c094 100644
--- a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/adapter/example/AbstractSAMLExampleAdapterTest.java
+++ b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/adapter/example/AbstractSAMLExampleAdapterTest.java
@@ -27,14 +27,15 @@ import org.keycloak.testsuite.adapter.page.SAMLPostEncExample;
 import org.keycloak.testsuite.adapter.page.SAMLPostSigExample;
 import org.keycloak.testsuite.adapter.page.SAMLRedirectSigExample;
 import org.keycloak.testsuite.util.URLAssert;
+import org.openqa.selenium.By;
 
 import java.io.File;
 import java.io.IOException;
 import java.util.List;
 
-import static org.junit.Assert.assertTrue;
 import static org.keycloak.testsuite.auth.page.AuthRealm.SAMLDEMO;
 import static org.keycloak.testsuite.util.IOUtil.loadRealm;
+import static org.keycloak.testsuite.util.WaitUtils.waitUntilElement;
 
 /**
  * @author mhajas
@@ -84,7 +85,7 @@ public abstract class AbstractSAMLExampleAdapterTest extends AbstractExampleAdap
         samlPostSigExamplePage.navigateTo();
         testRealmSAMLPostLoginPage.form().login(bburkeUser);
 
-        assertTrue(driver.getPageSource().contains("Welcome to the Sales Tool, " + bburkeUser.getUsername()));
+        waitUntilElement(By.xpath("//body")).text().contains("Welcome to the Sales Tool, " + bburkeUser.getUsername());
 
         samlPostSigExamplePage.logout();
 
@@ -98,7 +99,7 @@ public abstract class AbstractSAMLExampleAdapterTest extends AbstractExampleAdap
 
         testRealmSAMLPostLoginPage.form().login(bburkeUser);
 
-        assertTrue(driver.getPageSource().contains("Welcome to the Sales Tool, " + bburkeUser.getUsername()));
+        waitUntilElement(By.xpath("//body")).text().contains("Welcome to the Sales Tool, " + bburkeUser.getUsername());
 
         samlPostEncExamplePage.logout();
 
@@ -112,7 +113,7 @@ public abstract class AbstractSAMLExampleAdapterTest extends AbstractExampleAdap
 
         testRealmSAMLRedirectLoginPage.form().login(bburkeUser);
 
-        assertTrue(driver.getPageSource().contains("Welcome to the Employee Tool,"));
+        waitUntilElement(By.xpath("//body")).text().contains("Welcome to the Employee Tool,");
 
         samlRedirectSigExamplePage.logout();
 
diff --git a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/adapter/servlet/AbstractSAMLServletsAdapterTest.java b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/adapter/servlet/AbstractSAMLServletsAdapterTest.java
index 62ac226..0034f36 100644
--- a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/adapter/servlet/AbstractSAMLServletsAdapterTest.java
+++ b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/adapter/servlet/AbstractSAMLServletsAdapterTest.java
@@ -24,20 +24,26 @@ import org.junit.Test;
 import org.keycloak.admin.client.resource.ClientResource;
 import org.keycloak.representations.idm.ClientRepresentation;
 import org.keycloak.representations.idm.RealmRepresentation;
+import org.keycloak.representations.idm.UserRepresentation;
 import org.keycloak.testsuite.adapter.AbstractServletsAdapterTest;
 import org.keycloak.testsuite.adapter.page.*;
 import org.keycloak.testsuite.admin.ApiUtil;
+import org.keycloak.testsuite.auth.page.login.Login;
 import org.keycloak.testsuite.auth.page.login.SAMLIDPInitiatedLogin;
+import org.keycloak.testsuite.page.AbstractPage;
 import org.keycloak.testsuite.util.IOUtil;
+import org.openqa.selenium.By;
 import org.w3c.dom.Document;
 
 import javax.ws.rs.core.Response;
 import java.util.List;
 
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
 import static org.keycloak.testsuite.auth.page.AuthRealm.SAMLSERVLETDEMO;
 import static org.keycloak.testsuite.util.IOUtil.*;
 import static org.keycloak.testsuite.util.URLAssert.assertCurrentUrlStartsWith;
+import static org.keycloak.testsuite.util.WaitUtils.waitUntilElement;
 
 /**
  * @author mhajas
@@ -163,6 +169,40 @@ public abstract class AbstractSAMLServletsAdapterTest extends AbstractServletsAd
         testRealmSAMLPostLoginPage.setAuthRealm(SAMLSERVLETDEMO);
     }
 
+    private void assertForbidden(AbstractPage page) {
+        page.navigateTo();
+        waitUntilElement(By.xpath("//body")).text().not().contains("principal=");
+        assertTrue(driver.getPageSource().contains("Forbidden") || driver.getPageSource().contains("Status 403"));
+    }
+
+    private void assertSuccessfullyLoggedIn(AbstractPage page) {
+        page.navigateTo();
+        waitUntilElement(By.xpath("//body")).text().contains("principal=bburke");
+    }
+
+    private void assertForbiddenLogin(AbstractPage page, String username, String password, Login loginPage) {
+        page.navigateTo();
+        assertCurrentUrlStartsWith(loginPage);
+        loginPage.form().login(username, password);
+        waitUntilElement(By.xpath("//body")).text().not().contains("principal=");
+        //Different 403 status page on EAP and Wildfly
+        assertTrue(driver.getPageSource().contains("Forbidden") || driver.getPageSource().contains("Status 403"));
+    }
+
+    private void assertSuccessfulLogin(AbstractPage page, UserRepresentation user, Login loginPage) {
+        page.navigateTo();
+        assertCurrentUrlStartsWith(loginPage);
+        loginPage.form().login(user);
+        waitUntilElement(By.xpath("//body")).text().contains("principal=bburke");
+    }
+
+    private void testSuccessfulAndUnauthorizedLogin(SAMLServletWithLogout page, Login loginPage) {
+        assertSuccessfulLogin(page, bburkeUser, loginPage);
+        page.logout();
+        assertForbiddenLogin(page, "unauthorized", "password", loginPage);
+        page.logout();
+    }
+
     @Test
     public void disabledClientTest() {
         ClientResource clientResource = ApiUtil.findClientResourceByClientId(testRealmResource(), "http://localhost:8081/sales-post-sig/");
@@ -171,7 +211,7 @@ public abstract class AbstractSAMLServletsAdapterTest extends AbstractServletsAd
         clientResource.update(client);
 
         salesPostSigServletPage.navigateTo();
-        assertTrue(driver.getPageSource().contains("Login requester not enabled"));
+        waitUntilElement(By.xpath("//body")).text().contains("Login requester not enabled");
 
         client.setEnabled(true);
         clientResource.update(client);
@@ -179,41 +219,20 @@ public abstract class AbstractSAMLServletsAdapterTest extends AbstractServletsAd
 
     @Test
     public void unauthorizedSSOTest() {
-        salesPostServletPage.navigateTo();
-        testRealmSAMLRedirectLoginPage.form().login("unauthorized", "password");
-
-        assertFalse(driver.getPageSource().contains("principal="));
-        assertTrue(driver.getPageSource().contains("Forbidden") || driver.getPageSource().contains("Status 403"));
-
-        employee2ServletPage.navigateTo();
-        assertFalse(driver.getPageSource().contains("principal="));
-        assertTrue(driver.getPageSource().contains("Forbidden") || driver.getPageSource().contains("Status 403"));
-
-        employeeSigFrontServletPage.navigateTo();
-        assertFalse(driver.getPageSource().contains("principal="));
-        assertTrue(driver.getPageSource().contains("Forbidden") || driver.getPageSource().contains("Status 403"));
-
-        salesPostSigPersistentServletPage.navigateTo();
-        assertFalse(driver.getPageSource().contains("principal="));
-        assertTrue(driver.getPageSource().contains("Forbidden") || driver.getPageSource().contains("Status 403"));
+        assertForbiddenLogin(salesPostServletPage, "unauthorized", "password", testRealmSAMLPostLoginPage);
+        assertForbidden(employee2ServletPage);
+        assertForbidden(employeeSigFrontServletPage);
+        assertForbidden(salesPostSigPersistentServletPage);
 
         salesPostServletPage.logout();
     }
 
     @Test
     public void singleLoginAndLogoutSAMLTest() {
-        salesPostServletPage.navigateTo();
-        testRealmSAMLRedirectLoginPage.form().login(bburkeUser);
-        assertTrue(driver.getPageSource().contains("principal=bburke"));
-
-        salesPostSigServletPage.navigateTo();
-        assertTrue(driver.getPageSource().contains("principal=bburke"));
-
-        employee2ServletPage.navigateTo();
-        assertTrue(driver.getPageSource().contains("principal=bburke"));
-
-        salesPostEncServletPage.navigateTo();
-        assertTrue(driver.getPageSource().contains("principal=bburke"));
+        assertSuccessfulLogin(salesPostServletPage, bburkeUser, testRealmSAMLPostLoginPage);
+        assertSuccessfullyLoggedIn(salesPostSigServletPage);
+        assertSuccessfullyLoggedIn(employee2ServletPage);
+        assertSuccessfullyLoggedIn(salesPostEncServletPage);
 
         employeeSigFrontServletPage.logout();
 
@@ -224,6 +243,7 @@ public abstract class AbstractSAMLServletsAdapterTest extends AbstractServletsAd
         assertCurrentUrlStartsWith(testRealmSAMLRedirectLoginPage);
 
         salesPostPassiveServletPage.navigateTo();
+        waitUntilElement(By.xpath("//body")).text().not().contains("principal=");
         assertTrue(driver.getPageSource().contains("Forbidden") || driver.getPageSource().contains("<body></body>") || driver.getPageSource().contains("<body><pre></pre></body>"));
 
         salesPostSigEmailServletPage.navigateTo();
@@ -233,7 +253,7 @@ public abstract class AbstractSAMLServletsAdapterTest extends AbstractServletsAd
     @Test
     public void badClientSalesPostSigTest() {
         badClientSalesPostSigServletPage.navigateTo();
-        assertTrue(driver.getPageSource().contains("invalidRequesterMessage"));
+        waitUntilElement(By.xpath("//body")).text().contains("invalidRequesterMessage");
     }
 
     @Test
@@ -241,59 +261,24 @@ public abstract class AbstractSAMLServletsAdapterTest extends AbstractServletsAd
         badRealmSalesPostSigServletPage.navigateTo();
         testRealmSAMLRedirectLoginPage.form().login(bburkeUser);
 
+        waitUntilElement(By.xpath("//body")).text().not().contains("principal=");
         //Different 403 status page on EAP and Wildfly
         assertTrue(driver.getPageSource().contains("Forbidden") || driver.getPageSource().contains("Status 403"));
     }
 
     @Test
     public void employee2Test() {
-        employee2ServletPage.navigateTo();
-        testRealmSAMLPostLoginPage.form().login(bburkeUser);
-        assertTrue(driver.getPageSource().contains("principal=bburke"));
-
-        employee2ServletPage.logout();
-        employee2ServletPage.navigateTo();
-        assertCurrentUrlStartsWith(testRealmSAMLPostLoginPage);
-
-        testRealmSAMLPostLoginPage.form().login("unauthorized", "password");
-        assertFalse(driver.getPageSource().contains("principal="));
-        //Different 403 status page on EAP and Wildfly
-        assertTrue(driver.getPageSource().contains("Forbidden") || driver.getPageSource().contains("Status 403"));
-        employee2ServletPage.logout();
+        testSuccessfulAndUnauthorizedLogin(employee2ServletPage, testRealmSAMLPostLoginPage);
     }
 
     @Test
     public void employeeSigTest() {
-        employeeSigServletPage.navigateTo();
-        testRealmSAMLRedirectLoginPage.form().login(bburkeUser);
-        assertTrue(driver.getPageSource().contains("principal=bburke"));
-
-        employeeSigServletPage.logout();
-        employeeSigServletPage.navigateTo();
-        assertCurrentUrlStartsWith(testRealmSAMLRedirectLoginPage);
-
-        testRealmSAMLRedirectLoginPage.form().login("unauthorized", "password");
-        assertFalse(driver.getPageSource().contains("principal="));
-        //Different 403 status page on EAP and Wildfly
-        assertTrue(driver.getPageSource().contains("Forbidden") || driver.getPageSource().contains("Status 403"));
-        employeeSigServletPage.logout();
+        testSuccessfulAndUnauthorizedLogin(employeeSigServletPage, testRealmSAMLRedirectLoginPage);
     }
 
     @Test
     public void employeeSigFrontTest() {
-        employeeSigFrontServletPage.navigateTo();
-        testRealmSAMLRedirectLoginPage.form().login(bburkeUser);
-        assertTrue(driver.getPageSource().contains("principal=bburke"));
-
-        employeeSigFrontServletPage.logout();
-        employeeSigFrontServletPage.navigateTo();
-        assertCurrentUrlStartsWith(testRealmSAMLRedirectLoginPage);
-
-        testRealmSAMLRedirectLoginPage.form().login("unauthorized", "password");
-        assertFalse(driver.getPageSource().contains("principal="));
-        //Different 403 status page on EAP and Wildfly
-        assertTrue(driver.getPageSource().contains("Forbidden") || driver.getPageSource().contains("Status 403"));
-        employeeSigFrontServletPage.logout();
+        testSuccessfulAndUnauthorizedLogin(employeeSigFrontServletPage, testRealmSAMLRedirectLoginPage);
     }
 
     @Test
@@ -318,130 +303,64 @@ public abstract class AbstractSAMLServletsAdapterTest extends AbstractServletsAd
         assertEquals(201, response.getStatus());
         response.close();
 
-        salesMetadataServletPage.navigateTo();
-        testRealmSAMLPostLoginPage.form().login(bburkeUser);
-        assertTrue(driver.getPageSource().contains("principal=bburke"));
-
-        salesMetadataServletPage.logout();
-        salesMetadataServletPage.navigateTo();
-        assertCurrentUrlStartsWith(testRealmSAMLPostLoginPage);
-
-        testRealmSAMLPostLoginPage.form().login("unauthorized", "password");
-        assertFalse(driver.getPageSource().contains("principal="));
-        //Different 403 status page on EAP and Wildfly
-        assertTrue(driver.getPageSource().contains("Forbidden") || driver.getPageSource().contains("Status 403"));
-        salesMetadataServletPage.logout();
+        testSuccessfulAndUnauthorizedLogin(salesMetadataServletPage, testRealmSAMLPostLoginPage);
     }
 
     @Test
     public void salesPostTest() {
-        salesPostServletPage.navigateTo();
-        testRealmSAMLPostLoginPage.form().login(bburkeUser);
-        assertTrue(driver.getPageSource().contains("principal=bburke"));
-
-        salesPostServletPage.logout();
-        salesPostServletPage.navigateTo();
-        assertCurrentUrlStartsWith(testRealmSAMLPostLoginPage);
-
-        testRealmSAMLPostLoginPage.form().login("unauthorized", "password");
-        assertFalse(driver.getPageSource().contains("principal="));
-        //Different 403 status page on EAP and Wildfly
-        assertTrue(driver.getPageSource().contains("Forbidden") || driver.getPageSource().contains("Status 403"));
-        salesPostServletPage.logout();
+        testSuccessfulAndUnauthorizedLogin(salesPostServletPage, testRealmSAMLPostLoginPage);
     }
 
     @Test
     public void salesPostEncTest() {
-        salesPostEncServletPage.navigateTo();
-        testRealmSAMLPostLoginPage.form().login(bburkeUser);
-        assertTrue(driver.getPageSource().contains("principal=bburke"));
-
-        salesPostEncServletPage.logout();
-        salesPostEncServletPage.navigateTo();
-        assertCurrentUrlStartsWith(testRealmSAMLPostLoginPage);
-
-        testRealmSAMLPostLoginPage.form().login("unauthorized", "password");
-        assertFalse(driver.getPageSource().contains("principal="));
-        //Different 403 status page on EAP and Wildfly
-        assertTrue(driver.getPageSource().contains("Forbidden") || driver.getPageSource().contains("Status 403"));
-        salesPostEncServletPage.logout();
+        testSuccessfulAndUnauthorizedLogin(salesPostEncServletPage, testRealmSAMLPostLoginPage);
     }
 
     @Test
     public void salesPostPassiveTest() {
         salesPostPassiveServletPage.navigateTo();
+
+        waitUntilElement(By.xpath("//body")).text().not().contains("principal=");
         //Different 403 status page on EAP and Wildfly
         assertTrue(driver.getPageSource().contains("Forbidden") || driver.getPageSource().contains("<body></body>") || driver.getPageSource().contains("<body><pre></pre></body>"));
 
-        salesPostServletPage.navigateTo();
-        testRealmSAMLRedirectLoginPage.form().login(bburkeUser);
+        assertSuccessfulLogin(salesPostServletPage, bburkeUser, testRealmSAMLPostLoginPage);
 
-        salesPostPassiveServletPage.navigateTo();
-        assertTrue(driver.getPageSource().contains("principal=bburke"));
+        assertSuccessfullyLoggedIn(salesPostPassiveServletPage);
 
         salesPostPassiveServletPage.logout();
         salesPostPassiveServletPage.navigateTo();
+
+        waitUntilElement(By.xpath("//body")).text().not().contains("principal=");
         //Different 403 status page on EAP and Wildfly
         assertTrue(driver.getPageSource().contains("Forbidden") || driver.getPageSource().contains("<body></body>") || driver.getPageSource().contains("<body><pre></pre></body>"));
 
-        salesPostServletPage.navigateTo();
-        testRealmSAMLRedirectLoginPage.form().login("unauthorized", "password");
-        salesPostPassiveServletPage.navigateTo();
-        assertFalse(driver.getPageSource().contains("principal="));
-        //Different 403 status page on EAP and Wildfly
-        assertTrue(driver.getPageSource().contains("Forbidden") || driver.getPageSource().contains("Status 403"));
+        assertForbiddenLogin(salesPostServletPage, "unauthorized", "password", testRealmSAMLPostLoginPage);
+        assertForbidden(salesPostPassiveServletPage);
+
         salesPostPassiveServletPage.logout();
     }
 
     @Test
     public void salesPostSigTest() {
-        salesPostEncServletPage.navigateTo();
-        testRealmSAMLPostLoginPage.form().login(bburkeUser);
-        assertTrue(driver.getPageSource().contains("principal=bburke"));
-
-        salesPostEncServletPage.logout();
-        salesPostEncServletPage.navigateTo();
-        assertCurrentUrlStartsWith(testRealmSAMLPostLoginPage);
-
-        testRealmSAMLPostLoginPage.form().login("unauthorized", "password");
-        assertFalse(driver.getPageSource().contains("principal="));
-        //Different 403 status page on EAP and Wildfly
-        assertTrue(driver.getPageSource().contains("Forbidden") || driver.getPageSource().contains("Status 403"));
-        salesPostEncServletPage.logout();
+        testSuccessfulAndUnauthorizedLogin(salesPostSigServletPage, testRealmSAMLPostLoginPage);
     }
 
     @Test
     public void salesPostSigEmailTest() {
-        salesPostSigEmailServletPage.navigateTo();
-        testRealmSAMLPostLoginPage.form().login(bburkeUser);
-        assertTrue(driver.getPageSource().contains("principal=bburke"));
-
-        salesPostSigEmailServletPage.logout();
-        salesPostSigEmailServletPage.navigateTo();
-        assertCurrentUrlStartsWith(testRealmSAMLPostLoginPage);
-
-        testRealmSAMLPostLoginPage.form().login("unauthorized", "password");
-        assertFalse(driver.getPageSource().contains("principal="));
-        //Different 403 status page on EAP and Wildfly
-        assertTrue(driver.getPageSource().contains("Forbidden") || driver.getPageSource().contains("Status 403"));
-        salesPostSigEmailServletPage.logout();
+        testSuccessfulAndUnauthorizedLogin(salesPostSigEmailServletPage, testRealmSAMLPostLoginPage);
     }
 
     @Test
     public void salesPostSigPersistentTest() {
         salesPostSigPersistentServletPage.navigateTo();
         testRealmSAMLPostLoginPage.form().login(bburkeUser);
-        assertFalse(driver.getPageSource().contains("bburke"));
-        assertTrue(driver.getPageSource().contains("principal=G-"));
+        waitUntilElement(By.xpath("//body")).text().not().contains("bburke");
+        waitUntilElement(By.xpath("//body")).text().contains("principal=G-");
 
         salesPostSigPersistentServletPage.logout();
-        salesPostSigPersistentServletPage.navigateTo();
-        assertCurrentUrlStartsWith(testRealmSAMLPostLoginPage);
 
-        testRealmSAMLPostLoginPage.form().login("unauthorized", "password");
-        assertFalse(driver.getPageSource().contains("principal="));
-        //Different 403 status page on EAP and Wildfly
-        assertTrue(driver.getPageSource().contains("Forbidden") || driver.getPageSource().contains("Status 403"));
+        assertForbiddenLogin(salesPostSigPersistentServletPage, "unauthorized", "password", testRealmSAMLPostLoginPage);
         salesPostSigPersistentServletPage.logout();
     }
 
@@ -449,32 +368,25 @@ public abstract class AbstractSAMLServletsAdapterTest extends AbstractServletsAd
     public void salesPostSigTransientTest() {
         salesPostSigTransientServletPage.navigateTo();
         testRealmSAMLPostLoginPage.form().login(bburkeUser);
-        assertFalse(driver.getPageSource().contains("bburke"));
-        assertTrue(driver.getPageSource().contains("principal=G-"));
+        waitUntilElement(By.xpath("//body")).text().not().contains("bburke");
+        waitUntilElement(By.xpath("//body")).text().contains("principal=G-");
 
         salesPostSigTransientServletPage.logout();
-        salesPostSigTransientServletPage.navigateTo();
-        assertCurrentUrlStartsWith(testRealmSAMLPostLoginPage);
 
-        testRealmSAMLPostLoginPage.form().login("unauthorized", "password");
-        assertFalse(driver.getPageSource().contains("principal="));
-        //Different 403 status page on EAP and Wildfly
-        assertTrue(driver.getPageSource().contains("Forbidden") || driver.getPageSource().contains("Status 403"));
+        assertForbiddenLogin(salesPostSigTransientServletPage, "unauthorized", "password", testRealmSAMLPostLoginPage);
         salesPostSigTransientServletPage.logout();
     }
 
     @Test
-    public void  idpInitiatedLogin() {
+    public void idpInitiatedLogin() {
         samlidpInitiatedLogin.setAuthRealm(SAMLSERVLETDEMO);
         samlidpInitiatedLogin.setUrlName("employee2");
         samlidpInitiatedLogin.navigateTo();
         samlidpInitiatedLogin.form().login(bburkeUser);
 
-        employee2ServletPage.navigateTo();
-        assertTrue(driver.getPageSource().contains("principal=bburke"));
+        waitUntilElement(By.xpath("//body")).text().contains("principal=bburke");
 
-        salesPostSigServletPage.navigateTo();
-        assertTrue(driver.getPageSource().contains("principal=bburke"));
+        assertSuccessfullyLoggedIn(salesPostSigServletPage);
 
         employee2ServletPage.logout();
     }
@@ -484,15 +396,12 @@ public abstract class AbstractSAMLServletsAdapterTest extends AbstractServletsAd
         samlidpInitiatedLogin.setAuthRealm(SAMLSERVLETDEMO);
         samlidpInitiatedLogin.setUrlName("employee2");
         samlidpInitiatedLogin.navigateTo();
-        samlidpInitiatedLogin.form().login("unauthorized","password");
-
-        assertFalse(driver.getPageSource().contains("principal="));
-        assertTrue(driver.getPageSource().contains("Forbidden") || driver.getPageSource().contains("Status 403"));
+        samlidpInitiatedLogin.form().login("unauthorized", "password");
 
-        employee2ServletPage.navigateTo();
-        assertFalse(driver.getPageSource().contains("principal="));
+        waitUntilElement(By.xpath("//body")).text().not().contains("bburke");
         assertTrue(driver.getPageSource().contains("Forbidden") || driver.getPageSource().contains("Status 403"));
 
+        assertForbidden(employee2ServletPage);
         employee2ServletPage.logout();
     }
 }