package org.jboss.resteasy.test.xxe; import org.jboss.arquillian.container.test.api.Deployment; import org.jboss.arquillian.container.test.api.OperateOnDeployment; import org.jboss.arquillian.container.test.api.RunAsClient; import org.jboss.arquillian.junit.Arquillian; import org.jboss.logging.Logger; import org.jboss.resteasy.client.jaxrs.ResteasyClient; import org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder; import org.jboss.resteasy.test.xxe.resource.xxeJaxb.XxeJaxbFavoriteMovie; import org.jboss.resteasy.test.xxe.resource.xxeJaxb.XxeJaxbFavoriteMovieXmlRootElement; import org.jboss.resteasy.test.xxe.resource.xxeJaxb.XxeJaxbFavoriteMovieXmlType; import org.jboss.resteasy.test.xxe.resource.xxeJaxb.XxeJaxbMovieResource; import org.jboss.resteasy.test.xxe.resource.xxeJaxb.ObjectFactory; import org.jboss.resteasy.util.HttpResponseCodes; import org.jboss.resteasy.utils.PortProviderUtil; import org.jboss.resteasy.utils.TestUtil; import org.jboss.shrinkwrap.api.Archive; import org.jboss.shrinkwrap.api.spec.WebArchive; import org.junit.After; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import javax.ws.rs.client.Entity; import javax.ws.rs.client.WebTarget; import javax.ws.rs.core.Response; import java.io.File; import java.util.Hashtable; /** * @tpSubChapter XXE * @tpChapter Integration tests * @tpTestCaseDetails Regression test for RESTEASY-1103, RESTEASY-647. * RestEasy is vulnerable to XML Entity Denial of Service XXE is disabled. * @tpSince RESTEasy 3.0.16 */ @RunWith(Arquillian.class) @RunAsClient public class XxeJaxbTest { static ResteasyClient client; private Logger logger = Logger.getLogger(XxeJaxbTest.class); private static final String URL_PREFIX = "RESTEASY-1103-"; private String passwdFile = new File(TestUtil.getResourcePath(XxeJaxbTest.class, "XxeJaxbPasswd")).getAbsolutePath(); String strMovie = "<?xml version=\"1.0\"?>\r" + "<!DOCTYPE foo\r" + "[<!ENTITY xxe SYSTEM \"" + passwdFile + "\">\r" + "]>\r" + "<xxeJaxbFavoriteMovie><title>&xxe;</title></xxeJaxbFavoriteMovie>"; String strMovieRootElement = "<?xml version=\"1.0\"?>\r" + "<!DOCTYPE foo\r" + "[<!ENTITY xxe SYSTEM \"" + passwdFile + "\">\r" + "]>\r" + "<xxeJaxbFavoriteMovieXmlRootElement><title>&xxe;</title></xxeJaxbFavoriteMovieXmlRootElement>"; String strMovieXmlType = "<?xml version=\"1.0\"?>\r" + "<!DOCTYPE foo\r" + "[<!ENTITY xxe SYSTEM \"" + passwdFile + "\">\r" + "]>\r" + "<xxeJaxbFavoriteMovieXmlType><title>&xxe;</title></xxeJaxbFavoriteMovieXmlType>"; String strMovieRootElementCollection = "<?xml version=\"1.0\"?>\r" + "<!DOCTYPE foo\r" + "[<!ENTITY xxe SYSTEM \"" + passwdFile + "\">\r" + "]>\r" + "<collection>" + "<xxeJaxbFavoriteMovieXmlRootElement><title>&xxe;</title></xxeJaxbFavoriteMovieXmlRootElement>" + "<xxeJaxbFavoriteMovieXmlRootElement><title>Le Regle de Jeu</title></xxeJaxbFavoriteMovieXmlRootElement>" + "</collection>"; String strMovieRootElementMap = "<?xml version=\"1.0\"?>\r" + "<!DOCTYPE foo\r" + "[<!ENTITY xxe SYSTEM \"" + passwdFile + "\">\r" + "]>\r" + "<map>" + "<entry key=\"american\">" + "<xxeJaxbFavoriteMovieXmlRootElement><title>&xxe;</title></xxeJaxbFavoriteMovieXmlRootElement>" + "</entry>" + "<entry key=\"french\">" + "<xxeJaxbFavoriteMovieXmlRootElement><title>La Regle de Jeu</title></xxeJaxbFavoriteMovieXmlRootElement>" + "</entry>" + "</map>"; @Before public void init() { client = new ResteasyClientBuilder().build(); } @After public void after() throws Exception { client.close(); client = null; } @Deployment(name = "f", order = 1) public static Archive<?> createTestArchive_f() { return createTestArchiveEnableSecurityFeature("f", "false"); } @Deployment(name = "t", order = 2) public static Archive<?> createTestArchive_t() { return createTestArchiveEnableSecurityFeature("t", "true"); } @Deployment(name = "ff", order = 3) public static Archive<?> createTestArchive_ff() { return createTestArchiveExpandEntityReferencesEnableSecurityFeature("ff", "false", "false"); } @Deployment(name = "ft", order = 4) public static Archive<?> createTestArchive_ft() { return createTestArchiveExpandEntityReferencesEnableSecurityFeature("ft", "false", "true"); } @Deployment(name = "tf", order = 5) public static Archive<?> createTestArchive_tf() { return createTestArchiveExpandEntityReferencesEnableSecurityFeature("tf", "true", "false"); } @Deployment(name = "tt", order = 6) public static Archive<?> createTestArchive_tt() { return createTestArchiveExpandEntityReferencesEnableSecurityFeature("tt", "true", "true"); } static Archive<?> createTestArchiveEnableSecurityFeature(String warExt, String enable) { WebArchive war = TestUtil.prepareArchive(URL_PREFIX + warExt); war.addClasses(XxeJaxbFavoriteMovie.class, XxeJaxbFavoriteMovieXmlRootElement.class, XxeJaxbFavoriteMovieXmlType.class, ObjectFactory.class); Hashtable<String, String> contextParams = new Hashtable<String, String>(); contextParams.put("resteasy.document.secure.processing.feature", enable); contextParams.put("resteasy.document.secure.disableDTDs", "false"); return TestUtil.finishContainerPrepare(war, contextParams, XxeJaxbMovieResource.class); } static Archive<?> createTestArchiveExpandEntityReferencesEnableSecurityFeature(String warExt, String expand, String enable) { WebArchive war = TestUtil.prepareArchive(URL_PREFIX + warExt); war.addClasses(XxeJaxbFavoriteMovie.class, XxeJaxbFavoriteMovieXmlRootElement.class, XxeJaxbFavoriteMovieXmlType.class, ObjectFactory.class); Hashtable<String, String> contextParams = new Hashtable<String, String>(); contextParams.put("resteasy.document.secure.processing.feature", enable); contextParams.put("resteasy.document.secure.disableDTDs", "false"); contextParams.put("resteasy.document.expand.entity.references", expand); return TestUtil.finishContainerPrepare(war, contextParams, XxeJaxbMovieResource.class); } /** * @tpTestDetails Test on jaxb object annotated with @XmlRootElement * "resteasy.document.secure.processing.feature" is set to "false" * @tpPassCrit Passwd file should not be returned by the response. * @tpSince RESTEasy 3.0.16 */ @Test @OperateOnDeployment("f") public void testXmlRootElementDefaultFalse() throws Exception { doTestXmlRootElementDefault("f"); } /** * @tpTestDetails Test on jaxb object annotated with @XmlRootElement * "resteasy.document.secure.processing.feature" is set to "true" * @tpPassCrit Passwd file should not be returned by the response. * @tpSince RESTEasy 3.0.16 */ @Test @OperateOnDeployment("t") public void testXmlRootElementDefaultTrue() throws Exception { doTestXmlRootElementDefault("t"); } /** * @tpTestDetails Test on jaxb object annotated with @XmlRootElement * "resteasy.document.secure.processing.feature" is set to "false" * "resteasy.document.expand.entity.references" is set to "false" * @tpPassCrit Passwd file should not be returned by the response. * @tpSince RESTEasy 3.0.16 */ @Test @OperateOnDeployment("ff") public void testXmlRootElementWithoutExpansionFalse() throws Exception { doTestXmlRootElementWithoutExpansion("ff"); } /** * @tpTestDetails Test on jaxb object annotated with @XmlRootElement * "resteasy.document.secure.processing.feature" is set to "true" * "resteasy.document.expand.entity.references" is set to "false" * @tpPassCrit Passwd file should not be returned by the response. * @tpSince RESTEasy 3.0.16 */ @Test @OperateOnDeployment("ft") public void testXmlRootElementWithoutExpansionTrue() throws Exception { doTestXmlRootElementWithoutExpansion("ft"); } /** * @tpTestDetails Test on jaxb object annotated with @XmlRootElement * "resteasy.document.secure.processing.feature" is set to "false" * "resteasy.document.expand.entity.references" is set to "true" * @tpPassCrit Passwd file should be returned by the response. * @tpSince RESTEasy 3.0.16 */ @Test @OperateOnDeployment("tf") public void testXmlRootElementWithExpansionFalse() throws Exception { doTestXmlRootElementWithExpansion("tf"); } /** * @tpTestDetails Test on jaxb object annotated with @XmlRootElement * "resteasy.document.secure.processing.feature" is set to "true" * "resteasy.document.expand.entity.references" is set to "true" * @tpPassCrit Passwd file should be returned by the response. * @tpSince RESTEasy 3.0.16 */ @Test @OperateOnDeployment("tt") public void testXmlRootElementWithExpansionTrue() throws Exception { doTestXmlRootElementWithExpansion("tt"); } /** * @tpTestDetails Test on jaxb object annotated with @XmlType * "resteasy.document.secure.processing.feature" is set to "false" * @tpPassCrit Passwd file should not be returned by the response. * @tpSince RESTEasy 3.0.16 */ @Test @OperateOnDeployment("f") public void testXmlTypeDefaultFalse() throws Exception { doTestXmlTypeDefault("f"); } /** * @tpTestDetails Test on jaxb object annotated with @XmlType * "resteasy.document.secure.processing.feature" is set to "true" * @tpPassCrit Passwd file should not be returned by the response. * @tpSince RESTEasy 3.0.16 */ @Test @OperateOnDeployment("t") public void testXmlTypeDefaultTrue() throws Exception { doTestXmlTypeDefault("t"); } /** * @tpTestDetails Test on jaxb object annotated with @XmlType * "resteasy.document.secure.processing.feature" is set to "false" * "resteasy.document.expand.entity.references" is set to "false" * @tpPassCrit Passwd file should not be returned by the response. * @tpSince RESTEasy 3.0.16 */ @Test @OperateOnDeployment("ff") public void testXmlTypeWithoutExpansionFalse() throws Exception { doTestXmlTypeWithoutExpansion("ff"); } /** * @tpTestDetails Test on jaxb object annotated with @XmlType * "resteasy.document.secure.processing.feature" is set to "true" * "resteasy.document.expand.entity.references" is set to "false" * @tpPassCrit Passwd file should not be returned by the response. * @tpSince RESTEasy 3.0.16 */ @Test @OperateOnDeployment("ft") public void testXmlTypeWithoutExpansionTrue() throws Exception { doTestXmlTypeWithoutExpansion("ft"); } /** * @tpTestDetails Test on jaxb object annotated with @XmlType * "resteasy.document.secure.processing.feature" is set to "false" * "resteasy.document.expand.entity.references" is set to "true" * @tpPassCrit Passwd file should be returned by the response. * @tpSince RESTEasy 3.0.16 */ @Test @OperateOnDeployment("tf") public void testXmlTypeWithExpansionFalse() throws Exception { doTestXmlTypeWithExpansion("tf"); } /** * @tpTestDetails Test on jaxb object annotated with @XmlType * "resteasy.document.secure.processing.feature" is set to "true" * "resteasy.document.expand.entity.references" is set to "true" * @tpPassCrit Passwd file should be returned by the response. * @tpSince RESTEasy 3.0.16 */ @Test @OperateOnDeployment("tt") public void testXmlTypeWithExpansionTrue() throws Exception { doTestXmlTypeWithExpansion("tt"); } /** * @tpTestDetails Test on jaxb object annotated with @XmlType and resource binding xml element to JaxbElement * "resteasy.document.secure.processing.feature" is set to "false" * @tpPassCrit Passwd file should not be returned by the response. * @tpSince RESTEasy 3.0.16 */ @Test @OperateOnDeployment("f") public void testJAXBElementDefaultFalse() throws Exception { doTestJAXBElementDefault("f"); } /** * @tpTestDetails Test on jaxb object annotated with @XmlType and resource binding xml element to JaxbElement * "resteasy.document.secure.processing.feature" is set to "true" * @tpPassCrit Passwd file should not be returned by the response. * @tpSince RESTEasy 3.0.16 */ @Test @OperateOnDeployment("t") public void testJAXBElementDefaultTrue() throws Exception { doTestJAXBElementDefault("t"); } /** * @tpTestDetails Test on jaxb object annotated with @XmlType and resource binding xml element to JaxbElement * "resteasy.document.secure.processing.feature" is set to "false" * "resteasy.document.expand.entity.references" is set to "false" * @tpPassCrit Passwd file should not be returned by the response. * @tpSince RESTEasy 3.0.16 */ @Test @OperateOnDeployment("ff") public void testJAXBElementWithoutExpansionFalse() throws Exception { doTestJAXBElementWithoutExpansion("ff"); } /** * @tpTestDetails Test on jaxb object annotated with @XmlType and resource binding xml element to JaxbElement * "resteasy.document.secure.processing.feature" is set to "true" * "resteasy.document.expand.entity.references" is set to "false" * @tpPassCrit Passwd file should not be returned by the response. * @tpSince RESTEasy 3.0.16 */ @Test @OperateOnDeployment("ft") public void testJAXBElementWithoutExpansionTrue() throws Exception { doTestJAXBElementWithoutExpansion("ft"); } /** * @tpTestDetails Test on jaxb object annotated with @XmlType and resource binding xml element to JaxbElement * "resteasy.document.secure.processing.feature" is set to "false" * "resteasy.document.expand.entity.references" is set to "true" * @tpPassCrit Passwd file should be returned by the response. * @tpSince RESTEasy 3.0.16 */ @Test @OperateOnDeployment("tf") public void testJAXBElementWithExpansionFalse() throws Exception { doTestJAXBElementWithExpansion("tf"); } /** * @tpTestDetails Test on jaxb object annotated with @XmlType and resource binding xml element to JaxbElement * "resteasy.document.secure.processing.feature" is set to "true" * "resteasy.document.expand.entity.references" is set to "true" * @tpPassCrit Passwd file should be returned by the response. * @tpSince RESTEasy 3.0.16 */ @Test @OperateOnDeployment("tt") public void testJAXBElementWithExpansionTrue() throws Exception { doTestJAXBElementWithExpansion("tt"); } /** * @tpTestDetails Test on jaxb object annotated with @XmlRootElement which placed in xml string within <collection></collection> * tags. Resource binds such xml correctly into a list object * "resteasy.document.secure.processing.feature" is set to "false" * @tpPassCrit Passwd file should not be returned by the response. * @tpSince RESTEasy 3.0.16 */ @Test @OperateOnDeployment("f") public void testListDefaultFalse() throws Exception { doCollectionTestWithoutExpansion("f", "list"); } /** * @tpTestDetails Test on jaxb object annotated with @XmlRootElement which placed in xml string within <collection></collection> * tags. Resource binds such xml correctly into a list object * "resteasy.document.secure.processing.feature" is set to "true" * @tpPassCrit Passwd file should not be returned by the response. * @tpSince RESTEasy 3.0.16 */ @Test @OperateOnDeployment("t") public void testListDefaultTrue() throws Exception { doCollectionTestWithoutExpansion("t", "list"); } /** * @tpTestDetails Test on jaxb object annotated with @XmlRootElement which placed in xml string within <collection></collection> * tags. Resource binds such xml correctly into a list object * "resteasy.document.secure.processing.feature" is set to "false" * "resteasy.document.expand.entity.references" is set to "false" * @tpPassCrit Passwd file should not be returned by the response. * @tpSince RESTEasy 3.0.16 */ @Test @OperateOnDeployment("ff") public void testListWithoutExpansionFalse() throws Exception { doCollectionTestWithoutExpansion("ff", "list"); } /** * @tpTestDetails Test on jaxb object annotated with @XmlRootElement which placed in xml string within <collection></collection> * tags. Resource binds such xml correctly into a list object * "resteasy.document.secure.processing.feature" is set to "true" * "resteasy.document.expand.entity.references" is set to "false" * @tpPassCrit Passwd file should not be returned by the response. * @tpSince RESTEasy 3.0.16 */ @Test @OperateOnDeployment("ft") public void testListWithoutExpansionTrue() throws Exception { doCollectionTestWithoutExpansion("ft", "list"); } /** * @tpTestDetails Test on jaxb object annotated with @XmlRootElement which placed in xml string within <collection></collection> * tags. Resource binds such xml correctly into a list object * "resteasy.document.secure.processing.feature" is set to "false" * "resteasy.document.expand.entity.references" is set to "true" * @tpPassCrit Passwd file should be returned by the response. * @tpSince RESTEasy 3.0.16 */ @Test @OperateOnDeployment("tf") public void testListWithExpansionFalse() throws Exception { doCollectionTestWithExpansion("tf", "list"); } /** * @tpTestDetails Test on jaxb object annotated with @XmlRootElement which placed in xml string within <collection></collection> * tags. Resource binds such xml correctly into a list object * "resteasy.document.secure.processing.feature" is set to "true" * "resteasy.document.expand.entity.references" is set to "true" * @tpPassCrit Passwd file should be returned by the response. * @tpSince RESTEasy 3.0.16 */ @Test @OperateOnDeployment("tt") public void testListWithExpansionTrue() throws Exception { doCollectionTestWithExpansion("tt", "list"); } /** * @tpTestDetails Test on jaxb object annotated with @XmlRootElement which placed in xml string within <collection></collection> * tags. Resource binds such xml correctly into a Set object * "resteasy.document.secure.processing.feature" is set to "false" * @tpPassCrit Passwd file should not be returned by the response. * @tpSince RESTEasy 3.0.16 */ @Test @OperateOnDeployment("f") public void testSetDefaultFalse() throws Exception { doCollectionTestWithoutExpansion("f", "set"); } /** * @tpTestDetails Test on jaxb object annotated with @XmlRootElement which placed in xml string within <collection></collection> * tags. Resource binds such xml correctly into a Set object * "resteasy.document.secure.processing.feature" is set to "true" * @tpPassCrit Passwd file should not be returned by the response. * @tpSince RESTEasy 3.0.16 */ @Test @OperateOnDeployment("t") public void testSetDefaultTrue() throws Exception { doCollectionTestWithoutExpansion("t", "set"); } /** * @tpTestDetails Test on jaxb object annotated with @XmlRootElement which placed in xml string within <collection></collection> * tags. Resource binds such xml correctly into a Set object * "resteasy.document.secure.processing.feature" is set to "false" * "resteasy.document.expand.entity.references" is set to "false" * @tpPassCrit Passwd file should not be returned by the response. * @tpSince RESTEasy 3.0.16 */ @Test @OperateOnDeployment("ff") public void testSetWithoutExpansionFalse() throws Exception { doCollectionTestWithoutExpansion("ff", "set"); } /** * @tpTestDetails Test on jaxb object annotated with @XmlRootElement which placed in xml string within <collection></collection> * tags. Resource binds such xml correctly into a Set object * "resteasy.document.secure.processing.feature" is set to "true" * "resteasy.document.expand.entity.references" is set to "false" * @tpPassCrit Passwd file should not be returned by the response. * @tpSince RESTEasy 3.0.16 */ @Test @OperateOnDeployment("ft") public void testSetWithoutExpansionTrue() throws Exception { doCollectionTestWithoutExpansion("ft", "set"); } /** * @tpTestDetails Test on jaxb object annotated with @XmlRootElement which placed in xml string within <collection></collection> * tags. Resource binds such xml correctly into a Set object * "resteasy.document.secure.processing.feature" is set to "false" * "resteasy.document.expand.entity.references" is set to "true" * @tpPassCrit Passwd file should be returned by the response. * @tpSince RESTEasy 3.0.16 */ @Test @OperateOnDeployment("tf") public void testSetWithExpansionFalse() throws Exception { doCollectionTestWithExpansion("tf", "set"); } /** * @tpTestDetails Test on jaxb object annotated with @XmlRootElement which placed in xml string within <collection></collection> * tags. Resource binds such xml correctly into a Set object * "resteasy.document.secure.processing.feature" is set to "true" * "resteasy.document.expand.entity.references" is set to "true" * @tpPassCrit Passwd file should be returned by the response. * @tpSince RESTEasy 3.0.16 */ @Test @OperateOnDeployment("tt") public void testSetWithExpansionTrue() throws Exception { doCollectionTestWithExpansion("tt", "set"); } /** * @tpTestDetails Test on jaxb object annotated with @XmlRootElement which placed in xml string within <collection></collection> * tags. Resource binds such xml correctly into an array * "resteasy.document.secure.processing.feature" is set to "false" * @tpPassCrit Passwd file should not be returned by the response. * @tpSince RESTEasy 3.0.16 */ @Test @OperateOnDeployment("f") public void testArrayDefaultFalse() throws Exception { doCollectionTestWithoutExpansion("f", "array"); } /** * @tpTestDetails Test on jaxb object annotated with @XmlRootElement which placed in xml string within <collection></collection> * tags. Resource binds such xml correctly into an array * "resteasy.document.secure.processing.feature" is set to "true" * @tpPassCrit Passwd file should not be returned by the response. * @tpSince RESTEasy 3.0.16 */ @Test @OperateOnDeployment("t") public void testArrayDefaultTrue() throws Exception { doCollectionTestWithoutExpansion("t", "array"); } /** * @tpTestDetails Test on jaxb object annotated with @XmlRootElement which placed in xml string within <collection></collection> * tags. Resource binds such xml correctly into an array * "resteasy.document.secure.processing.feature" is set to "false" * "resteasy.document.expand.entity.references" is set to "false" * @tpPassCrit Passwd file should not be returned by the response. * @tpSince RESTEasy 3.0.16 */ @Test @OperateOnDeployment("ff") public void testArrayWithoutExpansionFalse() throws Exception { doCollectionTestWithoutExpansion("ff", "array"); } /** * @tpTestDetails Test on jaxb object annotated with @XmlRootElement which placed in xml string within <collection></collection> * tags. Resource binds such xml correctly into an array * "resteasy.document.secure.processing.feature" is set to "true" * "resteasy.document.expand.entity.references" is set to "false" * @tpPassCrit Passwd file should not be returned by the response. * @tpSince RESTEasy 3.0.16 */ @Test @OperateOnDeployment("ft") public void testArrayWithoutExpansionTrue() throws Exception { doCollectionTestWithoutExpansion("ft", "array"); } /** * @tpTestDetails Test on jaxb object annotated with @XmlRootElement which placed in xml string within <collection></collection> * tags. Resource binds such xml correctly into an array * "resteasy.document.secure.processing.feature" is set to "false" * "resteasy.document.expand.entity.references" is set to "true" * @tpPassCrit Passwd file should be returned by the response. * @tpSince RESTEasy 3.0.16 */ @Test @OperateOnDeployment("tf") public void testArrayWithExpansionFalse() throws Exception { doCollectionTestWithExpansion("tf", "array"); } /** * @tpTestDetails Test on jaxb object annotated with @XmlRootElement which placed in xml string within <collection></collection> * tags. Resource binds such xml correctly into an array * "resteasy.document.secure.processing.feature" is set to "true" * "resteasy.document.expand.entity.references" is set to "true" * @tpPassCrit Passwd file should be returned by the response. * @tpSince RESTEasy 3.0.16 */ @Test @OperateOnDeployment("tt") public void testArrayWithExpansionTrue() throws Exception { doCollectionTestWithExpansion("tt", "array"); } /** * @tpTestDetails Test on jaxb object annotated with @XmlRootElement which placed in xml string within <map></map> * tags. Resource binds such xml correctly into a map * "resteasy.document.secure.processing.feature" is set to "false" * @tpPassCrit Passwd file should not be returned by the response. * @tpSince RESTEasy 3.0.16 */ @Test @OperateOnDeployment("f") public void testMapDefaultFalse() throws Exception { doMapTestWithoutExpansion("f"); } /** * @tpTestDetails Test on jaxb object annotated with @XmlRootElement which placed in xml string within <map></map> * tags. Resource binds such xml correctly into a map * "resteasy.document.secure.processing.feature" is set to "true" * @tpPassCrit Passwd file should not be returned by the response. * @tpSince RESTEasy 3.0.16 */ @Test @OperateOnDeployment("t") public void testMapDefaultTrue() throws Exception { doMapTestWithoutExpansion("t"); } /** * @tpTestDetails Test on jaxb object annotated with @XmlRootElement which placed in xml string within <map></map> * tags. Resource binds such xml correctly into a map * "resteasy.document.secure.processing.feature" is set to "false" * "resteasy.document.expand.entity.references" is set to "false" * @tpPassCrit Passwd file should not be returned by the response. * @tpSince RESTEasy 3.0.16 */ @Test @OperateOnDeployment("ff") public void testMapWithoutExpansionFalse() throws Exception { doMapTestWithoutExpansion("ff"); } /** * @tpTestDetails Test on jaxb object annotated with @XmlRootElement which placed in xml string within <map></map> * tags. Resource binds such xml correctly into a map * "resteasy.document.secure.processing.feature" is set to "true" * "resteasy.document.expand.entity.references" is set to "false" * @tpPassCrit Passwd file should not be returned by the response. * @tpSince RESTEasy 3.0.16 */ @Test @OperateOnDeployment("ft") public void testMapWithoutExpansionTrue() throws Exception { doMapTestWithoutExpansion("ft"); } /** * @tpTestDetails Test on jaxb object annotated with @XmlRootElement which placed in xml string within <map></map> * tags. Resource binds such xml correctly into a map * "resteasy.document.secure.processing.feature" is set to "false" * "resteasy.document.expand.entity.references" is set to "true" * @tpPassCrit Passwd file should be returned by the response. * @tpSince RESTEasy 3.0.16 */ @Test @OperateOnDeployment("tf") public void testMapWithExpansionFalse() throws Exception { doMapTestWithExpansion("tf"); } /** * @tpTestDetails Test on jaxb object annotated with @XmlRootElement which placed in xml string within <map></map> * tags. Resource binds such xml correctly into a map * "resteasy.document.secure.processing.feature" is set to "true" * "resteasy.document.expand.entity.references" is set to "true" * @tpPassCrit Passwd file should be returned by the response. * @tpSince RESTEasy 3.0.16 */ @Test @OperateOnDeployment("tt") public void testMapWithExpansionTrue() throws Exception { doMapTestWithExpansion("tt"); } void doTestXmlRootElementDefault(String ext) throws Exception { WebTarget target = client.target(PortProviderUtil.generateURL("/xmlRootElement", URL_PREFIX + ext)); logger.info(strMovieRootElement); Response response = target.request().post(Entity.entity(strMovieRootElement, "application/xml")); Assert.assertEquals(HttpResponseCodes.SC_OK, response.getStatus()); String entity = response.readEntity(String.class); logger.info("Result: " + entity); Assert.assertTrue("The entity was expanded and it shouldn't be", entity.indexOf("xx:xx:xx:xx:xx:xx:xx") < 0); } void doTestXmlRootElementWithoutExpansion(String ext) throws Exception { WebTarget target = client.target(PortProviderUtil.generateURL("/xmlRootElement", URL_PREFIX + ext)); logger.info(strMovieRootElement); Response response = target.request().post(Entity.entity(strMovieRootElement, "application/xml")); Assert.assertEquals(HttpResponseCodes.SC_OK, response.getStatus()); String entity = response.readEntity(String.class); logger.info("Result: " + entity); Assert.assertTrue("The entity was expanded and it shouldn't be", entity.indexOf("xx:xx:xx:xx:xx:xx:xx") < 0); } void doTestXmlRootElementWithExpansion(String ext) throws Exception { WebTarget target = client.target(PortProviderUtil.generateURL("/xmlRootElement", URL_PREFIX + ext)); logger.info(strMovieRootElement); Response response = target.request().post(Entity.entity(strMovieRootElement, "application/xml")); Assert.assertEquals(HttpResponseCodes.SC_OK, response.getStatus()); String entity = response.readEntity(String.class); logger.info("result: " + entity); Assert.assertTrue("The entity wasn't expanded and it should be", entity.indexOf("xx:xx:xx:xx:xx:xx:xx") >= 0); } void doTestXmlTypeDefault(String ext) throws Exception { WebTarget target = client.target(PortProviderUtil.generateURL("/xmlType", URL_PREFIX + ext)); logger.info(strMovie); Response response = target.request().post(Entity.entity(strMovie, "application/xml")); Assert.assertEquals(HttpResponseCodes.SC_OK, response.getStatus()); String entity = response.readEntity(String.class); logger.info("Result: " + entity); Assert.assertTrue("The entity was expanded and it shouldn't be", entity.indexOf("xx:xx:xx:xx:xx:xx:xx") < 0); } void doTestXmlTypeWithoutExpansion(String ext) throws Exception { WebTarget target = client.target(PortProviderUtil.generateURL("/xmlType", URL_PREFIX + ext)); logger.info(strMovie); Response response = target.request().post(Entity.entity(strMovie, "application/xml")); Assert.assertEquals(HttpResponseCodes.SC_OK, response.getStatus()); String entity = response.readEntity(String.class); logger.info("Result: " + entity); Assert.assertTrue("The entity was expanded and it shouldn't be", entity.indexOf("xx:xx:xx:xx:xx:xx:xx") < 0); } void doTestXmlTypeWithExpansion(String ext) throws Exception { WebTarget target = client.target(PortProviderUtil.generateURL("/xmlType", URL_PREFIX + ext)); logger.info(strMovie); Response response = target.request().post(Entity.entity(strMovie, "application/xml")); Assert.assertEquals(HttpResponseCodes.SC_OK, response.getStatus()); String entity = response.readEntity(String.class); logger.info("result: " + entity); Assert.assertTrue("The entity wasn't expanded and it should be", entity.indexOf("xx:xx:xx:xx:xx:xx:xx") >= 0); } void doTestJAXBElementDefault(String ext) throws Exception { WebTarget target = client.target(PortProviderUtil.generateURL("/JAXBElement", URL_PREFIX + ext)); logger.info(strMovieXmlType); Response response = target.request().post(Entity.entity(strMovieXmlType, "application/xml")); Assert.assertEquals(HttpResponseCodes.SC_OK, response.getStatus()); String entity = response.readEntity(String.class); logger.info("Result: " + entity); Assert.assertTrue("The entity was expanded and it shouldn't be", entity.indexOf("xx:xx:xx:xx:xx:xx:xx") < 0); } void doTestJAXBElementWithoutExpansion(String ext) throws Exception { WebTarget target = client.target(PortProviderUtil.generateURL("/JAXBElement", URL_PREFIX + ext)); logger.info(strMovieXmlType); Response response = target.request().post(Entity.entity(strMovieXmlType, "application/xml")); Assert.assertEquals(HttpResponseCodes.SC_OK, response.getStatus()); String entity = response.readEntity(String.class); logger.info("Result: " + entity); Assert.assertTrue("The entity was expanded and it shouldn't be", entity.indexOf("xx:xx:xx:xx:xx:xx:xx") < 0); } void doTestJAXBElementWithExpansion(String ext) throws Exception { WebTarget target = client.target(PortProviderUtil.generateURL("/JAXBElement", URL_PREFIX + ext)); logger.info(strMovieXmlType); Response response = target.request().post(Entity.entity(strMovieXmlType, "application/xml")); Assert.assertEquals(HttpResponseCodes.SC_OK, response.getStatus()); String entity = response.readEntity(String.class); logger.info("Result: " + entity); Assert.assertTrue("The entity wasn't expanded and it should be", entity.indexOf("xx:xx:xx:xx:xx:xx:xx") >= 0); } void doCollectionTestWithoutExpansion(String ext, String path) throws Exception { WebTarget target = client.target(PortProviderUtil.generateURL("/" + path, URL_PREFIX + ext)); logger.info(strMovieRootElementCollection); Response response = target.request().post(Entity.entity(strMovieRootElementCollection, "application/xml")); Assert.assertEquals(HttpResponseCodes.SC_OK, response.getStatus()); String entity = response.readEntity(String.class); logger.info("Result: " + entity); Assert.assertTrue("The entity was expanded and it shouldn't be", entity.indexOf("xx:xx:xx:xx:xx:xx:xx") < 0); } void doCollectionTestWithExpansion(String ext, String path) throws Exception { WebTarget target = client.target(PortProviderUtil.generateURL("/" + path, URL_PREFIX + ext)); logger.info(strMovieRootElementCollection); Response response = target.request().post(Entity.entity(strMovieRootElementCollection, "application/xml")); Assert.assertEquals(HttpResponseCodes.SC_OK, response.getStatus()); String entity = response.readEntity(String.class); logger.info("Result: " + entity); Assert.assertTrue("The entity wasn't expanded and it should be", entity.indexOf("xx:xx:xx:xx:xx:xx:xx") >= 0); } void doMapTestWithoutExpansion(String ext) throws Exception { WebTarget target = client.target(PortProviderUtil.generateURL("/map", URL_PREFIX + ext)); logger.info(strMovieRootElementMap); Response response = target.request().post(Entity.entity(strMovieRootElementMap, "application/xml")); Assert.assertEquals(HttpResponseCodes.SC_OK, response.getStatus()); String entity = response.readEntity(String.class); logger.info("Result: " + entity); Assert.assertTrue("The entity was expanded and it shouldn't be", entity.indexOf("xx:xx:xx:xx:xx:xx:xx") < 0); } void doMapTestWithExpansion(String ext) throws Exception { WebTarget target = client.target(PortProviderUtil.generateURL("/map", URL_PREFIX + ext)); logger.info(strMovieRootElementMap); Response response = target.request().post(Entity.entity(strMovieRootElementMap, "application/xml")); Assert.assertEquals(HttpResponseCodes.SC_OK, response.getStatus()); String entity = response.readEntity(String.class); logger.info("Result: " + entity); Assert.assertTrue("The entity wasn't expanded and it should be", entity.indexOf("xx:xx:xx:xx:xx:xx:xx") >= 0); } }