package org.jboss.resteasy.test.client;
import org.jboss.resteasy.utils.TestUtil;
import org.junit.Assert;
import org.junit.Test;
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.Entity;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.Configuration;
import javax.ws.rs.core.Feature;
import javax.ws.rs.core.FeatureContext;
import javax.ws.rs.core.Response;
import static org.jboss.resteasy.test.TestPortProvider.generateURL;
/**
* @tpSubChapter Resteasy-client
* @tpChapter Unit tests
* @tpSince RESTEasy 3.0.16
*
*/
public class ClientBuilderTest {
/**
* @tpTestDetails Create string entity with unparsable media type
* @tpPassCrit IllegalArgumentException is raised
* @tpSince RESTEasy 3.0.16
*/
@Test(expected = IllegalArgumentException.class)
public void entityStringThrowsExceptionWhenUnparsableTest() throws Exception {
Entity.entity("entity", "\\//\\");
Assert.fail();
}
/**
* @tpTestDetails Create client, set up custom property for it, get client configuration
* and create new client using that configuration
* @tpPassCrit Client is created
* @tpSince RESTEasy 3.0.16
*/
@Test
public void testBuilder() throws Exception {
String property = "prop";
Client client = ClientBuilder.newClient();
client.property(property, property);
Configuration config = client.getConfiguration();
client = ClientBuilder.newClient(config);
}
/**
* @tpTestDetails Create client with custom property, check that property is set and remove the property
* from client configuration
* @tpPassCrit Property is added and removed from client configuration
* @tpSince RESTEasy 3.0.16
*/
@Test
public void addAndRemovePropertyTest() throws Exception {
String property = "prop";
Client client = ClientBuilder.newClient();
client.property(property, property);
Object p = client.getConfiguration().getProperty(property);
Assert.assertEquals("prop", (String) p);
try {
client.property(property, null);
} catch (NullPointerException e) {
Assert.fail(TestUtil.getErrorMessageForKnownIssue("JBEAP-324", "Couldn't remove property"));
}
p = client.getConfiguration().getProperty(property);
Assert.assertEquals(null, p);
}
/**
* @tpTestDetails Invoke target method on the closed client
* @tpPassCrit IllegalStateException is raised
* @tpSince RESTEasy 3.0.16
*/
@Test(expected = IllegalStateException.class)
public void closeClientSendRequestTest() throws Exception {
Client client = ClientBuilder.newClient();
client.close();
client.target(generateURL("/"));
}
/**
* @tpTestDetails Create Webtarget instance, close the client and execute get request on the original
* Webtarget instance
* @tpPassCrit IllegalStateException is raised
* @tpSince RESTEasy 3.0.16
*/
@Test(expected = IllegalStateException.class)
public void closeClientWebTargetTest() throws Exception {
Client client = ClientBuilder.newClient();
WebTarget base = client.target(generateURL("/") + "/test");
client.close();
Response response = base.request().get();
}
public static class FeatureReturningFalse implements Feature {
@Override
public boolean configure(FeatureContext context) {
// false returning feature is not to be registered
return false;
}
}
}