package org.jboss.resteasy.test.client;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
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.ClientRequest; //@cs-: clientrequest (Old client test)
import org.jboss.resteasy.client.ClientResponse; //@cs-: clientresponse (Old client test)
import org.jboss.resteasy.client.ProxyFactory;
import org.jboss.resteasy.client.jaxrs.ProxyBuilder;
import org.jboss.resteasy.test.client.resource.ParameterListInterface;
import org.jboss.resteasy.test.client.resource.ParameterListResource;
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.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.core.Response;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.TreeSet;
/**
* @tpSubChapter Resteasy-client
* @tpChapter Client tests
* @tpSince RESTEasy 3.0.16
* @tpTestCaseDetails Regression for RESTEASY-756
*/
@RunWith(Arquillian.class)
@RunAsClient
public class ParameterListTest extends ClientTestBase{
protected static final Logger logger = LogManager.getLogger(ParameterListTest.class.getName());
private static final String ERROR_MESSAGE = "Wrong parameters in response received";
private static Client restClient;
@Before
public void init() {
restClient = ClientBuilder.newClient();
}
@After
public void after() throws Exception {
restClient.close();
}
@Deployment
public static Archive<?> deploy() {
WebArchive war = TestUtil.prepareArchive(ParameterListTest.class.getSimpleName());
war.addClass(ParameterListInterface.class);
return TestUtil.finishContainerPrepare(war, null, ParameterListResource.class);
}
private String generateBaseUrl() {
return PortProviderUtil.generateBaseUrl(ParameterListTest.class.getSimpleName());
}
/**
* @tpTestDetails Old client: set matrix param by URL and by matrixParameter function
* @tpSince RESTEasy 3.0.16
*/
@Test
public void testMatrixOldClient() throws Exception {
ClientRequest request = new ClientRequest(generateURL("/matrix;m1=a/list;m1=b;p2=c"));
request.matrixParameter("m1", "d");
ClientResponse<String> response = request.get(String.class);
Assert.assertEquals(HttpResponseCodes.SC_OK, response.getStatus());
Assert.assertEquals(ERROR_MESSAGE, "a:b:d:", response.getEntity());
}
/**
* @tpTestDetails Old client: set query param by URL and by queryParameter function
* @tpSince RESTEasy 3.0.16
*/
@Test
public void testQueryOldClient() throws Exception {
ClientRequest request = new ClientRequest(generateURL("/query/list?q1=a&q2=b&q1=c"));
request.queryParameter("q1", "d");
ClientResponse<String> response = request.get(String.class);
Assert.assertEquals(HttpResponseCodes.SC_OK, response.getStatus());
Assert.assertEquals(ERROR_MESSAGE, "a:c:d:", response.getEntity());
}
/**
* @tpTestDetails New client: set matrix param by URL and by matrixParam function
* @tpSince RESTEasy 3.0.16
*/
@Test
public void testMatrixNewClient() throws Exception {
Response response = restClient.target(generateURL("/matrix;m1=a/list;m1=b;p2=c")).matrixParam("m1", "d").request().get();
Assert.assertEquals(HttpResponseCodes.SC_OK, response.getStatus());
Assert.assertEquals(ERROR_MESSAGE, "a:b:d:", response.readEntity(String.class));
}
/**
* @tpTestDetails New client: set query param by URL and by queryParam function
* @tpSince RESTEasy 3.0.16
*/
@Test
public void testQueryNewClient() throws Exception {
Response response = restClient.target(generateURL("/query/list?q1=a&q2=b&q1=c")).queryParam("q1", "d").request().get();
Assert.assertEquals(HttpResponseCodes.SC_OK, response.getStatus());
Assert.assertEquals(ERROR_MESSAGE, "a:c:d:", response.readEntity(String.class));
}
/**
* @tpTestDetails Old client: check settings of matrix list by proxy
* @tpSince RESTEasy 3.0.16
*/
@SuppressWarnings("unchecked")
@Test
public void testMatrixProxyListOldClient() throws Exception {
ParameterListInterface client = ProxyFactory.create(ParameterListInterface.class, generateBaseUrl());
ArrayList<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
ClientResponse<String> response = ClientResponse.class.cast(client.matrixList(list));
Assert.assertEquals(HttpResponseCodes.SC_OK, response.getStatus());
Assert.assertEquals(ERROR_MESSAGE, "a:b:c:", response.getEntity(String.class));
}
/**
* @tpTestDetails Old client: check settings of matrix set by proxy
* @tpSince RESTEasy 3.0.16
*/
@SuppressWarnings("unchecked")
@Test
public void testMatrixProxySetOldClient() throws Exception {
ParameterListInterface client = ProxyFactory.create(ParameterListInterface.class, generateBaseUrl());
HashSet<String> set = new HashSet<>();
set.add("a");
set.add("b");
set.add("c");
ClientResponse<String> response = ClientResponse.class.cast(client.matrixSet(set));
Assert.assertEquals(HttpResponseCodes.SC_OK, response.getStatus());
Assert.assertEquals(ERROR_MESSAGE, "a:b:c:", response.getEntity(String.class));
}
/**
* @tpTestDetails Old client: check settings of matrix sorted set by proxy
* @tpSince RESTEasy 3.0.16
*/
@SuppressWarnings("unchecked")
@Test
public void testMatrixProxySortedSetOldClient() throws Exception {
ParameterListInterface client = ProxyFactory.create(ParameterListInterface.class, generateBaseUrl());
TreeSet<String> set = new TreeSet<String>();
set.add("a");
set.add("b");
set.add("c");
ClientResponse<String> response = ClientResponse.class.cast(client.matrixSortedSet(set));
Assert.assertEquals(HttpResponseCodes.SC_OK, response.getStatus());
Assert.assertEquals(ERROR_MESSAGE, "a:b:c:", response.getEntity(String.class));
}
/**
* @tpTestDetails Old client: check settings of matrix list and other parameter by proxy
* @tpSince RESTEasy 3.0.16
*/
@SuppressWarnings("unchecked")
@Test
public void testMatrixWithEntityProxyOldClient() throws Exception {
ParameterListInterface client = ProxyFactory.create(ParameterListInterface.class, generateBaseUrl());
ArrayList<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
ClientResponse<String> response = ClientResponse.class.cast(client.matrixWithEntity(list, "entity"));
Assert.assertEquals(HttpResponseCodes.SC_OK, response.getStatus());
Assert.assertEquals(ERROR_MESSAGE, "entity:a:b:c:", response.getEntity(String.class));
}
/**
* @tpTestDetails Old client: check settings of query list by proxy
* @tpSince RESTEasy 3.0.16
*/
@SuppressWarnings("unchecked")
@Test
public void testQueryProxyListOldClient() throws Exception {
ParameterListInterface client = ProxyFactory.create(ParameterListInterface.class, generateBaseUrl());
ArrayList<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
ClientResponse<String> response = ClientResponse.class.cast(client.queryList(list));
Assert.assertEquals(HttpResponseCodes.SC_OK, response.getStatus());
Assert.assertEquals(ERROR_MESSAGE, "a:b:c:", response.getEntity(String.class));
}
/**
* @tpTestDetails Old client: check settings of query set by proxy
* @tpSince RESTEasy 3.0.16
*/
@SuppressWarnings("unchecked")
@Test
public void testQueryProxySetOldClient() throws Exception {
ParameterListInterface client = ProxyFactory.create(ParameterListInterface.class, generateBaseUrl());
HashSet<String> set = new HashSet<>();
set.add("a");
set.add("b");
set.add("c");
ClientResponse<String> response = ClientResponse.class.cast(client.querySet(set));
Assert.assertEquals(HttpResponseCodes.SC_OK, response.getStatus());
Assert.assertEquals(ERROR_MESSAGE, "a:b:c:", response.getEntity(String.class));
}
/**
* @tpTestDetails Old client: check settings of query sorted set by proxy
* @tpSince RESTEasy 3.0.16
*/
@SuppressWarnings("unchecked")
@Test
public void testQueryProxySortedSetOldClient() throws Exception {
ParameterListInterface client = ProxyFactory.create(ParameterListInterface.class, generateBaseUrl());
TreeSet<String> set = new TreeSet<String>();
set.add("a");
set.add("b");
set.add("c");
ClientResponse<String> response = ClientResponse.class.cast(client.querySortedSet(set));
Assert.assertEquals(HttpResponseCodes.SC_OK, response.getStatus());
Assert.assertEquals(ERROR_MESSAGE, "a:b:c:", response.getEntity(String.class));
}
/**
* @tpTestDetails Old client: check settings of query list with other parameter by proxy
* @tpSince RESTEasy 3.0.16
*/
@SuppressWarnings("unchecked")
@Test
public void testQueryWithEntityProxyOldClient() throws Exception {
ParameterListInterface client = ProxyFactory.create(ParameterListInterface.class, generateBaseUrl());
ArrayList<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
ClientResponse<String> response = ClientResponse.class.cast(client.queryWithEntity(list, "entity"));
Assert.assertEquals(HttpResponseCodes.SC_OK, response.getStatus());
Assert.assertEquals(ERROR_MESSAGE, "entity:a:b:c:", response.getEntity(String.class));
}
/**
* @tpTestDetails Old client: check settings of query list, matrix list and other parameter by proxy
* @tpSince RESTEasy 3.0.16
*/
@SuppressWarnings("unchecked")
@Test
public void testMatrixQueryWithEntityProxyOldClient() throws Exception {
ParameterListInterface client = ProxyFactory.create(ParameterListInterface.class, generateBaseUrl());
ArrayList<String> matrixParams = new ArrayList<>();
matrixParams.add("a");
matrixParams.add("b");
matrixParams.add("c");
ArrayList<String> queryParams = new ArrayList<>();
queryParams.add("x");
queryParams.add("y");
queryParams.add("z");
ClientResponse<String> response = ClientResponse.class.cast(client.matrixQueryWithEntity(matrixParams, queryParams, "entity"));
Assert.assertEquals(HttpResponseCodes.SC_OK, response.getStatus());
Assert.assertEquals(ERROR_MESSAGE, "entity:a:b:c:x:y:z:", response.getEntity(String.class));
}
/**
* @tpTestDetails New client: check settings of matrix list by proxy
* @tpSince RESTEasy 3.0.16
*/
@Test
public void testMatrixProxyListNewClient() throws Exception {
final ParameterListInterface client = ProxyBuilder.builder(ParameterListInterface.class,
restClient.target(generateBaseUrl())).build();
ArrayList<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
Response response = client.matrixList(list);
Assert.assertEquals(HttpResponseCodes.SC_OK, response.getStatus());
Assert.assertEquals(ERROR_MESSAGE, "a:b:c:", response.readEntity(String.class));
response.close();
}
/**
* @tpTestDetails New client: check settings of matrix set by proxy
* @tpSince RESTEasy 3.0.16
*/
@Test
public void testMatrixProxySetNewClient() throws Exception {
final ParameterListInterface client = ProxyBuilder.builder(ParameterListInterface.class,
restClient.target(generateBaseUrl())).build();
HashSet<String> set = new HashSet<>();
set.add("a");
set.add("b");
set.add("c");
Response response = client.matrixSet(set);
Assert.assertEquals(HttpResponseCodes.SC_OK, response.getStatus());
Assert.assertEquals(ERROR_MESSAGE, "a:b:c:", response.readEntity(String.class));
}
/**
* @tpTestDetails New client: check settings of matrix sorted set by proxy
* @tpSince RESTEasy 3.0.16
*/
@Test
public void testMatrixProxySortedSetNewClient() throws Exception {
final ParameterListInterface client = ProxyBuilder.builder(ParameterListInterface.class,
restClient.target(generateBaseUrl())).build();
TreeSet<String> set = new TreeSet<String>();
set.add("a");
set.add("b");
set.add("c");
Response response = client.matrixSortedSet(set);
Assert.assertEquals(HttpResponseCodes.SC_OK, response.getStatus());
Assert.assertEquals(ERROR_MESSAGE, "a:b:c:", response.readEntity(String.class));
}
/**
* @tpTestDetails New client: check settings of matrix list and other parameter by proxy
* @tpSince RESTEasy 3.0.16
*/
@Test
public void testMatrixWithEntityProxyNewClient() throws Exception {
final ParameterListInterface client = ProxyBuilder.builder(ParameterListInterface.class,
restClient.target(generateBaseUrl())).build();
ArrayList<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
Response response = client.matrixWithEntity(list, "entity");
Assert.assertEquals(HttpResponseCodes.SC_OK, response.getStatus());
Assert.assertEquals(ERROR_MESSAGE, "entity:a:b:c:", response.readEntity(String.class));
}
/**
* @tpTestDetails New client: check settings of query list by proxy
* @tpSince RESTEasy 3.0.16
*/
@Test
public void testQueryProxyListNewClient() throws Exception {
final ParameterListInterface client = ProxyBuilder.builder(ParameterListInterface.class,
restClient.target(generateBaseUrl())).build();
ArrayList<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
Response response = client.queryList(list);
Assert.assertEquals(HttpResponseCodes.SC_OK, response.getStatus());
Assert.assertEquals(ERROR_MESSAGE, "a:b:c:", response.readEntity(String.class));
}
/**
* @tpTestDetails New client: check settings of query set by proxy
* @tpSince RESTEasy 3.0.16
*/
@Test
public void testQueryProxySetNewClient() throws Exception {
final ParameterListInterface client = ProxyBuilder.builder(ParameterListInterface.class,
restClient.target(generateBaseUrl())).build();
HashSet<String> set = new HashSet<>();
set.add("a");
set.add("b");
set.add("c");
Response response = client.querySet(set);
Assert.assertEquals(HttpResponseCodes.SC_OK, response.getStatus());
Assert.assertEquals(ERROR_MESSAGE, "a:b:c:", response.readEntity(String.class));
}
/**
* @tpTestDetails New client: check settings of query sorted set by proxy
* @tpSince RESTEasy 3.0.16
*/
@Test
public void testQueryProxySortedSetNewClient() throws Exception {
final ParameterListInterface client = ProxyBuilder.builder(ParameterListInterface.class,
restClient.target(generateBaseUrl())).build();
TreeSet<String> set = new TreeSet<String>();
set.add("a");
set.add("b");
set.add("c");
Response response = client.querySortedSet(set);
Assert.assertEquals(HttpResponseCodes.SC_OK, response.getStatus());
Assert.assertEquals(ERROR_MESSAGE, "a:b:c:", response.readEntity(String.class));
}
/**
* @tpTestDetails New client: check settings of query list with other parameter by proxy
* @tpSince RESTEasy 3.0.16
*/
@Test
public void testQueryWithEntityProxyNewClient() throws Exception {
final ParameterListInterface client = ProxyBuilder.builder(ParameterListInterface.class,
restClient.target(generateBaseUrl())).build();
ArrayList<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
Response response = client.queryWithEntity(list, "entity");
Assert.assertEquals(HttpResponseCodes.SC_OK, response.getStatus());
Assert.assertEquals(ERROR_MESSAGE, "entity:a:b:c:", response.readEntity(String.class));
}
/**
* @tpTestDetails New client: check settings of query list, matrix list and other parameter by proxy
* @tpSince RESTEasy 3.0.16
*/
@Test
public void testMatrixQueryWithEntityProxyNewClient() throws Exception {
final ParameterListInterface client = ProxyBuilder.builder(ParameterListInterface.class,
restClient.target(generateBaseUrl())).build();
ArrayList<String> matrixParams = new ArrayList<>();
matrixParams.add("a");
matrixParams.add("b");
matrixParams.add("c");
ArrayList<String> queryParams = new ArrayList<>();
queryParams.add("x");
queryParams.add("y");
queryParams.add("z");
Response response = client.matrixQueryWithEntity(matrixParams, queryParams, "entity");
Assert.assertEquals(HttpResponseCodes.SC_OK, response.getStatus());
Assert.assertEquals(ERROR_MESSAGE, "entity:a:b:c:x:y:z:", response.readEntity(String.class));
}
}