package io.dropwizard.client; import com.codahale.metrics.MetricRegistry; import com.google.common.io.Resources; import io.dropwizard.Application; import io.dropwizard.Configuration; import io.dropwizard.jackson.Jackson; import io.dropwizard.setup.Environment; import io.dropwizard.testing.junit.DropwizardAppRule; import io.dropwizard.util.Duration; import org.junit.Before; import org.junit.ClassRule; import org.junit.Test; import javax.ws.rs.GET; import javax.ws.rs.HeaderParam; import javax.ws.rs.Path; import java.net.URI; import java.util.Optional; import java.util.concurrent.Executors; import static org.assertj.core.api.Assertions.assertThat; public class JerseyIgnoreRequestUserAgentHeaderFilterTest { @ClassRule public static final DropwizardAppRule<Configuration> APP_RULE = new DropwizardAppRule<>(TestApplication.class, Resources.getResource("yaml/jerseyIgnoreRequestUserAgentHeaderFilterTest.yml").getPath()); private final URI testUri = URI.create("http://localhost:" + APP_RULE.getLocalPort()); private JerseyClientBuilder clientBuilder; private JerseyClientConfiguration clientConfiguration; @Before public void setup() { clientConfiguration = new JerseyClientConfiguration(); clientConfiguration.setConnectionTimeout(Duration.milliseconds(1000L)); clientConfiguration.setTimeout(Duration.milliseconds(2500L)); clientBuilder = new JerseyClientBuilder(new MetricRegistry()) .using(clientConfiguration) .using(Executors.newSingleThreadExecutor(), Jackson.newObjectMapper()); } @Test public void clientIsSetRequestIsNotSet() { clientConfiguration.setUserAgent(Optional.of("ClientUserAgentHeaderValue")); assertThat( clientBuilder.using(clientConfiguration). build("ClientName").target(testUri + "/user_agent") .request() .get(String.class) ).isEqualTo("ClientUserAgentHeaderValue"); } @Test public void clientIsNotSetRequestIsSet() { assertThat( clientBuilder.build("ClientName").target(testUri + "/user_agent") .request().header("User-Agent", "RequestUserAgentHeaderValue") .get(String.class) ).isEqualTo("RequestUserAgentHeaderValue"); } @Test public void clientIsNotSetRequestIsNotSet() { assertThat( clientBuilder.build("ClientName").target(testUri + "/user_agent") .request() .get(String.class) ).isEqualTo("ClientName"); } @Test public void clientIsSetRequestIsSet() { clientConfiguration.setUserAgent(Optional.of("ClientUserAgentHeaderValue")); assertThat( clientBuilder.build("ClientName").target(testUri + "/user_agent") .request().header("User-Agent", "RequestUserAgentHeaderValue") .get(String.class) ).isEqualTo("RequestUserAgentHeaderValue"); } @Path("/") public static class TestResource { @GET @Path("user_agent") public String getReturnUserAgentHeader(@HeaderParam("User-Agent") String userAgentHeader) { return userAgentHeader; } } public static class TestApplication extends Application<Configuration> { public static void main(String[] args) throws Exception { new TestApplication().run(args); } @Override public void run(Configuration configuration, Environment environment) throws Exception { environment.jersey().register(TestResource.class); } } }