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);
}
}