This is an automated email from the ASF dual-hosted git repository. jamesnetherton pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
The following commit(s) were added to refs/heads/main by this push: new 8190b71 Improve native support for org.apache.http.impl.client.BasicAuthCache 8190b71 is described below commit 8190b7169c2f3793489db162a2264a0030765842 Author: James Netherton <jamesnether...@gmail.com> AuthorDate: Wed Sep 15 13:54:20 2021 +0100 Improve native support for org.apache.http.impl.client.BasicAuthCache Fixes #3079 --- extensions-support/httpclient/runtime/pom.xml | 5 ++++ .../httpclient/graalvm}/BasicAuthCacheAlias.java | 2 +- extensions/couchdb/runtime/pom.xml | 5 ---- .../quarkus/component/http/it/HttpProducers.java | 28 ++++++++++++++++++++++ .../quarkus/component/http/it/HttpResource.java | 17 +++++++++++++ .../camel/quarkus/component/http/it/HttpTest.java | 12 ++++++++++ 6 files changed, 63 insertions(+), 6 deletions(-) diff --git a/extensions-support/httpclient/runtime/pom.xml b/extensions-support/httpclient/runtime/pom.xml index 39eea3a..826171b 100644 --- a/extensions-support/httpclient/runtime/pom.xml +++ b/extensions-support/httpclient/runtime/pom.xml @@ -63,6 +63,11 @@ </exclusion> </exclusions> </dependency> + <dependency> + <groupId>org.graalvm.nativeimage</groupId> + <artifactId>svm</artifactId> + <scope>provided</scope> + </dependency> </dependencies> <build> diff --git a/extensions/couchdb/runtime/src/main/java/org/apache/camel/quarkus/couchdb/BasicAuthCacheAlias.java b/extensions-support/httpclient/runtime/src/main/java/org/apache/camel/quarkus/support/httpclient/graalvm/BasicAuthCacheAlias.java similarity index 97% rename from extensions/couchdb/runtime/src/main/java/org/apache/camel/quarkus/couchdb/BasicAuthCacheAlias.java rename to extensions-support/httpclient/runtime/src/main/java/org/apache/camel/quarkus/support/httpclient/graalvm/BasicAuthCacheAlias.java index 371c6d2..b040af5 100644 --- a/extensions/couchdb/runtime/src/main/java/org/apache/camel/quarkus/couchdb/BasicAuthCacheAlias.java +++ b/extensions-support/httpclient/runtime/src/main/java/org/apache/camel/quarkus/support/httpclient/graalvm/BasicAuthCacheAlias.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.camel.quarkus.couchdb; +package org.apache.camel.quarkus.support.httpclient.graalvm; import java.util.Map; diff --git a/extensions/couchdb/runtime/pom.xml b/extensions/couchdb/runtime/pom.xml index ba8c3cd..b7e0988 100644 --- a/extensions/couchdb/runtime/pom.xml +++ b/extensions/couchdb/runtime/pom.xml @@ -59,11 +59,6 @@ <groupId>org.apache.camel</groupId> <artifactId>camel-couchdb</artifactId> </dependency> - <dependency> - <groupId>org.graalvm.nativeimage</groupId> - <artifactId>svm</artifactId> - <scope>provided</scope> - </dependency> </dependencies> <build> diff --git a/integration-tests/http/src/main/java/org/apache/camel/quarkus/component/http/it/HttpProducers.java b/integration-tests/http/src/main/java/org/apache/camel/quarkus/component/http/it/HttpProducers.java index 53ad9fc..1cc7cda 100644 --- a/integration-tests/http/src/main/java/org/apache/camel/quarkus/component/http/it/HttpProducers.java +++ b/integration-tests/http/src/main/java/org/apache/camel/quarkus/component/http/it/HttpProducers.java @@ -19,6 +19,15 @@ package org.apache.camel.quarkus.component.http.it; import javax.inject.Named; import org.apache.camel.component.netty.ClientInitializerFactory; +import org.apache.http.HttpHost; +import org.apache.http.auth.AuthScope; +import org.apache.http.auth.UsernamePasswordCredentials; +import org.apache.http.client.CredentialsProvider; +import org.apache.http.client.protocol.HttpClientContext; +import org.apache.http.impl.auth.BasicScheme; +import org.apache.http.impl.client.BasicAuthCache; +import org.apache.http.impl.client.BasicCredentialsProvider; +import org.apache.http.protocol.HttpContext; import org.asynchttpclient.AsyncHttpClient; import org.asynchttpclient.AsyncHttpClientConfig; import org.asynchttpclient.DefaultAsyncHttpClient; @@ -58,4 +67,23 @@ public class HttpProducers { return new DefaultAsyncHttpClient(config); } + + @Named + HttpContext basicAuthContext() { + Integer port = ConfigProvider.getConfig().getValue("quarkus.http.test-port", Integer.class); + + UsernamePasswordCredentials credentials = new UsernamePasswordCredentials(USER_ADMIN, USER_ADMIN_PASSWORD); + CredentialsProvider provider = new BasicCredentialsProvider(); + provider.setCredentials(AuthScope.ANY, credentials); + + BasicAuthCache authCache = new BasicAuthCache(); + BasicScheme basicAuth = new BasicScheme(); + authCache.put(new HttpHost("localhost", port), basicAuth); + + HttpClientContext context = HttpClientContext.create(); + context.setAuthCache(authCache); + context.setCredentialsProvider(provider); + + return context; + } } diff --git a/integration-tests/http/src/main/java/org/apache/camel/quarkus/component/http/it/HttpResource.java b/integration-tests/http/src/main/java/org/apache/camel/quarkus/component/http/it/HttpResource.java index 79b0a4e..7ac1f8a 100644 --- a/integration-tests/http/src/main/java/org/apache/camel/quarkus/component/http/it/HttpResource.java +++ b/integration-tests/http/src/main/java/org/apache/camel/quarkus/component/http/it/HttpResource.java @@ -245,6 +245,23 @@ public class HttpResource { return Response.status(status).entity(body).build(); } + @Path("/http/auth/basic/cache") + @GET + @Produces(MediaType.TEXT_PLAIN) + public Response httpBasicAuthCache(@QueryParam("test-port") int port) { + + Exchange result = producerTemplate + .withHeader(Exchange.HTTP_QUERY, "component=http") + .toF("http://localhost:%d/test/client/auth/basic" + + "?throwExceptionOnFailure=false" + + "&httpContext=#basicAuthContext", port) + .send(); + + Integer status = result.getMessage().getHeader(Exchange.HTTP_RESPONSE_CODE, Integer.class); + String body = result.getMessage().getBody(String.class); + return Response.status(status).entity(body).build(); + } + @Path("/http/proxy") @GET @Produces(MediaType.APPLICATION_XML) diff --git a/integration-tests/http/src/test/java/org/apache/camel/quarkus/component/http/it/HttpTest.java b/integration-tests/http/src/test/java/org/apache/camel/quarkus/component/http/it/HttpTest.java index f81a1f2..1110af0 100644 --- a/integration-tests/http/src/test/java/org/apache/camel/quarkus/component/http/it/HttpTest.java +++ b/integration-tests/http/src/test/java/org/apache/camel/quarkus/component/http/it/HttpTest.java @@ -118,6 +118,18 @@ class HttpTest { .body(is("Component " + component + " is using basic auth")); } + @Test + public void basicAuthCache() { + RestAssured + .given() + .queryParam("test-port", RestAssured.port) + .when() + .get("/test/client/http/auth/basic/cache") + .then() + .statusCode(200) + .body(is("Component http is using basic auth")); + } + @ParameterizedTest @MethodSource("getHttpComponentNames") public void proxyServer(String component) {