package org.jboss.resteasy.test.undertow; import java.util.Enumeration; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; import javax.servlet.ServletConfig; import javax.servlet.ServletContext; import javax.ws.rs.ApplicationPath; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.core.Application; import javax.ws.rs.core.Context; import javax.ws.rs.core.Response; import org.jboss.resteasy.client.jaxrs.ResteasyClient; import org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder; import org.jboss.resteasy.plugins.server.undertow.UndertowJaxrsServer; import org.jboss.resteasy.spi.ResteasyDeployment; import org.junit.AfterClass; import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; /** * RESTEASY-1629 * Since RESTEasy 3.1.2.Final */ public class UndertowParameterTest { private static ResteasyClient client; private static UndertowJaxrsServer server; private static Map<String, String> contextParams = new HashMap<String, String>(); private static Map<String, String> initParams = new HashMap<String, String>(); @ApplicationPath("") public static class TestApp extends Application { @Override public Set<Class<?>> getClasses() { HashSet<Class<?>> classes = new HashSet<Class<?>>(); classes.add(TestResource.class); return classes; } } @Path("/") public static class TestResource { @GET @Path("context") public Response context(@Context ServletContext context) { Enumeration<String> contextEnum = context.getInitParameterNames(); int count = 0; for (; contextEnum.hasMoreElements(); ) { String key = contextEnum.nextElement(); count++; } if (count == contextParams.size()) { return Response.ok().build(); } else { return Response.status(400).build(); } } @GET @Path("init") public Response init(@Context ServletConfig config) { Enumeration<String> initEnum = config.getInitParameterNames(); int count = 0; for (; initEnum.hasMoreElements(); ) { String key = initEnum.nextElement(); count++; } if (count == initParams.size()) { return Response.ok().build(); } else { return Response.status(400).build(); } } } ////////////////////////////////////////////////////////////////////////////// @BeforeClass public static void beforeClass() throws Exception { server = new UndertowJaxrsServer().start(); ResteasyDeployment deployment = new ResteasyDeployment(); deployment.setDeploymentSensitiveFactoryEnabled(true); deployment.setApplication(new TestApp()); deployment.start(); contextParams.put("contextKey1", "contextValue1"); contextParams.put("contextKey2", "contextValue2"); initParams.put("initKey1", "initValue1"); initParams.put("initKey2", "initValue2"); initParams.put("resteasy.servlet.context.deployment", "false"); server.deploy(deployment, "/", contextParams, initParams); client = new ResteasyClientBuilder().build(); } @AfterClass public static void afterClass() throws Exception { server.stop(); client.close(); } @Test public void testContextParameters() throws Exception { Response response = client.target("http://localhost:8081/context").request().get(Response.class); Assert.assertEquals(200, response.getStatus()); response.close(); } @Test public void testInitParameters() throws Exception { Response response = client.target("http://localhost:8081/init").request().get(Response.class); Assert.assertEquals(200, response.getStatus()); response.close(); } }