From ccba07a5c0d74ffbb5607263d03478fc527973a4 Mon Sep 17 00:00:00 2001 From: mhajas Date: Tue, 14 Aug 2018 13:00:10 +0200 Subject: [PATCH] KEYCLOAK-7213 Make example tests running on app-server-undertow --- .../undertow/UndertowAppServer.java | 20 +++++++++ .../integration-arquillian/tests/base/pom.xml | 6 +++ .../AbstractBaseServletAuthzAdapterTest.java | 2 +- .../AbstractServletAuthzAdapterTest.java | 2 + .../DefaultAuthzConfigAdapterTest.java | 3 +- .../PermissiveModeAdapterTest.java | 1 + .../ServletAuthzCIPAdapterTest.java | 1 + .../ServletAuthzCacheDisabledAdapterTest.java | 1 + .../ServletAuthzCacheLifespanAdapterTest.java | 1 + .../ServletAuthzLazyLoadPathsAdapterTest.java | 1 + ...ervletAuthzNoLazyLoadPathsAdapterTest.java | 1 + .../ServletPolicyEnforcerTest.java | 3 +- .../integration-arquillian/tests/pom.xml | 2 - testsuite/integration-arquillian/util/pom.xml | 6 +++ .../undertow/UndertowDeployerHelper.java | 44 +++++++++++++------ 15 files changed, 75 insertions(+), 19 deletions(-) diff --git a/testsuite/integration-arquillian/servers/app-server/undertow/src/main/java/org/keycloak/testsuite/arquillian/undertow/UndertowAppServer.java b/testsuite/integration-arquillian/servers/app-server/undertow/src/main/java/org/keycloak/testsuite/arquillian/undertow/UndertowAppServer.java index a2297c36b0..d9b4ce52f3 100644 --- a/testsuite/integration-arquillian/servers/app-server/undertow/src/main/java/org/keycloak/testsuite/arquillian/undertow/UndertowAppServer.java +++ b/testsuite/integration-arquillian/servers/app-server/undertow/src/main/java/org/keycloak/testsuite/arquillian/undertow/UndertowAppServer.java @@ -23,11 +23,16 @@ import io.undertow.servlet.api.DeploymentInfo; import io.undertow.servlet.api.DeploymentManager; import io.undertow.servlet.api.ServletContainer; import io.undertow.servlet.api.ServletInfo; + +import java.io.File; +import java.io.IOException; import java.lang.reflect.Field; import java.util.Collection; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import javax.servlet.ServletException; + +import org.apache.commons.io.FileUtils; import org.arquillian.undertow.UndertowContainerConfiguration; import org.jboss.arquillian.container.spi.client.container.DeployableContainer; import org.jboss.arquillian.container.spi.client.container.DeploymentException; @@ -91,6 +96,21 @@ public class UndertowAppServer implements DeployableContainer archive) throws DeploymentException { log.info("Deploying archive " + archive.getName()); + + // Remove jsps + String ioTMPDir = System.getProperty("java.io.tmpdir", ""); // My Intellij and Terminal stores tmp directory in this property + if (!ioTMPDir.isEmpty()) { + ioTMPDir = ioTMPDir.endsWith("/") ? ioTMPDir : ioTMPDir + "/"; + File tmpUndertowJSPDirectory = new File(ioTMPDir + "org/apache/jsp"); + if (tmpUndertowJSPDirectory.exists()) { + try { + FileUtils.deleteDirectory(tmpUndertowJSPDirectory); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + DeploymentInfo di; if (archive instanceof UndertowWebArchive) { di = ((UndertowWebArchive) archive).getDeploymentInfo(); diff --git a/testsuite/integration-arquillian/tests/base/pom.xml b/testsuite/integration-arquillian/tests/base/pom.xml index 22fd0c0566..5abb910f6a 100644 --- a/testsuite/integration-arquillian/tests/base/pom.xml +++ b/testsuite/integration-arquillian/tests/base/pom.xml @@ -136,6 +136,12 @@ org.wildfly.arquillian wildfly-arquillian-container-managed + + org.keycloak.testsuite + photoz-restful-api + war + ${project.version} + diff --git a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/adapter/example/authorization/AbstractBaseServletAuthzAdapterTest.java b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/adapter/example/authorization/AbstractBaseServletAuthzAdapterTest.java index f0d0406806..66e69ef648 100644 --- a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/adapter/example/authorization/AbstractBaseServletAuthzAdapterTest.java +++ b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/adapter/example/authorization/AbstractBaseServletAuthzAdapterTest.java @@ -138,7 +138,7 @@ public abstract class AbstractBaseServletAuthzAdapterTest extends AbstractExampl } protected void navigateTo() { - this.driver.navigate().to(getResourceServerUrl()); + this.driver.navigate().to(getResourceServerUrl() + "/"); WaitUtils.waitUntilElement(By.xpath("//a[text() = 'Dynamic Menu']")); } diff --git a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/adapter/example/authorization/AbstractServletAuthzAdapterTest.java b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/adapter/example/authorization/AbstractServletAuthzAdapterTest.java index da5f68bfd8..9953dce1d9 100644 --- a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/adapter/example/authorization/AbstractServletAuthzAdapterTest.java +++ b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/adapter/example/authorization/AbstractServletAuthzAdapterTest.java @@ -16,6 +16,7 @@ */ package org.keycloak.testsuite.adapter.example.authorization; +import org.junit.Ignore; import org.junit.Test; import org.keycloak.admin.client.resource.ClientPoliciesResource; import org.keycloak.admin.client.resource.RealmResource; @@ -197,6 +198,7 @@ public abstract class AbstractServletAuthzAdapterTest extends AbstractBaseServle //KEYCLOAK-3830 @Test + @Ignore // Ignored because: KEYCLOAK-7941 public void testAccessPublicResource() throws Exception { performTests(() -> { driver.navigate().to(getResourceServerUrl() + "/public-html.html"); diff --git a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/adapter/example/authorization/DefaultAuthzConfigAdapterTest.java b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/adapter/example/authorization/DefaultAuthzConfigAdapterTest.java index 32d4919081..dcc0e694cd 100644 --- a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/adapter/example/authorization/DefaultAuthzConfigAdapterTest.java +++ b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/adapter/example/authorization/DefaultAuthzConfigAdapterTest.java @@ -50,6 +50,7 @@ import static org.keycloak.testsuite.utils.io.IOUtil.loadRealm; @AppServerContainer(ContainerConstants.APP_SERVER_WILDFLY10) @AppServerContainer(ContainerConstants.APP_SERVER_EAP) @AppServerContainer(ContainerConstants.APP_SERVER_EAP6) +@AppServerContainer(ContainerConstants.APP_SERVER_UNDERTOW) @AppServerContainer(ContainerConstants.APP_SERVER_EAP71) public class DefaultAuthzConfigAdapterTest extends AbstractExampleAdapterTest { @@ -104,7 +105,7 @@ public class DefaultAuthzConfigAdapterTest extends AbstractExampleAdapterTest { } private void login() throws MalformedURLException { - this.driver.navigate().to(getResourceServerUrl()); + this.driver.navigate().to(getResourceServerUrl() + "/"); this.loginPage.form().login("alice", "alice"); } diff --git a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/adapter/example/authorization/PermissiveModeAdapterTest.java b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/adapter/example/authorization/PermissiveModeAdapterTest.java index 0e69fbe3b8..e154a8b7a1 100644 --- a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/adapter/example/authorization/PermissiveModeAdapterTest.java +++ b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/adapter/example/authorization/PermissiveModeAdapterTest.java @@ -34,6 +34,7 @@ import org.keycloak.testsuite.arquillian.containers.ContainerConstants; @AppServerContainer(ContainerConstants.APP_SERVER_WILDFLY10) @AppServerContainer(ContainerConstants.APP_SERVER_EAP) @AppServerContainer(ContainerConstants.APP_SERVER_EAP6) +@AppServerContainer(ContainerConstants.APP_SERVER_UNDERTOW) @AppServerContainer(ContainerConstants.APP_SERVER_EAP71) public class PermissiveModeAdapterTest extends AbstractBaseServletAuthzAdapterTest { diff --git a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/adapter/example/authorization/ServletAuthzCIPAdapterTest.java b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/adapter/example/authorization/ServletAuthzCIPAdapterTest.java index 7ac85f8bee..41c3765b12 100644 --- a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/adapter/example/authorization/ServletAuthzCIPAdapterTest.java +++ b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/adapter/example/authorization/ServletAuthzCIPAdapterTest.java @@ -32,6 +32,7 @@ import org.keycloak.testsuite.arquillian.containers.ContainerConstants; @AppServerContainer(ContainerConstants.APP_SERVER_WILDFLY10) @AppServerContainer(ContainerConstants.APP_SERVER_EAP) @AppServerContainer(ContainerConstants.APP_SERVER_EAP6) +@AppServerContainer(ContainerConstants.APP_SERVER_UNDERTOW) @AppServerContainer(ContainerConstants.APP_SERVER_EAP71) public class ServletAuthzCIPAdapterTest extends AbstractServletAuthzAdapterTest { diff --git a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/adapter/example/authorization/ServletAuthzCacheDisabledAdapterTest.java b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/adapter/example/authorization/ServletAuthzCacheDisabledAdapterTest.java index 13128cbe2e..8a862f111f 100644 --- a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/adapter/example/authorization/ServletAuthzCacheDisabledAdapterTest.java +++ b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/adapter/example/authorization/ServletAuthzCacheDisabledAdapterTest.java @@ -34,6 +34,7 @@ import org.keycloak.testsuite.arquillian.containers.ContainerConstants; @AppServerContainer(ContainerConstants.APP_SERVER_WILDFLY10) @AppServerContainer(ContainerConstants.APP_SERVER_EAP) @AppServerContainer(ContainerConstants.APP_SERVER_EAP6) +@AppServerContainer(ContainerConstants.APP_SERVER_UNDERTOW) @AppServerContainer(ContainerConstants.APP_SERVER_EAP71) public class ServletAuthzCacheDisabledAdapterTest extends AbstractServletAuthzAdapterTest { diff --git a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/adapter/example/authorization/ServletAuthzCacheLifespanAdapterTest.java b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/adapter/example/authorization/ServletAuthzCacheLifespanAdapterTest.java index f1c5582f52..d61c26c009 100644 --- a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/adapter/example/authorization/ServletAuthzCacheLifespanAdapterTest.java +++ b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/adapter/example/authorization/ServletAuthzCacheLifespanAdapterTest.java @@ -33,6 +33,7 @@ import org.keycloak.testsuite.arquillian.containers.ContainerConstants; @AppServerContainer(ContainerConstants.APP_SERVER_WILDFLY10) @AppServerContainer(ContainerConstants.APP_SERVER_EAP) @AppServerContainer(ContainerConstants.APP_SERVER_EAP6) +@AppServerContainer(ContainerConstants.APP_SERVER_UNDERTOW) @AppServerContainer(ContainerConstants.APP_SERVER_EAP71) public class ServletAuthzCacheLifespanAdapterTest extends AbstractServletAuthzAdapterTest { diff --git a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/adapter/example/authorization/ServletAuthzLazyLoadPathsAdapterTest.java b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/adapter/example/authorization/ServletAuthzLazyLoadPathsAdapterTest.java index 5a91bb9699..e129554464 100644 --- a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/adapter/example/authorization/ServletAuthzLazyLoadPathsAdapterTest.java +++ b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/adapter/example/authorization/ServletAuthzLazyLoadPathsAdapterTest.java @@ -32,6 +32,7 @@ import org.keycloak.testsuite.arquillian.containers.ContainerConstants; @AppServerContainer(ContainerConstants.APP_SERVER_WILDFLY10) @AppServerContainer(ContainerConstants.APP_SERVER_EAP) @AppServerContainer(ContainerConstants.APP_SERVER_EAP6) +@AppServerContainer(ContainerConstants.APP_SERVER_UNDERTOW) @AppServerContainer(ContainerConstants.APP_SERVER_EAP71) public class ServletAuthzLazyLoadPathsAdapterTest extends AbstractServletAuthzAdapterTest { diff --git a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/adapter/example/authorization/ServletAuthzNoLazyLoadPathsAdapterTest.java b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/adapter/example/authorization/ServletAuthzNoLazyLoadPathsAdapterTest.java index e9c88b97f5..8c54a29e72 100644 --- a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/adapter/example/authorization/ServletAuthzNoLazyLoadPathsAdapterTest.java +++ b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/adapter/example/authorization/ServletAuthzNoLazyLoadPathsAdapterTest.java @@ -30,6 +30,7 @@ import org.keycloak.testsuite.arquillian.containers.ContainerConstants; @AppServerContainer(ContainerConstants.APP_SERVER_WILDFLY10) @AppServerContainer(ContainerConstants.APP_SERVER_EAP) @AppServerContainer(ContainerConstants.APP_SERVER_EAP6) +@AppServerContainer(ContainerConstants.APP_SERVER_UNDERTOW) @AppServerContainer(ContainerConstants.APP_SERVER_EAP71) public class ServletAuthzNoLazyLoadPathsAdapterTest extends AbstractServletAuthzAdapterTest { diff --git a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/adapter/example/authorization/ServletPolicyEnforcerTest.java b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/adapter/example/authorization/ServletPolicyEnforcerTest.java index a6216e27dd..272214294f 100644 --- a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/adapter/example/authorization/ServletPolicyEnforcerTest.java +++ b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/adapter/example/authorization/ServletPolicyEnforcerTest.java @@ -56,6 +56,7 @@ import org.openqa.selenium.By; @AppServerContainer(ContainerConstants.APP_SERVER_WILDFLY10) @AppServerContainer(ContainerConstants.APP_SERVER_EAP) @AppServerContainer(ContainerConstants.APP_SERVER_EAP6) +@AppServerContainer(ContainerConstants.APP_SERVER_UNDERTOW) @AppServerContainer(ContainerConstants.APP_SERVER_EAP71) public class ServletPolicyEnforcerTest extends AbstractExampleAdapterTest { @@ -545,7 +546,7 @@ public class ServletPolicyEnforcerTest extends AbstractExampleAdapterTest { } private void navigateTo() { - this.driver.navigate().to(getResourceServerUrl()); + this.driver.navigate().to(getResourceServerUrl() + "/"); WaitUtils.waitUntilElement(By.xpath("//p[text() = 'Welcome']")); } diff --git a/testsuite/integration-arquillian/tests/pom.xml b/testsuite/integration-arquillian/tests/pom.xml index 56fb88235c..4f03c09d64 100755 --- a/testsuite/integration-arquillian/tests/pom.xml +++ b/testsuite/integration-arquillian/tests/pom.xml @@ -240,7 +240,6 @@ copy - ${app.server.skip.unpack} org.keycloak.testsuite @@ -296,7 +295,6 @@ unpack - ${app.server.skip.unpack} org.keycloak.testsuite diff --git a/testsuite/integration-arquillian/util/pom.xml b/testsuite/integration-arquillian/util/pom.xml index 0230e280e1..21f50f1ef7 100644 --- a/testsuite/integration-arquillian/util/pom.xml +++ b/testsuite/integration-arquillian/util/pom.xml @@ -65,5 +65,11 @@ org.osgi.enterprise provided + + + io.undertow.jastow + jastow + 2.1.0.Final + diff --git a/testsuite/integration-arquillian/util/src/main/java/org/keycloak/testsuite/utils/undertow/UndertowDeployerHelper.java b/testsuite/integration-arquillian/util/src/main/java/org/keycloak/testsuite/utils/undertow/UndertowDeployerHelper.java index 1310d51c9a..bcd25b730d 100644 --- a/testsuite/integration-arquillian/util/src/main/java/org/keycloak/testsuite/utils/undertow/UndertowDeployerHelper.java +++ b/testsuite/integration-arquillian/util/src/main/java/org/keycloak/testsuite/utils/undertow/UndertowDeployerHelper.java @@ -16,26 +16,17 @@ */ package org.keycloak.testsuite.utils.undertow; -import java.io.IOException; -import java.io.InputStream; -import java.net.URL; -import java.net.URLConnection; -import java.net.URLStreamHandler; -import java.util.Map; - -import javax.servlet.Servlet; -import javax.servlet.annotation.WebServlet; -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; - import io.undertow.UndertowMessages; +import io.undertow.jsp.HackInstanceManager; +import io.undertow.jsp.JspServletBuilder; import io.undertow.server.handlers.resource.Resource; import io.undertow.server.handlers.resource.ResourceChangeListener; import io.undertow.server.handlers.resource.ResourceManager; import io.undertow.server.handlers.resource.URLResource; import io.undertow.servlet.api.DeploymentInfo; import io.undertow.servlet.api.ServletInfo; +import org.apache.jasper.deploy.JspPropertyGroup; +import org.apache.jasper.deploy.TagLibraryInfo; import org.arquillian.undertow.UndertowContainerConfiguration; import org.jboss.logging.Logger; import org.jboss.shrinkwrap.api.Archive; @@ -46,6 +37,19 @@ import org.jboss.shrinkwrap.api.spec.WebArchive; import org.w3c.dom.Document; import org.xml.sax.SAXException; +import javax.servlet.Servlet; +import javax.servlet.annotation.WebServlet; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; +import java.io.IOException; +import java.io.InputStream; +import java.net.URL; +import java.net.URLConnection; +import java.net.URLStreamHandler; +import java.util.HashMap; +import java.util.Map; + /** * @author Marek Posolda */ @@ -55,7 +59,13 @@ public class UndertowDeployerHelper { public DeploymentInfo getDeploymentInfo(UndertowContainerConfiguration config, WebArchive archive) { String archiveName = archive.getName(); - String contextPath = "/" + archive.getName().substring(0, archive.getName().lastIndexOf('.')); + + String appName = archive.getName().substring(0, archive.getName().lastIndexOf('.')); + if (appName.contains(System.getProperty("project.version"))) { + appName = archive.getName().substring(0, archive.getName().lastIndexOf("-" + System.getProperty("project.version"))); + } + + String contextPath = "/" + appName; String appContextUrl = "http://" + config.getBindAddress() + ":" + config.getBindHttpPort() + contextPath; try { @@ -75,6 +85,12 @@ public class UndertowDeployerHelper { new SimpleWebXmlParser().parseWebXml(webXml, di); } + di.addServlet(JspServletBuilder.createServlet("Default Jsp Servlet", "*.jsp")); + + di.addWelcomePages("index.html", "index.jsp"); + + JspServletBuilder.setupDeployment(di, new HashMap(), new HashMap(), new HackInstanceManager()); + addAnnotatedServlets(di, archive); return di;