Skip to content

Commit

Permalink
[RESTEASY-1975] test rewritten with contents of original RESTEASY-108…
Browse files Browse the repository at this point in the history
…2.war
  • Loading branch information
rsearls authored and asoldano committed Aug 1, 2018
1 parent 24ac5fc commit f855796
Show file tree
Hide file tree
Showing 7 changed files with 175 additions and 5 deletions.
Expand Up @@ -19,6 +19,8 @@
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.lang.reflect.Type;
import java.security.AccessController;
import java.security.PrivilegedAction;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CompletionStage;
Expand Down Expand Up @@ -165,7 +167,19 @@ protected Object createProxy()
else
{
Class[] intfs = {rawType};
return Proxy.newProxyInstance(rawType.getClassLoader(), intfs, new GenericDelegatingProxy());
if (System.getSecurityManager() == null )
{
return Proxy.newProxyInstance(rawType.getClassLoader(), intfs, new GenericDelegatingProxy());
} else {
return AccessController.doPrivileged(new PrivilegedAction<Object>()
{
@Override
public Object run()
{
return Proxy.newProxyInstance(rawType.getClassLoader(), intfs, new GenericDelegatingProxy());
}
});
}
}
}
}
Expand Up @@ -9,10 +9,16 @@
import org.jboss.arquillian.container.test.api.RunAsClient;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.resteasy.util.HttpResponseCodes;
import org.jboss.resteasy.utils.PermissionUtil;
import org.jboss.resteasy.utils.PortProviderUtil;
import org.jboss.resteasy.utils.TestUtil;
import org.jboss.resteasy.utils.TimeoutUtil;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.asset.EmptyAsset;
import org.jboss.shrinkwrap.api.exporter.ZipExporter;
import org.jboss.shrinkwrap.api.spec.WebArchive;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;

Expand All @@ -24,29 +30,56 @@
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardCopyOption;
import java.security.SecurityPermission;

import org.jboss.resteasy.test.cdi.basic.resource.resteasy1082.FooResource;
import org.jboss.resteasy.test.cdi.basic.resource.resteasy1082.TestApplication;
import org.jboss.resteasy.test.cdi.basic.resource.resteasy1082.TestServlet;


/**
* @tpSubChapter CDI
* @tpChapter Integration tests
* @tpTestCaseDetails Regression test for RESTEASY-1082
* @tpSince RESTEasy 3.0.16
*
* Jul 27, 2018 Test rewritten to generated the needed archive and write it to disk.
*/

@RunWith(Arquillian.class)
@RunAsClient
public class CDIResourceTest {

protected static final Logger logger = LogManager.getLogger(CDIResourceTest.class.getName());

static final String fromStr;
private static final String WAR_NAME = "RESTEASY-1082.war";
static final String toStr;
static final File exportFile;

static {
fromStr = TestUtil.getResourcePath(CDIResourceTest.class, "RESTEASY-1082.war");
toStr = new StringBuilder()
.append(TestUtil.getJbossHome()).append(File.separator)
.append("standalone").append(File.separator)
.append("deployments").append(File.separator)
.append("RESTEASY-1082.war").toString();
.append(WAR_NAME).toString();
exportFile = new File(FileSystems.getDefault().getPath("target").toFile(), WAR_NAME);
}

@Before
public void createArchive() {
WebArchive war = ShrinkWrap.create(WebArchive.class, WAR_NAME);
war.addClasses(FooResource.class,
TestApplication.class,
TestServlet.class);
war.addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml");
war.addAsWebInfResource(CDIResourceTest.class.getPackage(),
"web-resteasy1082.xml", "web.xml");

war.addAsManifestResource(PermissionUtil.createPermissionsXmlAsset(
new RuntimePermission("accessDeclaredMembers")
), "permissions.xml");
//write file to disk
war.as(ZipExporter.class).exportTo(exportFile, true);
}

/**
Expand All @@ -55,7 +88,7 @@ public class CDIResourceTest {
*/
@Test
public void testCDIResourceFromServlet() throws Exception {
Path from = FileSystems.getDefault().getPath(fromStr).toAbsolutePath();
Path from = FileSystems.getDefault().getPath(exportFile.getAbsolutePath());
Path to = FileSystems.getDefault().getPath(toStr).toAbsolutePath();

try {
Expand Down
@@ -0,0 +1,33 @@
package org.jboss.resteasy.test.cdi.basic.resource.resteasy1082;

import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import javax.enterprise.context.RequestScoped;
import javax.validation.constraints.Min;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;

@RequestScoped
@Path("/foo")
public class FooResource {
@Min(3L)
private int k = 0;

public FooResource() {
}

@GET
@Produces({"application/json"})
public List<String> getAll() {
List<String> data = new ArrayList();

for(int i = 0; i < 10; ++i) {
data.add(UUID.randomUUID().toString());
}

return data;
}
}

@@ -0,0 +1,19 @@
package org.jboss.resteasy.test.cdi.basic.resource.resteasy1082;

import java.util.HashSet;
import java.util.Set;
import javax.ws.rs.core.Application;
import javax.ws.rs.ext.Provider;

@Provider
public class TestApplication extends Application {
public TestApplication() {
}

public Set<Class<?>> getClasses() {
HashSet<Class<?>> classes = new HashSet();
classes.add(FooResource.class);
return classes;
}
}

@@ -0,0 +1,24 @@
package org.jboss.resteasy.test.cdi.basic.resource.resteasy1082;

import java.io.IOException;
import javax.inject.Inject;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet({"/"})
public class TestServlet extends HttpServlet {
@Inject
FooResource foo;

public TestServlet() {
}

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/plain");
resp.getWriter().write(this.foo.getAll().toString());
}
}

Binary file not shown.
@@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

<servlet>
<servlet-name>Resteasy</servlet-name>

<servlet-class>
org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher
</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>org.jboss.resteasy.test.cdi.basic.resource.resteasy1082.TestApplication</param-value>
</init-param>
</servlet>

<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet>
<servlet-name>Test Servlet</servlet-name>
<servlet-class>org.jboss.resteasy.test.cdi.basic.resource.resteasy1082.TestServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>


<servlet-mapping>
<servlet-name>Resteasy</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>

<servlet-mapping>
<servlet-name>Test Servlet</servlet-name>
<url-pattern>/test/*</url-pattern>
</servlet-mapping>



<session-config>
<session-timeout>10</session-timeout>
</session-config>

</web-app>

0 comments on commit f855796

Please sign in to comment.