WICKET-5926 Arquillian Support with Container ServletContext in BaseWicketTester/WicketTester.
Add wicket-arquillian test as a module in the parent Maven project Improve the tests so they do not dump stacktraces in the log while finishing successfully Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/e4ee5b72 Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/e4ee5b72 Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/e4ee5b72 Branch: refs/heads/master Commit: e4ee5b72347d9bd10afced909b26b975330de3b9 Parents: d3765b1 Author: Martin Tzvetanov Grigorov <[email protected]> Authored: Thu Jun 25 10:37:07 2015 +0300 Committer: Martin Tzvetanov Grigorov <[email protected]> Committed: Thu Jun 25 10:37:07 2015 +0300 ---------------------------------------------------------------------- pom.xml | 1 + testing/wicket-arquillian/pom.xml | 2 +- .../ArquillianContainerProvidedTest.java | 83 ++++++++++---------- 3 files changed, 44 insertions(+), 42 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/e4ee5b72/pom.xml ---------------------------------------------------------------------- diff --git a/pom.xml b/pom.xml index df52519..d5952ff 100644 --- a/pom.xml +++ b/pom.xml @@ -109,6 +109,7 @@ <module>archetypes/quickstart</module> <module>testing/wicket-common-tests</module> <module>testing/wicket-js-tests</module> + <module>testing/wicket-arquillian</module> <module>wicket-native-websocket</module> <module>wicket-bean-validation</module> <module>wicket-cdi-1.1</module> http://git-wip-us.apache.org/repos/asf/wicket/blob/e4ee5b72/testing/wicket-arquillian/pom.xml ---------------------------------------------------------------------- diff --git a/testing/wicket-arquillian/pom.xml b/testing/wicket-arquillian/pom.xml index 37e558f..31afa72 100644 --- a/testing/wicket-arquillian/pom.xml +++ b/testing/wicket-arquillian/pom.xml @@ -268,7 +268,7 @@ <version>${version.wildfly.maven.plugin}</version> <configuration> <fileNames> - <fileName>target/${build.finalName}.war</fileName> + <fileName>target/${project.build.finalName}.war</fileName> </fileNames> </configuration> </plugin> http://git-wip-us.apache.org/repos/asf/wicket/blob/e4ee5b72/testing/wicket-arquillian/src/test/java/org/apache/wicket/arquillian/testing/servletcontext/ArquillianContainerProvidedTest.java ---------------------------------------------------------------------- diff --git a/testing/wicket-arquillian/src/test/java/org/apache/wicket/arquillian/testing/servletcontext/ArquillianContainerProvidedTest.java b/testing/wicket-arquillian/src/test/java/org/apache/wicket/arquillian/testing/servletcontext/ArquillianContainerProvidedTest.java index e459348..24ab51a 100644 --- a/testing/wicket-arquillian/src/test/java/org/apache/wicket/arquillian/testing/servletcontext/ArquillianContainerProvidedTest.java +++ b/testing/wicket-arquillian/src/test/java/org/apache/wicket/arquillian/testing/servletcontext/ArquillianContainerProvidedTest.java @@ -49,14 +49,17 @@ import org.slf4j.LoggerFactory; */ @RunWith(Arquillian.class) public class ArquillianContainerProvidedTest extends AbstractDeploymentTest { - + private static final Logger log = LoggerFactory.getLogger(ArquillianContainerProvidedTest.class); + private static final String RESOURCE_PAGES_INSERT_CONTACT_HTML_NOT_FOUND = "Resource /pages/InsertContact.html not found."; + /** * Using container's servlet context and/or filter provided configured in web.xml and using Arquillian. */ @Test - public void testFindResourcesServletContextFromContainer() { + public void testFindResourcesServletContextFromContainer() throws MalformedURLException + { WebApplication webApplication = useServletContextContainer(); setWicketTester(new WicketTester(webApplication, webApplication.getServletContext(), false)); findResourcesServletContext(); @@ -66,7 +69,8 @@ public class ArquillianContainerProvidedTest extends AbstractDeploymentTest { * Using container's servlet context and/or filter provided configured in web.xml and using Arquillian. */ @Test - public void testFindResourcesWebApplicationFromContainer() { + public void testFindResourcesWebApplicationFromContainer() throws MalformedURLException + { WebApplication webApplication = useServletContextContainer(); setWicketTester(new WicketTester(webApplication, false)); findResourcesServletContext(); @@ -79,12 +83,12 @@ public class ArquillianContainerProvidedTest extends AbstractDeploymentTest { public void testNewApplicationTryReuseServletContextFilter() { try { log.info("Trying to reuse container's ServletContext/Filter."); - setWicketTester(new WicketTester(new TestWicketJavaEEApplication(),false)); + setWicketTester(new WicketTester(new TestWicketJavaEEApplication(), false)); + fail("Should not be able to reuse the servlet context"); } catch (IllegalStateException e) { - assertEquals("servletContext is not set yet. Any code in your Application object that uses the wicket filter instance should be put in the init() method instead of your constructor",e.getMessage()); - log.error("Cannot use container's ServletContext.\n", e); + assertEquals("servletContext is not set yet. Any code in your Application object that uses the wicket filter instance should be put in the init() method instead of your constructor", e.getMessage()); } - + assertNull(wicketTester); } @@ -95,55 +99,52 @@ public class ArquillianContainerProvidedTest extends AbstractDeploymentTest { public void testNullApplication() { try { log.info("Trying to use a null application."); - setWicketTester(new WicketTester(null,false)); + setWicketTester(new WicketTester(null, false)); + fail("WebApplication cannot be null"); } catch (AssertionError e) { - assertEquals("WebApplication cannot be null",e.getMessage()); - log.error("WebApplication cannot be null\n", e); - assertNull(wicketTester); + assertEquals("WebApplication cannot be null", e.getMessage()); } - + assertNull(wicketTester); } /** * Test with new application. */ @Test - public void testNewApplication() { - try { - setWicketTester(new WicketTester(new TestWicketJavaEEApplication())); - assertNotNull(getWicketTester().getApplication()); - log.info("Using mock servletcontext."); - log.info("WebApplication MOCK after wicketTester Name: " + getWicketTester().getApplication().getName()); - log.info("ServletContext MOCK after wicketTester Name: " + getWicketTester().getServletContext().getServletContextName()); - log.info("Server info: " + getWicketTester().getServletContext().getServerInfo()); - assertEquals("Wicket Mock Test Environment v1.0", getWicketTester().getServletContext().getServerInfo()); - } catch (IllegalStateException e) { - // I don't know what or if could cause this. - fail("Cannot use a mock ServletContext."); - } - + public void testNewApplication() throws MalformedURLException + { + setWicketTester(new WicketTester(new TestWicketJavaEEApplication())); + assertNotNull(getWicketTester().getApplication()); + log.info("Using mock servletcontext."); + log.info("WebApplication MOCK after wicketTester Name: " + getWicketTester().getApplication().getName()); + log.info("ServletContext MOCK after wicketTester Name: " + getWicketTester().getServletContext().getServletContextName()); + log.info("Server info: " + getWicketTester().getServletContext().getServerInfo()); + assertEquals("Wicket Mock Test Environment v1.0", getWicketTester().getServletContext().getServerInfo()); + // USING MOCK. - findResourcesServletContext(); + try + { + findResourcesServletContext(); + fail("Should not be able to find '/pages/InsertContact.html' in the mocked servlet context"); + } + catch (IllegalStateException isx) + { + assertEquals(RESOURCE_PAGES_INSERT_CONTACT_HTML_NOT_FOUND, isx.getMessage()); + } } /** * Look for resources (like html, js, css, img, etc). - * - * @param servletContext */ - private void findResourcesServletContext() { - try { - // Doing the same thing that ResourceWebApplicationPath does. - URL resource = getWicketTester().getServletContext().getResource("/pages/InsertContact.html"); - if(resource == null) { - throw new MalformedURLException("Resource /pages/InsertContact.html not found."); - } - log.info("Resource found " + resource.getFile()); - assertTrue(resource.getFile().contains("/pages/InsertContact.html")); - } catch (Exception e) { - assertEquals("Resource /pages/InsertContact.html not found.", e.getMessage()); - log.error("Resource cannot be found.", e); + private void findResourcesServletContext() throws MalformedURLException + { + // Doing the same thing that ResourceWebApplicationPath does. + URL resource = getWicketTester().getServletContext().getResource("/pages/InsertContact.html"); + if (resource == null) { + throw new IllegalStateException(RESOURCE_PAGES_INSERT_CONTACT_HTML_NOT_FOUND); } + log.info("Resource found " + resource.getFile()); + assertTrue(resource.getFile().contains("/pages/InsertContact.html")); } }
