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.ProxyBuilder;
import org.jboss.resteasy.client.jaxrs.ResteasyClient;
import org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder;
import org.jboss.resteasy.test.resource.param.resource.UriParamAsPrimitiveResourceUriBoolean;
import org.jboss.resteasy.test.resource.param.resource.UriParamAsPrimitiveResourceUriBooleanInterface;
import org.jboss.resteasy.test.resource.param.resource.UriParamAsPrimitiveResourceUriBooleanWrapper;
import org.jboss.resteasy.test.resource.param.resource.UriParamAsPrimitiveResourceUriByte;
import org.jboss.resteasy.test.resource.param.resource.UriParamAsPrimitiveResourceUriByteInterface;
import org.jboss.resteasy.test.resource.param.resource.UriParamAsPrimitiveResourceUriByteWrapper;
import org.jboss.resteasy.test.resource.param.resource.UriParamAsPrimitiveResourceUriDouble;
import org.jboss.resteasy.test.resource.param.resource.UriParamAsPrimitiveResourceUriDoubleWrapper;
import org.jboss.resteasy.test.resource.param.resource.UriParamAsPrimitiveResourceUriFloat;
import org.jboss.resteasy.test.resource.param.resource.UriParamAsPrimitiveResourceUriFloatWrapper;
import org.jboss.resteasy.test.resource.param.resource.UriParamAsPrimitiveResourceUriInt;
import org.jboss.resteasy.test.resource.param.resource.UriParamAsPrimitiveResourceUriIntWrapper;
import org.jboss.resteasy.test.resource.param.resource.UriParamAsPrimitiveResourceUriLong;
import org.jboss.resteasy.test.resource.param.resource.UriParamAsPrimitiveResourceUriLongWrapper;
import org.jboss.resteasy.test.resource.param.resource.UriParamAsPrimitiveResourceUriShort;
import org.jboss.resteasy.test.resource.param.resource.UriParamAsPrimitiveResourceUriShortWrapper;
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.AfterClass;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
import javax.ws.rs.client.Invocation;
import javax.ws.rs.core.Response;
/**
* @tpSubChapter Parameters
* @tpChapter Integration tests
* @tpTestCaseDetails Test all variants of primitive URI parameters (boolean, int, long, float, etc.)
* @tpSince RESTEasy 3.0.16
*/
@RunWith(Arquillian.class)
@RunAsClient
public class UriParamAsPrimitiveTest {
public static final String ERROR_CODE = "Wrong parameter";
private static UriParamAsPrimitiveResourceUriBooleanInterface resourceUriBoolean;
private static UriParamAsPrimitiveResourceUriByteInterface resourceUriByte;
private static ResteasyClient client;
@BeforeClass
public static void before() throws Exception {
client = new ResteasyClientBuilder().build();
resourceUriBoolean = ProxyBuilder.builder(UriParamAsPrimitiveResourceUriBooleanInterface.class, client.target(generateBaseUrl())).build();
resourceUriByte = ProxyBuilder.builder(UriParamAsPrimitiveResourceUriByteInterface.class, client.target(generateBaseUrl())).build();
}
@Deployment
public static Archive<?> deploy() throws Exception {
WebArchive war = TestUtil.prepareArchive(UriParamAsPrimitiveTest.class.getSimpleName());
war.addClass(UriParamAsPrimitiveResourceUriBooleanInterface.class);
war.addClass(UriParamAsPrimitiveResourceUriByteInterface.class);
war.addClass(UriParamAsPrimitiveTest.class);
return TestUtil.finishContainerPrepare(war, null,
UriParamAsPrimitiveResourceUriBoolean.class,
UriParamAsPrimitiveResourceUriByte.class,
UriParamAsPrimitiveResourceUriShort.class,
UriParamAsPrimitiveResourceUriInt.class,
UriParamAsPrimitiveResourceUriLong.class,
UriParamAsPrimitiveResourceUriFloat.class,
UriParamAsPrimitiveResourceUriDouble.class,
UriParamAsPrimitiveResourceUriBooleanWrapper.class,
UriParamAsPrimitiveResourceUriByteWrapper.class,
UriParamAsPrimitiveResourceUriShortWrapper.class,
UriParamAsPrimitiveResourceUriIntWrapper.class,
UriParamAsPrimitiveResourceUriLongWrapper.class,
UriParamAsPrimitiveResourceUriFloatWrapper.class,
UriParamAsPrimitiveResourceUriDoubleWrapper.class);
}
private static String generateURL(String path) {
return PortProviderUtil.generateURL(path, UriParamAsPrimitiveTest.class.getSimpleName());
}
private static String generateBaseUrl() {
return PortProviderUtil.generateBaseUrl(UriParamAsPrimitiveTest.class.getSimpleName());
}
@AfterClass
public static void after() throws Exception {
client.close();
}
void basicTest(String type, String value) {
{
Invocation.Builder request = client.target(generateURL("/" + type + "/" + value)).request();
try {
Response response = request.get();
Assert.assertEquals(HttpResponseCodes.SC_OK, response.getStatus());
response.close();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
{
Invocation.Builder request = client.target(generateURL("/" + type + "/wrapper/" + value)).request();
try {
Response response = request.get();
Assert.assertEquals(HttpResponseCodes.SC_OK, response.getStatus());
response.close();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
/**
* @tpTestDetails Test boolean primitive object
* @tpSince RESTEasy 3.0.16
*/
@Test
public void testGetBoolean() {
basicTest("boolean", "true");
resourceUriBoolean.doGet(true);
}
/**
* @tpTestDetails Test byte primitive object
* @tpSince RESTEasy 3.0.16
*/
@Test
public void testGetByte() {
basicTest("byte", "127");
resourceUriByte.doGet((byte) 127);
}
/**
* @tpTestDetails Test short primitive object
* @tpSince RESTEasy 3.0.16
*/
@Test
public void testGetShort() {
basicTest("short", "32767");
}
/**
* @tpTestDetails Test int primitive object
* @tpSince RESTEasy 3.0.16
*/
@Test
public void testGetInt() {
basicTest("int", "2147483647");
}
/**
* @tpTestDetails Test long primitive object
* @tpSince RESTEasy 3.0.16
*/
@Test
public void testGetLong() {
basicTest("long", "9223372036854775807");
}
/**
* @tpTestDetails Test float primitive object
* @tpSince RESTEasy 3.0.16
*/
@Test
public void testGetFloat() {
basicTest("float", "3.14159265");
}
/**
* @tpTestDetails Test double primitive object
* @tpSince RESTEasy 3.0.16
*/
@Test
public void testGetDouble() {
basicTest("double", "3.14159265358979");
}
}