package org.jboss.resteasy.test.client; import org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder; import org.jboss.resteasy.spi.ResteasyProviderFactory; import org.jboss.resteasy.test.client.resource.ConfigurationInheritenceTestFeature1; import org.jboss.resteasy.test.client.resource.ConfigurationInheritenceTestFeature2; import org.jboss.resteasy.test.client.resource.ConfigurationInheritenceTestFeature3; import org.jboss.resteasy.test.client.resource.ConfigurationInheritenceTestFeature4; import org.jboss.resteasy.test.client.resource.ConfigurationInheritenceTestFeature5; import org.jboss.resteasy.test.client.resource.ConfigurationInheritenceTestFeature6; import org.jboss.resteasy.test.client.resource.ConfigurationInheritenceTestFilter1; import org.jboss.resteasy.test.client.resource.ConfigurationInheritenceTestFilter2; import org.jboss.resteasy.test.client.resource.ConfigurationInheritenceTestFilter3; import org.jboss.resteasy.test.client.resource.ConfigurationInheritenceTestFilter4; import org.jboss.resteasy.test.client.resource.ConfigurationInheritenceTestFilter5; import org.jboss.resteasy.test.client.resource.ConfigurationInheritenceTestFilter6; import org.jboss.resteasy.test.client.resource.ConfigurationInheritenceTestMessageBodyReader1; import org.jboss.resteasy.test.client.resource.ConfigurationInheritenceTestMessageBodyReader2; import org.jboss.resteasy.test.client.resource.ConfigurationInheritenceTestMessageBodyReader3; import org.jboss.resteasy.test.client.resource.ConfigurationInheritenceTestMessageBodyReader4; import org.jboss.resteasy.test.client.resource.ConfigurationInheritenceTestMessageBodyReader5; import org.jboss.resteasy.test.client.resource.ConfigurationInheritenceTestMessageBodyReader6; import org.junit.Assert; import org.junit.Test; import javax.ws.rs.RuntimeType; import javax.ws.rs.client.Client; import javax.ws.rs.client.WebTarget; import javax.ws.rs.core.Configuration; import java.util.Set; /** * @tpSubChapter Resteasy-client * @tpChapter Client tests * @tpTestCaseDetails Regression test for RESTEASY-1345 * @tpSince RESTEasy 3.0.17 */ public class ConfigurationInheritenceTest extends ResteasyProviderFactory { private static ConfigurationInheritenceTestFeature2 testFeature2 = new ConfigurationInheritenceTestFeature2(); private static ConfigurationInheritenceTestFeature4 testFeature4 = new ConfigurationInheritenceTestFeature4(); private static ConfigurationInheritenceTestFeature6 testFeature6 = new ConfigurationInheritenceTestFeature6(); private static ConfigurationInheritenceTestFilter2 testFilter2 = new ConfigurationInheritenceTestFilter2(); private static ConfigurationInheritenceTestFilter4 testFilter4 = new ConfigurationInheritenceTestFilter4(); private static ConfigurationInheritenceTestFilter6 testFilter6 = new ConfigurationInheritenceTestFilter6(); private static ConfigurationInheritenceTestMessageBodyReader2 testMessageBodyReader2 = new ConfigurationInheritenceTestMessageBodyReader2(); private static ConfigurationInheritenceTestMessageBodyReader4 testMessageBodyReader4 = new ConfigurationInheritenceTestMessageBodyReader4(); private static ConfigurationInheritenceTestMessageBodyReader6 testMessageBodyReader6 = new ConfigurationInheritenceTestMessageBodyReader6(); private static final String ERROR_MSG = "Error during client-side registration"; /** * @tpTestDetails Register items to clientBuilder. * @tpSince RESTEasy 3.0.17 */ @Test public void testClientBuilderToClient() { ResteasyClientBuilder clientBuilder = new ResteasyClientBuilder(); clientBuilder.register(ConfigurationInheritenceTestFeature1.class); clientBuilder.register(testFeature2); clientBuilder.register(new ConfigurationInheritenceTestFilter1()); clientBuilder.register(testFilter2); clientBuilder.register(new ConfigurationInheritenceTestMessageBodyReader1()); clientBuilder.register(testMessageBodyReader2); clientBuilder.property("property1", "value1"); Client client = clientBuilder.build(); client.register(ConfigurationInheritenceTestFeature3.class); client.register(testFeature4); client.register(new ConfigurationInheritenceTestFilter3()); client.register(testFilter4); client.register(new ConfigurationInheritenceTestMessageBodyReader3()); client.register(testMessageBodyReader4); client.property("property2", "value2"); clientBuilder.register(ConfigurationInheritenceTestFeature5.class); clientBuilder.register(testFeature6); clientBuilder.register(new ConfigurationInheritenceTestFilter5()); clientBuilder.register(testFilter6); clientBuilder.register(new ConfigurationInheritenceTestMessageBodyReader5()); clientBuilder.register(testMessageBodyReader6); clientBuilder.property("property3", "value3"); checkFirstConfiguration(clientBuilder.getConfiguration()); checkSecondConfiguration(client.getConfiguration()); } /** * @tpTestDetails Register items to client. * @tpSince RESTEasy 3.0.17 */ @Test public void testClientToWebTarget() { ResteasyClientBuilder clientBuilder = new ResteasyClientBuilder(); Client client = clientBuilder.build(); client.register(ConfigurationInheritenceTestFeature1.class); client.register(testFeature2); client.register(new ConfigurationInheritenceTestFilter1()); client.register(testFilter2); client.register(new ConfigurationInheritenceTestMessageBodyReader1()); client.register(testMessageBodyReader2); client.property("property1", "value1"); WebTarget target = client.target("http://localhost:8081"); target.register(ConfigurationInheritenceTestFeature3.class); target.register(testFeature4); target.register(new ConfigurationInheritenceTestFilter3()); target.register(testFilter4); target.register(new ConfigurationInheritenceTestMessageBodyReader3()); target.register(testMessageBodyReader4); target.property("property2", "value2"); client.register(ConfigurationInheritenceTestFeature5.class); client.register(testFeature6); client.register(new ConfigurationInheritenceTestFilter5()); client.register(testFilter6); client.register(new ConfigurationInheritenceTestMessageBodyReader5()); client.register(testMessageBodyReader6); client.property("property3", "value3"); checkFirstConfiguration(client.getConfiguration()); checkSecondConfiguration(target.getConfiguration()); } /** * @tpTestDetails Check default RuntimeType oc clientBuilder, client end webTarget. * @tpSince RESTEasy 3.0.17 */ @Test public void testRuntimeType() { ResteasyClientBuilder clientBuilder = new ResteasyClientBuilder(); Assert.assertEquals("Wrong RuntimeType in ClientBuilder", RuntimeType.CLIENT, clientBuilder.getConfiguration().getRuntimeType()); Client client = clientBuilder.build(); Assert.assertEquals("Wrong RuntimeType in Client", RuntimeType.CLIENT, client.getConfiguration().getRuntimeType()); WebTarget target = client.target("http://localhost:8081"); Assert.assertEquals("Wrong RuntimeType in WebTarget", RuntimeType.CLIENT, target.getConfiguration().getRuntimeType()); } private void checkFirstConfiguration(Configuration config) { Set<Class<?>> classes = config.getClasses(); Assert.assertTrue(ERROR_MSG, classes.contains(ConfigurationInheritenceTestFeature1.class)); Assert.assertFalse(ERROR_MSG, classes.contains(ConfigurationInheritenceTestFeature3.class)); Assert.assertTrue(ERROR_MSG, classes.contains(ConfigurationInheritenceTestFeature5.class)); Assert.assertFalse(ERROR_MSG, classes.contains(ConfigurationInheritenceTestFilter3.class)); Assert.assertFalse(ERROR_MSG, classes.contains(ConfigurationInheritenceTestFilter4.class)); Assert.assertFalse(ERROR_MSG, classes.contains(ConfigurationInheritenceTestMessageBodyReader3.class)); Assert.assertFalse(ERROR_MSG, classes.contains(ConfigurationInheritenceTestMessageBodyReader4.class)); Assert.assertTrue(ERROR_MSG, config.isEnabled(ConfigurationInheritenceTestFeature1.class)); Assert.assertTrue(ERROR_MSG, config.isEnabled(ConfigurationInheritenceTestFeature2.class)); Assert.assertFalse(ERROR_MSG, config.isEnabled(ConfigurationInheritenceTestFeature3.class)); Assert.assertFalse(ERROR_MSG, config.isEnabled(ConfigurationInheritenceTestFeature4.class)); Assert.assertTrue(ERROR_MSG, config.isEnabled(ConfigurationInheritenceTestFeature5.class)); Assert.assertTrue(ERROR_MSG, config.isEnabled(ConfigurationInheritenceTestFeature6.class)); Assert.assertTrue(ERROR_MSG, config.isRegistered(ConfigurationInheritenceTestFeature1.class)); Assert.assertTrue(ERROR_MSG, config.isRegistered(ConfigurationInheritenceTestFeature2.class)); Assert.assertFalse(ERROR_MSG, config.isRegistered(ConfigurationInheritenceTestFeature3.class)); Assert.assertFalse(ERROR_MSG, config.isRegistered(ConfigurationInheritenceTestFeature4.class)); Assert.assertTrue(ERROR_MSG, config.isRegistered(ConfigurationInheritenceTestFeature5.class)); Assert.assertTrue(ERROR_MSG, config.isRegistered(ConfigurationInheritenceTestFeature6.class)); Assert.assertTrue(ERROR_MSG, config.isRegistered(ConfigurationInheritenceTestFilter1.class)); Assert.assertTrue(ERROR_MSG, config.isRegistered(ConfigurationInheritenceTestFilter2.class)); Assert.assertFalse(ERROR_MSG, config.isRegistered(ConfigurationInheritenceTestFilter3.class)); Assert.assertFalse(ERROR_MSG, config.isRegistered(ConfigurationInheritenceTestFilter4.class)); Assert.assertTrue(ERROR_MSG, config.isRegistered(ConfigurationInheritenceTestFilter5.class)); Assert.assertTrue(ERROR_MSG, config.isRegistered(ConfigurationInheritenceTestFilter6.class)); Assert.assertTrue(ERROR_MSG, config.isRegistered(ConfigurationInheritenceTestMessageBodyReader1.class)); Assert.assertTrue(ERROR_MSG, config.isRegistered(ConfigurationInheritenceTestMessageBodyReader2.class)); Assert.assertFalse(ERROR_MSG, config.isRegistered(ConfigurationInheritenceTestMessageBodyReader3.class)); Assert.assertFalse(ERROR_MSG, config.isRegistered(ConfigurationInheritenceTestMessageBodyReader4.class)); Assert.assertTrue(ERROR_MSG, config.isRegistered(ConfigurationInheritenceTestMessageBodyReader5.class)); Assert.assertTrue(ERROR_MSG, config.isRegistered(ConfigurationInheritenceTestMessageBodyReader6.class)); Set<Object> instances = config.getInstances(); Assert.assertTrue(ERROR_MSG, instances.contains(testFeature2)); Assert.assertFalse(ERROR_MSG, instances.contains(testFeature4)); Assert.assertTrue(ERROR_MSG, instances.contains(testFeature6)); Assert.assertTrue(ERROR_MSG, instances.contains(testFilter2)); Assert.assertFalse(ERROR_MSG, instances.contains(testFilter4)); Assert.assertTrue(ERROR_MSG, instances.contains(testFilter6)); Assert.assertTrue(ERROR_MSG, instances.contains(testMessageBodyReader2)); Assert.assertFalse(ERROR_MSG, instances.contains(testMessageBodyReader4)); Assert.assertTrue(ERROR_MSG, instances.contains(testMessageBodyReader6)); Assert.assertTrue(ERROR_MSG, config.isEnabled(testFeature2)); Assert.assertFalse(ERROR_MSG, config.isEnabled(testFeature4)); Assert.assertTrue(ERROR_MSG, config.isEnabled(testFeature6)); Assert.assertTrue(ERROR_MSG, config.isRegistered(testFeature2)); Assert.assertFalse(ERROR_MSG, config.isRegistered(testFeature4)); Assert.assertTrue(ERROR_MSG, config.isRegistered(testFeature6)); Assert.assertTrue(ERROR_MSG, config.isRegistered(testFilter2)); Assert.assertFalse(ERROR_MSG, config.isRegistered(testFilter4)); Assert.assertTrue(ERROR_MSG, config.isRegistered(testFilter6)); Assert.assertTrue(ERROR_MSG, config.isRegistered(testMessageBodyReader2)); Assert.assertFalse(ERROR_MSG, config.isRegistered(testMessageBodyReader4)); Assert.assertTrue(ERROR_MSG, config.isRegistered(testMessageBodyReader6)); Assert.assertEquals(ERROR_MSG, 2, config.getProperties().size()); Assert.assertEquals(ERROR_MSG, "value1", config.getProperty("property1")); Assert.assertEquals(ERROR_MSG, "value3", config.getProperty("property3")); Assert.assertFalse(ERROR_MSG, config.getContracts(ConfigurationInheritenceTestFeature1.class).isEmpty()); Assert.assertFalse(ERROR_MSG, config.getContracts(ConfigurationInheritenceTestFeature2.class).isEmpty()); Assert.assertTrue(ERROR_MSG, config.getContracts(ConfigurationInheritenceTestFeature3.class).isEmpty()); Assert.assertTrue(ERROR_MSG, config.getContracts(ConfigurationInheritenceTestFeature4.class).isEmpty()); Assert.assertFalse(ERROR_MSG, config.getContracts(ConfigurationInheritenceTestFeature5.class).isEmpty()); Assert.assertFalse(ERROR_MSG, config.getContracts(ConfigurationInheritenceTestFeature6.class).isEmpty()); } private void checkSecondConfiguration(Configuration config) { Set<Class<?>> classes = config.getClasses(); Assert.assertTrue(ERROR_MSG, classes.contains(ConfigurationInheritenceTestFeature1.class)); Assert.assertTrue(ERROR_MSG, classes.contains(ConfigurationInheritenceTestFeature3.class)); Assert.assertFalse(ERROR_MSG, classes.contains(ConfigurationInheritenceTestFeature5.class)); Assert.assertTrue(ERROR_MSG, config.isEnabled(ConfigurationInheritenceTestFeature1.class)); Assert.assertTrue(ERROR_MSG, config.isEnabled(ConfigurationInheritenceTestFeature2.class)); Assert.assertTrue(ERROR_MSG, config.isEnabled(ConfigurationInheritenceTestFeature3.class)); Assert.assertTrue(ERROR_MSG, config.isEnabled(ConfigurationInheritenceTestFeature4.class)); Assert.assertFalse(ERROR_MSG, config.isEnabled(ConfigurationInheritenceTestFeature5.class)); Assert.assertFalse(ERROR_MSG, config.isEnabled(ConfigurationInheritenceTestFeature6.class)); Assert.assertTrue(ERROR_MSG, config.isRegistered(ConfigurationInheritenceTestFeature1.class)); Assert.assertTrue(ERROR_MSG, config.isRegistered(ConfigurationInheritenceTestFeature2.class)); Assert.assertTrue(ERROR_MSG, config.isRegistered(ConfigurationInheritenceTestFeature3.class)); Assert.assertTrue(ERROR_MSG, config.isRegistered(ConfigurationInheritenceTestFeature4.class)); Assert.assertFalse(ERROR_MSG, config.isRegistered(ConfigurationInheritenceTestFeature5.class)); Assert.assertFalse(ERROR_MSG, config.isRegistered(ConfigurationInheritenceTestFeature6.class)); Assert.assertTrue(ERROR_MSG, config.isRegistered(ConfigurationInheritenceTestFilter1.class)); Assert.assertTrue(ERROR_MSG, config.isRegistered(ConfigurationInheritenceTestFilter2.class)); Assert.assertTrue(ERROR_MSG, config.isRegistered(ConfigurationInheritenceTestFilter3.class)); Assert.assertTrue(ERROR_MSG, config.isRegistered(ConfigurationInheritenceTestFilter4.class)); Assert.assertFalse(ERROR_MSG, config.isRegistered(ConfigurationInheritenceTestFilter5.class)); Assert.assertFalse(ERROR_MSG, config.isRegistered(ConfigurationInheritenceTestFilter6.class)); Assert.assertTrue(ERROR_MSG, config.isRegistered(ConfigurationInheritenceTestMessageBodyReader1.class)); Assert.assertTrue(ERROR_MSG, config.isRegistered(ConfigurationInheritenceTestMessageBodyReader2.class)); Assert.assertTrue(ERROR_MSG, config.isRegistered(ConfigurationInheritenceTestMessageBodyReader3.class)); Assert.assertTrue(ERROR_MSG, config.isRegistered(ConfigurationInheritenceTestMessageBodyReader4.class)); Assert.assertFalse(ERROR_MSG, config.isRegistered(ConfigurationInheritenceTestMessageBodyReader5.class)); Assert.assertFalse(ERROR_MSG, config.isRegistered(ConfigurationInheritenceTestMessageBodyReader6.class)); Set<Object> instances = config.getInstances(); Assert.assertTrue(ERROR_MSG, instances.contains(testFeature2)); Assert.assertTrue(ERROR_MSG, instances.contains(testFeature4)); Assert.assertFalse(ERROR_MSG, instances.contains(testFeature6)); Assert.assertTrue(ERROR_MSG, instances.contains(testFilter2)); Assert.assertTrue(ERROR_MSG, instances.contains(testFilter4)); Assert.assertFalse(ERROR_MSG, instances.contains(testFilter6)); Assert.assertTrue(ERROR_MSG, instances.contains(testMessageBodyReader2)); Assert.assertTrue(ERROR_MSG, instances.contains(testMessageBodyReader4)); Assert.assertFalse(ERROR_MSG, instances.contains(testMessageBodyReader6)); Assert.assertTrue(ERROR_MSG, config.isEnabled(testFeature2)); Assert.assertTrue(ERROR_MSG, config.isEnabled(testFeature4)); Assert.assertFalse(ERROR_MSG, config.isEnabled(testFeature6)); Assert.assertTrue(ERROR_MSG, config.isRegistered(testFeature2)); Assert.assertTrue(ERROR_MSG, config.isRegistered(testFeature4)); Assert.assertFalse(ERROR_MSG, config.isRegistered(testFeature6)); Assert.assertTrue(ERROR_MSG, config.isRegistered(testFilter2)); Assert.assertTrue(ERROR_MSG, config.isRegistered(testFilter4)); Assert.assertFalse(ERROR_MSG, config.isRegistered(testFilter6)); Assert.assertTrue(ERROR_MSG, config.isRegistered(testMessageBodyReader2)); Assert.assertTrue(ERROR_MSG, config.isRegistered(testMessageBodyReader4)); Assert.assertFalse(ERROR_MSG, config.isRegistered(testMessageBodyReader6)); Assert.assertEquals(ERROR_MSG, 2, config.getProperties().size()); Assert.assertEquals(ERROR_MSG, "value1", config.getProperty("property1")); Assert.assertEquals(ERROR_MSG, "value2", config.getProperty("property2")); Assert.assertFalse(ERROR_MSG, config.getContracts(ConfigurationInheritenceTestFeature1.class).isEmpty()); Assert.assertFalse(ERROR_MSG, config.getContracts(ConfigurationInheritenceTestFeature2.class).isEmpty()); Assert.assertFalse(ERROR_MSG, config.getContracts(ConfigurationInheritenceTestFeature3.class).isEmpty()); Assert.assertFalse(ERROR_MSG, config.getContracts(ConfigurationInheritenceTestFeature4.class).isEmpty()); Assert.assertTrue(ERROR_MSG, config.getContracts(ConfigurationInheritenceTestFeature5.class).isEmpty()); Assert.assertTrue(ERROR_MSG, config.getContracts(ConfigurationInheritenceTestFeature6.class).isEmpty()); } }