package org.trimou.tests.mvc;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.trimou.tests.IntegrationTestUtils.createCDITestArchiveBase;
import static org.trimou.tests.IntegrationTestUtils.resolve;
import java.io.IOException;
import java.net.URL;
import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.arquillian.test.api.ArquillianResource;
import org.jboss.shrinkwrap.api.asset.StringAsset;
import org.jboss.shrinkwrap.api.spec.WebArchive;
import org.junit.Test;
import org.junit.runner.RunWith;
import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
import com.gargoylesoftware.htmlunit.Page;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.WebRequest;
/**
*
* @author Martin Kouba
*/
@RunWith(Arquillian.class)
public class TrimouViewEngineTest {
// Exclude default JAX-RS impl in WildFly
public static final StringAsset JBOSS_DEPLOYMENT_STRUCTURE_ASSET = new StringAsset(
"<jboss-deployment-structure xmlns=\"urn:jboss:deployment-structure:1.2\"><deployment><exclude-subsystems><subsystem name=\"jaxrs\"/></exclude-subsystems></deployment></jboss-deployment-structure>");
@Deployment(testable = false)
public static WebArchive createTestArchive() {
return createCDITestArchiveBase()
.addClasses(TrimouApplication.class, SimpleController.class,
Bean.class)
.addAsWebInfResource(JBOSS_DEPLOYMENT_STRUCTURE_ASSET,
"jboss-deployment-structure.xml")
.addAsLibraries(resolve("org.trimou:trimou-extension-cdi"))
.addAsLibraries(resolve("org.trimou:trimou-extension-mvc"))
.addAsLibraries(
resolve("org.glassfish.jersey.containers:jersey-container-servlet"))
.addAsLibraries(
resolve("org.glassfish.jersey.ext.cdi:jersey-cdi1x"))
.addAsLibraries(
resolve("org.glassfish.jersey.ext:jersey-bean-validation"))
.addAsLibraries(resolve("org.glassfish.ozark:ozark"))
.addAsWebInfResource(
new StringAsset(
"{{request.requestURI}}:{{user}}:{{locale}}:{{bean.id}}:{{bean.id}}"),
"/views/simple.trimou");
}
@ArquillianResource
URL contextPath;
@Test
public void testController()
throws FailingHttpStatusCodeException, IOException {
WebClient webClient = new WebClient();
WebRequest request = new WebRequest(
new URL(contextPath, "resources/simple?user=mike"));
request.setAdditionalHeader("Accept-Language", "cs");
Page page = webClient.getPage(request);
String[] parts = page.getWebResponse().getContentAsString().split(":");
assertEquals(5, parts.length);
assertTrue(parts[0].endsWith("/resources/simple"));
assertEquals("mike", parts[1]);
assertEquals("cs", parts[2]);
assertEquals(parts[3], parts[4]);
}
}