package org.jboss.resteasy.test.resource.param;
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.resteasy.client.jaxrs.ResteasyClient;
import org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder;
import org.jboss.resteasy.test.resource.param.resource.MatrixParamAsPrimitiveArray;
import org.jboss.resteasy.test.resource.param.resource.MatrixParamAsPrimitiveArrayDefault;
import org.jboss.resteasy.test.resource.param.resource.MatrixParamAsPrimitiveArrayDefaultNull;
import org.jboss.resteasy.test.resource.param.resource.MatrixParamAsPrimitiveArrayDefaultOverride;
import org.jboss.resteasy.test.resource.param.resource.MatrixParamAsPrimitiveDefault;
import org.jboss.resteasy.test.resource.param.resource.MatrixParamAsPrimitiveDefaultNull;
import org.jboss.resteasy.test.resource.param.resource.MatrixParamAsPrimitiveDefaultOverride;
import org.jboss.resteasy.test.resource.param.resource.MatrixParamAsPrimitiveList;
import org.jboss.resteasy.test.resource.param.resource.MatrixParamAsPrimitiveListDefault;
import org.jboss.resteasy.test.resource.param.resource.MatrixParamAsPrimitiveListDefaultNull;
import org.jboss.resteasy.test.resource.param.resource.MatrixParamAsPrimitiveListDefaultOverride;
import org.jboss.resteasy.test.resource.param.resource.MatrixParamAsPrimitivePrimitives;
import org.jboss.resteasy.test.resource.param.resource.MatrixParamAsPrimitiveWrappers;
import org.jboss.resteasy.test.resource.param.resource.MatrixParamAsPrimitiveWrappersDefault;
import org.jboss.resteasy.test.resource.param.resource.MatrixParamAsPrimitiveWrappersDefaultNull;
import org.jboss.resteasy.test.resource.param.resource.MatrixParamAsPrimitiveWrappersDefaultOverride;
import org.jboss.resteasy.util.HttpHeaderNames;
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.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import javax.ws.rs.core.Response;
/**
* @tpSubChapter Parameters
* @tpChapter Integration tests
* @tpTestCaseDetails Test all variants of primitive matrix parameters (boolean, int, long, float, etc.)
* @tpSince RESTEasy 3.0.16
*/
@RunWith(Arquillian.class)
@RunAsClient
public class MatrixParamAsPrimitiveTest {
public static final String ERROR_MESSAGE = "Wrong content of matrix parameter";
ResteasyClient client;
@Deployment
public static Archive<?> deploy() {
WebArchive war = TestUtil.prepareArchive(MatrixParamAsPrimitiveTest.class.getSimpleName());
war.addClass(MatrixParamAsPrimitiveTest.class);
return TestUtil.finishContainerPrepare(war, null,
MatrixParamAsPrimitivePrimitives.class,
MatrixParamAsPrimitiveDefault.class,
MatrixParamAsPrimitiveDefaultOverride.class,
MatrixParamAsPrimitiveDefaultNull.class,
MatrixParamAsPrimitiveWrappers.class,
MatrixParamAsPrimitiveWrappersDefault.class,
MatrixParamAsPrimitiveWrappersDefaultNull.class,
MatrixParamAsPrimitiveWrappersDefaultOverride.class,
MatrixParamAsPrimitiveList.class,
MatrixParamAsPrimitiveListDefault.class,
MatrixParamAsPrimitiveListDefaultNull.class,
MatrixParamAsPrimitiveListDefaultOverride.class,
MatrixParamAsPrimitiveArray.class,
MatrixParamAsPrimitiveArrayDefault.class,
MatrixParamAsPrimitiveArrayDefaultNull.class,
MatrixParamAsPrimitiveArrayDefaultOverride.class);
}
private String generateURL(String path) {
return PortProviderUtil.generateURL(path, MatrixParamAsPrimitiveTest.class.getSimpleName());
}
public void basicTest(String type, String value) {
String param = ";" + type + "=" + value;
{
client = new ResteasyClientBuilder().build();
Response response = client.target(generateURL("/" + param)).request()
.header(HttpHeaderNames.ACCEPT, "application/" + type)
.get();
Assert.assertEquals(HttpResponseCodes.SC_OK, response.getStatus());
response.close();
client.close();
}
{
client = new ResteasyClientBuilder().build();
Response response = client.target(generateURL("/wrappers" + param)).request()
.header(HttpHeaderNames.ACCEPT, "application/" + type)
.get();
Assert.assertEquals(HttpResponseCodes.SC_OK, response.getStatus());
response.close();
client.close();
}
{
client = new ResteasyClientBuilder().build();
Response response = client.target(generateURL("/list" + param + param + param)).request()
.header(HttpHeaderNames.ACCEPT, "application/" + type)
.get();
Assert.assertEquals(HttpResponseCodes.SC_OK, response.getStatus());
response.close();
client.close();
}
{
client = new ResteasyClientBuilder().build();
Response response = client.target(generateURL("/array" + param + param + param)).request()
.header(HttpHeaderNames.ACCEPT, "application/" + type)
.get();
Assert.assertEquals(HttpResponseCodes.SC_OK, response.getStatus());
response.close();
client.close();
}
}
public void testDefault(String base, String type, String value) {
{
client = new ResteasyClientBuilder().build();
Response response = client.target(generateURL(base + "default/null")).request()
.header(HttpHeaderNames.ACCEPT, "application/" + type)
.get();
Assert.assertEquals(HttpResponseCodes.SC_OK, response.getStatus());
response.close();
client.close();
}
{
client = new ResteasyClientBuilder().build();
Response response = client.target(generateURL(base + "default")).request()
.header(HttpHeaderNames.ACCEPT, "application/" + type)
.get();
Assert.assertEquals(HttpResponseCodes.SC_OK, response.getStatus());
response.close();
client.close();
}
String param = ";" + type + "=" + value;
{
client = new ResteasyClientBuilder().build();
Response response = client.target(generateURL(base + "default/override" + param)).request()
.header(HttpHeaderNames.ACCEPT, "application/" + type)
.get();
Assert.assertEquals(HttpResponseCodes.SC_OK, response.getStatus());
response.close();
client.close();
}
}
public void testDefault(String type, String value) {
testDefault("/", type, value);
}
public void testWrappersDefault(String type, String value) {
testDefault("/wrappers/", type, value);
}
public void testListDefault(String type, String value) {
testDefault("/list/", type, value);
}
public void testArrayDefault(String type, String value) {
testDefault("/array/", type, value);
}
/**
* @tpTestDetails Basic test for boolean
* @tpSince RESTEasy 3.0.16
*/
@Test
public void testGetBoolean() {
basicTest("boolean", "true");
}
/**
* @tpTestDetails Test default value for boolean
* @tpSince RESTEasy 3.0.16
*/
@Test
public void testGetBooleanPrimitivesDefault() {
testDefault("boolean", "true");
}
/**
* @tpTestDetails Test default value of boolean with wrapper
* @tpSince RESTEasy 3.0.16
*/
@Test
public void testGetBooleanPrimitiveWrapperDefault() {
testWrappersDefault("boolean", "true");
}
/**
* @tpTestDetails Test default values of list of boolean
* @tpSince RESTEasy 3.0.16
*/
@Test
public void testGetBooleanPrimitiveListDefault() {
testListDefault("boolean", "true");
testArrayDefault("boolean", "true");
}
/**
* @tpTestDetails Basic test for byte
* @tpSince RESTEasy 3.0.16
*/
@Test
public void testGetByte() {
basicTest("byte", "127");
}
/**
* @tpTestDetails Test default value of byte
* @tpSince RESTEasy 3.0.16
*/
@Test
public void testGetBytePrimitivesDefault() {
testDefault("byte", "127");
}
/**
* @tpTestDetails Test default value of byte with wrapper
* @tpSince RESTEasy 3.0.16
*/
@Test
public void testGetBytePrimitiveWrappersDefault() {
testWrappersDefault("byte", "127");
}
/**
* @tpTestDetails Test default value of list and array of byte
* @tpSince RESTEasy 3.0.16
*/
@Test
public void testGetBytePrimitiveListDefault() {
testListDefault("byte", "127");
testArrayDefault("byte", "127");
}
/**
* @tpTestDetails Basic test for short
* @tpSince RESTEasy 3.0.16
*/
@Test
public void testGetShort() {
basicTest("short", "32767");
}
/**
* @tpTestDetails Test default values of short
* @tpSince RESTEasy 3.0.16
*/
@Test
public void testGetShortPrimtivesDefault() {
testDefault("short", "32767");
}
/**
* @tpTestDetails Test default values of short with wrapper
* @tpSince RESTEasy 3.0.16
*/
@Test
public void testGetShortPrimtiveWrappersDefault() {
testWrappersDefault("short", "32767");
}
/**
* @tpTestDetails Test default values of list and array of short
* @tpSince RESTEasy 3.0.16
*/
@Test
public void testGetShortPrimtiveListDefault() {
testListDefault("short", "32767");
testArrayDefault("short", "32767");
}
/**
* @tpTestDetails Basic test for int
* @tpSince RESTEasy 3.0.16
*/
@Test
public void testGetInt() {
basicTest("int", "2147483647");
}
/**
* @tpTestDetails Test default value of int
* @tpSince RESTEasy 3.0.16
*/
@Test
public void testGetIntPrimitivesDefault() {
testDefault("int", "2147483647");
}
/**
* @tpTestDetails Test default value of int with wrapper
* @tpSince RESTEasy 3.0.16
*/
@Test
public void testGetIntPrimitiveWrappersDefault() {
testWrappersDefault("int", "2147483647");
}
/**
* @tpTestDetails Test default value of list and array of integer
* @tpSince RESTEasy 3.0.16
*/
@Test
public void testGetIntPrimitiveListDefault() {
testListDefault("int", "2147483647");
testArrayDefault("int", "2147483647");
}
/**
* @tpTestDetails Basic test for long
* @tpSince RESTEasy 3.0.16
*/
@Test
public void testGetLong() {
basicTest("long", "9223372036854775807");
}
/**
* @tpTestDetails Test default value of long
* @tpSince RESTEasy 3.0.16
*/
@Test
public void testGetLongPrimitivesDefault() {
testDefault("long", "9223372036854775807");
}
/**
* @tpTestDetails Test default value of long with wrapper
* @tpSince RESTEasy 3.0.16
*/
@Test
public void testGetLongPrimitiveWrappersDefault() {
testWrappersDefault("long", "9223372036854775807");
}
/**
* @tpTestDetails Test default value of list and array of long
* @tpSince RESTEasy 3.0.16
*/
@Test
public void testGetLongPrimitiveListDefault() {
testListDefault("long", "9223372036854775807");
testArrayDefault("long", "9223372036854775807");
}
/**
* @tpTestDetails Basic test for float
* @tpSince RESTEasy 3.0.16
*/
@Test
public void testGetFloat() {
basicTest("float", "3.14159265");
}
/**
* @tpTestDetails Test default value of float
* @tpSince RESTEasy 3.0.16
*/
@Test
public void testGetFloatPrimitivesDefault() {
testDefault("float", "3.14159265");
}
/**
* @tpTestDetails Test default value of float with wrapper
* @tpSince RESTEasy 3.0.16
*/
@Test
public void testGetFloatPrimitiveWrappersDefault() {
testWrappersDefault("float", "3.14159265");
}
/**
* @tpTestDetails Test default value of array and list of float
* @tpSince RESTEasy 3.0.16
*/
@Test
public void testGetFloatPrimitiveListDefault() {
testListDefault("float", "3.14159265");
testArrayDefault("float", "3.14159265");
}
/**
* @tpTestDetails Basic test for double
* @tpSince RESTEasy 3.0.16
*/
@Test
public void testGetDouble() {
basicTest("double", "3.14159265358979");
}
/**
* @tpTestDetails Test default value of double
* @tpSince RESTEasy 3.0.16
*/
@Test
public void testGetDoublePrimitivesDefault() {
testDefault("double", "3.14159265358979");
}
/**
* @tpTestDetails Test default value of double with wrapper
* @tpSince RESTEasy 3.0.16
*/
@Test
public void testGetDoublePrimitiveWrappersDefault() {
testWrappersDefault("double", "3.14159265358979");
}
/**
* @tpTestDetails Test default value of list and array of double
* @tpSince RESTEasy 3.0.16
*/
@Test
public void testGetDoublePrimitiveListDefault() {
testListDefault("double", "3.14159265358979");
testArrayDefault("double", "3.14159265358979");
}
/**
* @tpTestDetails Test wrong data stored in int format
* @tpSince RESTEasy 3.0.16
*/
@Test
public void testBadPrimitiveValue() {
{
client = new ResteasyClientBuilder().build();
Response response = client.target(generateURL("/;int=abcdef")).request()
.header(HttpHeaderNames.ACCEPT, "application/int")
.get();
Assert.assertEquals(HttpResponseCodes.SC_NOT_FOUND, response.getStatus());
response.close();
client.close();
}
}
/**
* @tpTestDetails Test wrong data stored in int format, wrapper is used
* @tpSince RESTEasy 3.0.16
*/
@Test
public void testBadPrimitiveWrapperValue() {
{
client = new ResteasyClientBuilder().build();
Response response = client.target(generateURL("/wrappers;int=abcdef")).request()
.header(HttpHeaderNames.ACCEPT, "application/int")
.get();
Assert.assertEquals(HttpResponseCodes.SC_NOT_FOUND, response.getStatus());
response.close();
client.close();
}
}
/**
* @tpTestDetails Test wrong data stored in list of int
* @tpSince RESTEasy 3.0.16
*/
@Test
public void testBadPrimitiveListValue() {
{
client = new ResteasyClientBuilder().build();
Response response = client.target(generateURL("/list;int=abcdef;int=abcdef")).request()
.header(HttpHeaderNames.ACCEPT, "application/int")
.get();
Assert.assertEquals(HttpResponseCodes.SC_NOT_FOUND, response.getStatus());
response.close();
client.close();
}
}
}