package org.jboss.resteasy.test.resteasy1630;
import java.io.File;
import java.net.URI;
import javax.ws.rs.core.Response;
import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.container.test.api.RunAsClient;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.arquillian.test.api.ArquillianResource;
import org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder;
import org.jboss.resteasy.resteasy1630.TestApplicationPath;
import org.jboss.resteasy.resteasy1630.TestResource;
import org.jboss.shrinkwrap.api.Archive;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.spec.WebArchive;
import org.jboss.shrinkwrap.resolver.api.maven.Maven;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import static org.junit.Assert.assertEquals;
/**
See the Servlet 3.0 spec, section 8.2.4 for implementation and processing the details
of ServletContainerInitializer.
Resteasy's implementation of ServletContainerInitializer is declared in the
META-INF/services directory of archive org.jboss.resteasy:resteasy-servlet-initializer
as required by the spec. This archive MUST be included in the generated WAR file
so the server can find and call it. Shrinkwrap's Maven class and .addAsLibraries
method is used to achieve this.
This test checks that the implementation properly handles a jaxrs app that provides
resource and provider classes but no web.xml file.
*/
@RunWith(Arquillian.class)
@RunAsClient
public class ServletInitializerTwoTest {
@Deployment
public static Archive<?> createTestArchiveTwo() {
File pomFile = Maven.resolver().loadPomFromFile("pom.xml").resolve("org.jboss.resteasy:resteasy-servlet-initializer")
.withoutTransitivity().asSingleFile();
WebArchive war = ShrinkWrap.create(WebArchive.class, "RESTEASY-1630-two.war")
.addClasses(TestApplicationPath.class)
.addAsLibraries(pomFile)
.addClasses(TestResource.class);
return war;
}
@ArquillianResource
URI baseUri;
/**
* No web.xml provided in app. The server must auto scan for files.
* @throws Exception
*/
@Test
public void testEndpoint() throws Exception {
Response response = ResteasyClientBuilder.newClient()
.target(baseUri.toString() + "two/test/17").request().get();
System.out.println("Status: " + response.getStatus());
String entity = response.readEntity(String.class);
System.out.println("Result: " + entity);
assertEquals(200, response.getStatus());
Assert.assertEquals("17", entity);
}
}