keycloak-aplcache

Details

diff --git a/testsuite/integration-arquillian/tests/adapters/wildfly-relative/src/test/java/org/keycloak/testsuite/adapter/servlet/WildflyRelativeSAMLServletsAdapterTest.java b/testsuite/integration-arquillian/tests/adapters/wildfly-relative/src/test/java/org/keycloak/testsuite/adapter/servlet/WildflyRelativeSAMLServletsAdapterTest.java
new file mode 100644
index 0000000..9fbdf5a
--- /dev/null
+++ b/testsuite/integration-arquillian/tests/adapters/wildfly-relative/src/test/java/org/keycloak/testsuite/adapter/servlet/WildflyRelativeSAMLServletsAdapterTest.java
@@ -0,0 +1,11 @@
+package org.keycloak.testsuite.adapter.servlet;
+
+import org.keycloak.testsuite.arquillian.annotation.AdapterLibsLocationProperty;
+
+/**
+ * @author mhajas
+ */
+@AdapterLibsLocationProperty("adapter.libs.wildfly")
+public class WildflyRelativeSAMLServletsAdapterTest extends AbstractSAMLServletsAdapterTest {
+
+}
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
new file mode 100644
index 0000000..8a54b93
--- /dev/null
+++ b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/adapter/servlet/AbstractSAMLServletsAdapterTest.java
@@ -0,0 +1,419 @@
+package org.keycloak.testsuite.adapter.servlet;
+
+import org.jboss.arquillian.container.test.api.Deployment;
+import org.jboss.arquillian.graphene.page.Page;
+import org.jboss.shrinkwrap.api.spec.WebArchive;
+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.testsuite.adapter.AbstractServletsAdapterTest;
+import org.keycloak.testsuite.adapter.page.*;
+import org.keycloak.testsuite.admin.ApiUtil;
+import org.keycloak.testsuite.util.IOUtil;
+import org.w3c.dom.Document;
+
+import javax.ws.rs.core.Response;
+import java.util.List;
+
+import static com.mongodb.util.MyAsserts.assertFalse;
+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;
+
+/**
+ * @author mhajas
+ */
+public class AbstractSAMLServletsAdapterTest extends AbstractServletsAdapterTest {
+    @Page
+    private BadClientSalesPostSigServlet badClientSalesPostSigServletPage;
+
+    @Page
+    private BadRealmSalesPostSigServlet badRealmSalesPostSigServletPage;
+
+    @Page
+    private Employee2Servlet employee2ServletPage;
+
+    @Page
+    private EmployeeSigServlet employeeSigServletPage;
+
+    @Page
+    private EmployeeSigFrontServlet employeeSigFrontServletPage;
+
+    @Page
+    private SalesMetadataServlet salesMetadataServletPage;
+
+    @Page
+    private SalesPostServlet salesPostServletPage;
+
+    @Page
+    private SalesPostEncServlet salesPostEncServletPage;
+
+    @Page
+    private SalesPostPassiveServlet salesPostPassiveServletPage;
+
+    @Page
+    private SalesPostSigServlet salesPostSigServletPage;
+
+    @Page
+    private SalesPostSigEmailServlet salesPostSigEmailServletPage;
+
+    @Page
+    private SalesPostSigPersistentServlet salesPostSigPersistentServletPage;
+
+    @Page
+    private SalesPostSigTransientServlet salesPostSigTransientServletPage;
+
+    @Deployment(name = BadClientSalesPostSigServlet.DEPLOYMENT_NAME)
+    protected static WebArchive badClientSalesPostSig() {
+        return samlServletDeployment(BadClientSalesPostSigServlet.DEPLOYMENT_NAME, SendUsernameServlet.class);
+    }
+
+    @Deployment(name = BadRealmSalesPostSigServlet.DEPLOYMENT_NAME)
+    protected static WebArchive badRealmSalesPostSig() {
+        return samlServletDeployment(BadRealmSalesPostSigServlet.DEPLOYMENT_NAME, SendUsernameServlet.class);
+    }
+
+    @Deployment(name = Employee2Servlet.DEPLOYMENT_NAME)
+    protected static WebArchive employee2() {
+        return samlServletDeployment(Employee2Servlet.DEPLOYMENT_NAME, SendUsernameServlet.class);
+    }
+
+    @Deployment(name = EmployeeSigServlet.DEPLOYMENT_NAME)
+    protected static WebArchive employeeSig() {
+        return samlServletDeployment(EmployeeSigServlet.DEPLOYMENT_NAME, SendUsernameServlet.class);
+    }
+
+    @Deployment(name = EmployeeSigFrontServlet.DEPLOYMENT_NAME)
+    protected static WebArchive employeeSigFront() {
+        return samlServletDeployment(EmployeeSigFrontServlet.DEPLOYMENT_NAME, SendUsernameServlet.class);
+    }
+
+    @Deployment(name = SalesMetadataServlet.DEPLOYMENT_NAME)
+    protected static WebArchive salesMetadata() {
+        return samlServletDeployment(SalesMetadataServlet.DEPLOYMENT_NAME, SendUsernameServlet.class);
+    }
+
+    @Deployment(name = SalesPostServlet.DEPLOYMENT_NAME)
+    protected static WebArchive salesPost() {
+        return samlServletDeployment(SalesPostServlet.DEPLOYMENT_NAME, SendUsernameServlet.class);
+    }
+
+    @Deployment(name = SalesPostEncServlet.DEPLOYMENT_NAME)
+    protected static WebArchive salesPostEnc() {
+        return samlServletDeployment(SalesPostEncServlet.DEPLOYMENT_NAME, SendUsernameServlet.class);
+    }
+
+    @Deployment(name = SalesPostPassiveServlet.DEPLOYMENT_NAME)
+    protected static WebArchive salesPostPassive() {
+        return samlServletDeployment(SalesPostPassiveServlet.DEPLOYMENT_NAME, SendUsernameServlet.class);
+    }
+
+    @Deployment(name = SalesPostSigServlet.DEPLOYMENT_NAME)
+    protected static WebArchive salesPostSig() {
+        return samlServletDeployment(SalesPostSigServlet.DEPLOYMENT_NAME, SendUsernameServlet.class);
+    }
+
+    @Deployment(name = SalesPostSigEmailServlet.DEPLOYMENT_NAME)
+    protected static WebArchive salesPostSigEmail() {
+        return samlServletDeployment(SalesPostSigEmailServlet.DEPLOYMENT_NAME, SendUsernameServlet.class);
+    }
+
+    @Deployment(name = SalesPostSigPersistentServlet.DEPLOYMENT_NAME)
+    protected static WebArchive salesPostSigPersistent() {
+        return samlServletDeployment(SalesPostSigPersistentServlet.DEPLOYMENT_NAME, SendUsernameServlet.class);
+    }
+
+    @Deployment(name = SalesPostSigTransientServlet.DEPLOYMENT_NAME)
+    protected static WebArchive salesPostSigTransient() {
+        return samlServletDeployment(SalesPostSigTransientServlet.DEPLOYMENT_NAME, SendUsernameServlet.class);
+    }
+
+    @Override
+    public void addAdapterTestRealms(List<RealmRepresentation> testRealms) {
+        testRealms.add(loadRealm("/adapter-test/keycloak-saml/testsaml.json"));
+    }
+
+    @Override
+    public void setDefaultPageUriParameters() {
+        super.setDefaultPageUriParameters();
+        testRealmPage.setAuthRealm(SAMLSERVLETDEMO);
+        testRealmSAMLLoginPage.setAuthRealm(SAMLSERVLETDEMO);
+    }
+
+    @Test
+    public void disabledClientTest() {
+        ClientResource clientResource = ApiUtil.findClientResourceByClientId(testRealmResource(), "http://localhost:8081/sales-post-sig/");
+        ClientRepresentation client = clientResource.toRepresentation();
+        client.setEnabled(false);
+        clientResource.update(client);
+
+        salesPostSigServletPage.navigateTo();
+        assertTrue(driver.getPageSource().contains("Login requester not enabled"));
+
+        client.setEnabled(true);
+        clientResource.update(client);
+    }
+
+    @Test
+    public void unauthorizedSSOTest() {
+        salesPostServletPage.navigateTo();
+        testRealmSAMLLoginPage.form().login("unauthorized", "password");
+
+        assertFalse(driver.getPageSource().contains("principal="));
+        assertTrue(driver.getPageSource().contains("Forbidden"));
+
+        employee2ServletPage.navigateTo();
+        assertFalse(driver.getPageSource().contains("principal="));
+        assertTrue(driver.getPageSource().contains("Forbidden"));
+
+        employeeSigFrontServletPage.navigateTo();
+        assertFalse(driver.getPageSource().contains("principal="));
+        assertTrue(driver.getPageSource().contains("Forbidden"));
+
+        salesPostSigPersistentServletPage.navigateTo();
+        assertFalse(driver.getPageSource().contains("principal="));
+        assertTrue(driver.getPageSource().contains("Forbidden"));
+
+        salesPostServletPage.logout();
+    }
+
+    @Test
+    public void singleLoginAndLogoutSAMLTest() {
+        salesPostServletPage.navigateTo();
+        testRealmSAMLLoginPage.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"));
+
+        employeeSigFrontServletPage.logout();
+
+        employeeSigFrontServletPage.navigateTo();
+        assertCurrentUrlStartsWith(testRealmSAMLLoginPage);
+
+        employeeSigServletPage.navigateTo();
+        assertCurrentUrlStartsWith(testRealmSAMLLoginPage);
+
+        salesPostPassiveServletPage.navigateTo();
+        assertTrue(driver.getPageSource().contains("Forbidden"));
+
+        salesPostSigEmailServletPage.navigateTo();
+        assertCurrentUrlStartsWith(testRealmSAMLLoginPage);
+    }
+
+    @Test
+    public void badClientSalesPostSigTest() {
+        badClientSalesPostSigServletPage.navigateTo();
+        assertTrue(driver.getPageSource().contains("invalidRequesterMessage"));
+    }
+
+    @Test
+    public void badRealmSalesPostSigTest() {
+        badRealmSalesPostSigServletPage.navigateTo();
+        testRealmSAMLLoginPage.form().login(bburkeUser);
+        assertTrue(driver.getPageSource().contains("Forbidden"));
+    }
+
+    @Test
+    public void employee2Test() {
+        employee2ServletPage.navigateTo();
+        testRealmSAMLLoginPage.form().login(bburkeUser);
+        assertTrue(driver.getPageSource().contains("principal=bburke"));
+
+        employee2ServletPage.logout();
+        employee2ServletPage.navigateTo();
+        assertCurrentUrlStartsWith(testRealmSAMLLoginPage);
+
+        testRealmSAMLLoginPage.form().login("unauthorized", "password");
+        assertFalse(driver.getPageSource().contains("principal="));
+        assertTrue(driver.getPageSource().contains("Forbidden"));
+        employee2ServletPage.logout();
+    }
+
+    @Test
+    public void employeeSigTest() {
+        employeeSigServletPage.navigateTo();
+        testRealmSAMLLoginPage.form().login(bburkeUser);
+        assertTrue(driver.getPageSource().contains("principal=bburke"));
+
+        employeeSigServletPage.logout();
+        employeeSigServletPage.navigateTo();
+        assertCurrentUrlStartsWith(testRealmSAMLLoginPage);
+
+        testRealmSAMLLoginPage.form().login("unauthorized", "password");
+        assertFalse(driver.getPageSource().contains("principal="));
+        assertTrue(driver.getPageSource().contains("Forbidden"));
+        employeeSigServletPage.logout();
+    }
+
+    @Test
+    public void employeeSigFrontTest() {
+        employeeSigFrontServletPage.navigateTo();
+        testRealmSAMLLoginPage.form().login(bburkeUser);
+        assertTrue(driver.getPageSource().contains("principal=bburke"));
+
+        employeeSigFrontServletPage.logout();
+        employeeSigFrontServletPage.navigateTo();
+        assertCurrentUrlStartsWith(testRealmSAMLLoginPage);
+
+        testRealmSAMLLoginPage.form().login("unauthorized", "password");
+        assertFalse(driver.getPageSource().contains("principal="));
+        assertTrue(driver.getPageSource().contains("Forbidden"));
+        employeeSigFrontServletPage.logout();
+    }
+
+    @Test
+    public void salesMetadataTest() throws Exception {
+        Document doc = loadXML(AbstractSAMLServletsAdapterTest.class.getResourceAsStream("/adapter-test/keycloak-saml/sp-metadata.xml"));
+
+        modifyDocElementAttribute(doc, "SingleLogoutService", "Location", "8080", System.getProperty("auth.server.http.port", null));
+        modifyDocElementAttribute(doc, "AssertionConsumerService", "Location", "8080", System.getProperty("auth.server.http.port", null));
+
+        ClientRepresentation clientRep = testRealmResource().convertClientDescription(IOUtil.documentToString(doc));
+        Response response = testRealmResource().clients().create(clientRep);
+        assertEquals(201, response.getStatus());
+
+        salesMetadataServletPage.navigateTo();
+        testRealmSAMLLoginPage.form().login(bburkeUser);
+        assertTrue(driver.getPageSource().contains("principal=bburke"));
+
+        salesMetadataServletPage.logout();
+        salesMetadataServletPage.navigateTo();
+        assertCurrentUrlStartsWith(testRealmSAMLLoginPage);
+
+        testRealmSAMLLoginPage.form().login("unauthorized", "password");
+        assertFalse(driver.getPageSource().contains("principal="));
+        assertTrue(driver.getPageSource().contains("Forbidden"));
+        salesMetadataServletPage.logout();
+    }
+
+    @Test
+    public void salesPostTest() {
+        salesPostServletPage.navigateTo();
+        testRealmSAMLLoginPage.form().login(bburkeUser);
+        assertTrue(driver.getPageSource().contains("principal=bburke"));
+
+        salesPostServletPage.logout();
+        salesPostServletPage.navigateTo();
+        assertCurrentUrlStartsWith(testRealmSAMLLoginPage);
+
+        testRealmSAMLLoginPage.form().login("unauthorized", "password");
+        assertFalse(driver.getPageSource().contains("principal="));
+        assertTrue(driver.getPageSource().contains("Forbidden"));
+        salesPostServletPage.logout();
+    }
+
+    @Test
+    public void salesPostEncTest() {
+        salesPostEncServletPage.navigateTo();
+        testRealmSAMLLoginPage.form().login(bburkeUser);
+        assertTrue(driver.getPageSource().contains("principal=bburke"));
+
+        salesPostEncServletPage.logout();
+        salesPostEncServletPage.navigateTo();
+        assertCurrentUrlStartsWith(testRealmSAMLLoginPage);
+
+        testRealmSAMLLoginPage.form().login("unauthorized", "password");
+        assertFalse(driver.getPageSource().contains("principal="));
+        assertTrue(driver.getPageSource().contains("Forbidden"));
+        salesPostEncServletPage.logout();
+    }
+
+    @Test
+    public void salesPostPassiveTest() {
+        salesPostPassiveServletPage.navigateTo();
+        assertTrue(driver.getPageSource().contains("Forbidden"));
+
+        salesPostServletPage.navigateTo();
+        testRealmSAMLLoginPage.form().login(bburkeUser);
+
+        salesPostPassiveServletPage.navigateTo();
+        assertTrue(driver.getPageSource().contains("principal=bburke"));
+
+        salesPostPassiveServletPage.logout();
+        salesPostPassiveServletPage.navigateTo();
+        assertTrue(driver.getPageSource().contains("Forbidden"));
+
+        salesPostServletPage.navigateTo();
+        testRealmSAMLLoginPage.form().login("unauthorized", "password");
+        salesPostPassiveServletPage.navigateTo();
+        assertFalse(driver.getPageSource().contains("principal="));
+        assertTrue(driver.getPageSource().contains("Forbidden"));
+        salesPostPassiveServletPage.logout();
+    }
+
+    @Test
+    public void salesPostSigTest() {
+        salesPostEncServletPage.navigateTo();
+        testRealmSAMLLoginPage.form().login(bburkeUser);
+        assertTrue(driver.getPageSource().contains("principal=bburke"));
+
+        salesPostEncServletPage.logout();
+        salesPostEncServletPage.navigateTo();
+        assertCurrentUrlStartsWith(testRealmSAMLLoginPage);
+
+        testRealmSAMLLoginPage.form().login("unauthorized", "password");
+        assertFalse(driver.getPageSource().contains("principal="));
+        assertTrue(driver.getPageSource().contains("Forbidden"));
+        salesPostEncServletPage.logout();
+    }
+
+    @Test
+    public void salesPostSigEmailTest() {
+        salesPostSigEmailServletPage.navigateTo();
+        testRealmSAMLLoginPage.form().login(bburkeUser);
+        assertTrue(driver.getPageSource().contains("principal=bburke"));
+
+        salesPostSigEmailServletPage.logout();
+        salesPostSigEmailServletPage.navigateTo();
+        assertCurrentUrlStartsWith(testRealmSAMLLoginPage);
+
+        testRealmSAMLLoginPage.form().login("unauthorized", "password");
+        assertFalse(driver.getPageSource().contains("principal="));
+        assertTrue(driver.getPageSource().contains("Forbidden"));
+        salesPostSigEmailServletPage.logout();
+    }
+
+    @Test
+    public void salesPostSigPersistentTest() {
+        salesPostSigPersistentServletPage.navigateTo();
+        testRealmSAMLLoginPage.form().login(bburkeUser);
+        assertFalse(driver.getPageSource().contains("bburke"));
+        assertTrue(driver.getPageSource().contains("principal=G-"));
+
+        salesPostSigPersistentServletPage.logout();
+        salesPostSigPersistentServletPage.navigateTo();
+        assertCurrentUrlStartsWith(testRealmSAMLLoginPage);
+
+        testRealmSAMLLoginPage.form().login("unauthorized", "password");
+        assertFalse(driver.getPageSource().contains("principal="));
+        assertTrue(driver.getPageSource().contains("Forbidden"));
+        salesPostSigPersistentServletPage.logout();
+    }
+
+    @Test
+    public void salesPostSigTransientTest() {
+        salesPostSigTransientServletPage.navigateTo();
+        testRealmSAMLLoginPage.form().login(bburkeUser);
+        assertFalse(driver.getPageSource().contains("bburke"));
+        assertTrue(driver.getPageSource().contains("principal=G-"));
+
+        salesPostSigTransientServletPage.logout();
+        salesPostSigTransientServletPage.navigateTo();
+        assertCurrentUrlStartsWith(testRealmSAMLLoginPage);
+
+        testRealmSAMLLoginPage.form().login("unauthorized", "password");
+        assertFalse(driver.getPageSource().contains("principal="));
+        assertTrue(driver.getPageSource().contains("Forbidden"));
+        salesPostSigTransientServletPage.logout();
+    }
+}