You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by lb...@apache.org on 2019/10/24 15:13:51 UTC

[camel-quarkus] 04/04: Add more platform-http tests

This is an automated email from the ASF dual-hosted git repository.

lburgazzoli pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit f5243c6a82dfde937673e80d3e0c5acad5aaf390
Author: Peter Palaga <pp...@redhat.com>
AuthorDate: Wed Oct 23 15:03:47 2019 +0200

    Add more platform-http tests
---
 .../http/runtime/QuarkusPlatformHttpConsumer.java  |  1 +
 integration-tests/platform-http/pom.xml            |  1 +
 .../platform/http/it/PlatformHttpRouteBuilder.java | 31 ++++++++++
 .../platform/http/it/TestHeaderFilterStrategy.java | 34 +++++++++++
 .../component/http/server/it/PlatformHttpTest.java | 71 +++++++++++++++++++++-
 5 files changed, 137 insertions(+), 1 deletion(-)

diff --git a/extensions/platform-http/runtime/src/main/java/org/apache/camel/quarkus/component/platform/http/runtime/QuarkusPlatformHttpConsumer.java b/extensions/platform-http/runtime/src/main/java/org/apache/camel/quarkus/component/platform/http/runtime/QuarkusPlatformHttpConsumer.java
index a852ec1..fa026ab 100644
--- a/extensions/platform-http/runtime/src/main/java/org/apache/camel/quarkus/component/platform/http/runtime/QuarkusPlatformHttpConsumer.java
+++ b/extensions/platform-http/runtime/src/main/java/org/apache/camel/quarkus/component/platform/http/runtime/QuarkusPlatformHttpConsumer.java
@@ -334,6 +334,7 @@ public class QuarkusPlatformHttpConsumer extends DefaultConsumer {
         final Message result = new DefaultMessage(exchange);
 
         final HeaderFilterStrategy headerFilterStrategy = getEndpoint().getHeaderFilterStrategy();
+        System.out.println("headerFilterStrategy = "+  headerFilterStrategy);
         populateCamelHeaders(ctx, result.getHeaders(), exchange, headerFilterStrategy );
         final String mimeType = ctx.parsedHeaders().contentType().value();
         final boolean isMultipartFormData = "multipart/form-data".equals(mimeType);
diff --git a/integration-tests/platform-http/pom.xml b/integration-tests/platform-http/pom.xml
index 2b72ebd..d3c7f82 100644
--- a/integration-tests/platform-http/pom.xml
+++ b/integration-tests/platform-http/pom.xml
@@ -130,6 +130,7 @@
                                     <enableJni>true</enableJni>
                                     <enableAllSecurityServices>true</enableAllSecurityServices>
                                     <disableReports>true</disableReports>
+                                    <addAllCharsets>true</addAllCharsets><!-- Required by the encoding() test -->
                                 </configuration>
                             </execution>
                         </executions>
diff --git a/integration-tests/platform-http/src/main/java/org/apache/camel/quarkus/component/platform/http/it/PlatformHttpRouteBuilder.java b/integration-tests/platform-http/src/main/java/org/apache/camel/quarkus/component/platform/http/it/PlatformHttpRouteBuilder.java
index b675563..98b3a0d 100644
--- a/integration-tests/platform-http/src/main/java/org/apache/camel/quarkus/component/platform/http/it/PlatformHttpRouteBuilder.java
+++ b/integration-tests/platform-http/src/main/java/org/apache/camel/quarkus/component/platform/http/it/PlatformHttpRouteBuilder.java
@@ -17,9 +17,13 @@
 package org.apache.camel.quarkus.component.platform.http.it;
 
 import java.io.ByteArrayOutputStream;
+import java.util.Locale;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 import javax.activation.DataHandler;
 
+import org.apache.camel.Exchange;
 import org.apache.camel.attachment.AttachmentMessage;
 import org.apache.camel.builder.RouteBuilder;
 
@@ -32,12 +36,14 @@ public class PlatformHttpRouteBuilder extends RouteBuilder {
                 .setBody(constant("GET: /rest-get"))
                 .endRest()
             .post("/platform-http/rest-post")
+                .consumes("text/plain").produces("text/plain")
                 .route()
                 .setBody(constant("POST: /rest-post"))
                 .endRest();
 
         from("platform-http:/platform-http/hello?httpMethodRestrict=GET").setBody(simple("Hello ${header.name}"));
         from("platform-http:/platform-http/get-post?httpMethodRestrict=GET,POST").setBody(simple("Hello ${body}"));
+
         from("platform-http:/platform-http/multipart?httpMethodRestrict=POST")
             .to("log:multipart")
             .process(e -> {
@@ -48,5 +54,30 @@ public class PlatformHttpRouteBuilder extends RouteBuilder {
                     e.getMessage().setBody(out.toByteArray());
                 }
             });
+
+        from("platform-http:/platform-http/form-urlencoded?httpMethodRestrict=POST")
+            .to("log:form-urlencoded")
+            .setBody(e ->
+                ((Map<String, Object>)e.getMessage().getBody(Map.class)).entrySet().stream()
+                    .map(en -> en.getKey() + "=" + en.getValue().toString().toUpperCase(Locale.US))
+                    .collect(Collectors.joining("\n")));
+
+        from("platform-http:/platform-http/header-filter-strategy?httpMethodRestrict=GET&headerFilterStrategy=#TestHeaderFilterStrategy")
+            .to("log:header-filter-strategy")
+            .setBody(simple("k1=${header.k1}\nk2=${header.k2}"));
+
+        from("platform-http:/platform-http/multi-value-params?httpMethodRestrict=GET")
+            .to("log:multi-value-params")
+            .setBody(simple("k1=${header.k1}"));
+
+        from("platform-http:/platform-http/encoding?httpMethodRestrict=POST")
+            .to("log:encoding")
+            .setBody(e -> e.getMessage().getBody(String.class))
+            .setHeader("Content-Type").constant("text/plain ; charset=UTF-8");
+
+        from("platform-http:/platform-http/response-code-299?httpMethodRestrict=GET")
+            .to("log:response-code")
+            .setHeader(Exchange.HTTP_RESPONSE_CODE).constant(299);
+
     }
 }
diff --git a/integration-tests/platform-http/src/main/java/org/apache/camel/quarkus/component/platform/http/it/TestHeaderFilterStrategy.java b/integration-tests/platform-http/src/main/java/org/apache/camel/quarkus/component/platform/http/it/TestHeaderFilterStrategy.java
new file mode 100644
index 0000000..2d77171
--- /dev/null
+++ b/integration-tests/platform-http/src/main/java/org/apache/camel/quarkus/component/platform/http/it/TestHeaderFilterStrategy.java
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.quarkus.component.platform.http.it;
+
+import javax.enterprise.context.ApplicationScoped;
+import javax.inject.Named;
+
+import org.apache.camel.component.platform.http.PlatformHttpHeaderFilterStrategy;
+
+@ApplicationScoped
+@Named("TestHeaderFilterStrategy")
+public class TestHeaderFilterStrategy extends PlatformHttpHeaderFilterStrategy {
+
+    @Override
+    protected void initialize() {
+        super.initialize();
+        getInFilter().add("k1");
+    }
+
+}
diff --git a/integration-tests/platform-http/src/test/java/org/apache/camel/quarkus/component/http/server/it/PlatformHttpTest.java b/integration-tests/platform-http/src/test/java/org/apache/camel/quarkus/component/http/server/it/PlatformHttpTest.java
index 51aa218..6b19606 100644
--- a/integration-tests/platform-http/src/test/java/org/apache/camel/quarkus/component/http/server/it/PlatformHttpTest.java
+++ b/integration-tests/platform-http/src/test/java/org/apache/camel/quarkus/component/http/server/it/PlatformHttpTest.java
@@ -20,10 +20,14 @@ import io.quarkus.test.junit.QuarkusTest;
 import io.restassured.RestAssured;
 
 import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
 
 import static org.hamcrest.CoreMatchers.equalTo;
 
+import java.io.UnsupportedEncodingException;
+import java.nio.charset.StandardCharsets;
+
 @QuarkusTest
 class PlatformHttpTest {
     @Test
@@ -53,10 +57,21 @@ class PlatformHttpTest {
     public void rest() throws Throwable {
         RestAssured.get("/platform-http/rest-get")
             .then().body(equalTo("GET: /rest-get"));
-        RestAssured.post("/platform-http/rest-post")
+        RestAssured.given()
+            .contentType("text/plain")
+            .post("/platform-http/rest-post")
             .then().body(equalTo("POST: /rest-post"));
     }
 
+    @Disabled("See https://github.com/apache/camel-quarkus/issues/326")
+    @Test
+    public void restConsumes() throws Throwable {
+        RestAssured.given()
+            .contentType("application/json")
+            .post("/platform-http/rest-post")
+            .then().statusCode(415);
+    }
+
     @Test
     public void invalidMethod() {
         RestAssured.post("/platform-http/hello")
@@ -81,4 +96,58 @@ class PlatformHttpTest {
         Assertions.assertArrayEquals(bytes, returnedBytes);
     }
 
+    @Test
+    public void formUrlEncoded() {
+        RestAssured.given().contentType("application/x-www-form-urlencoded")
+            .formParam("k1", "v1")
+            .formParam("k2", "v2")
+            .post("/platform-http/form-urlencoded")
+            .then()
+            .statusCode(200)
+            .body(equalTo("k1=V1\nk2=V2"));
+    }
+
+    @Test
+    public void customHeaderFilterStrategy() {
+        RestAssured.given()
+            .queryParam("k1", "v1")
+            .queryParam("k2", "v2")
+            .get("/platform-http/header-filter-strategy")
+            .then()
+            .statusCode(200)
+            .body(equalTo("k1=\nk2=v2")); // k1 filtered out by TestHeaderFilterStrategy
+    }
+
+    @Test
+    public void multiValueParams() {
+        RestAssured.given()
+            .queryParam("k1", "v1")
+            .queryParam("k1", "v2")
+            .get("/platform-http/multi-value-params")
+            .then()
+            .statusCode(200)
+            .body(equalTo("k1=[v1, v2]"));
+    }
+
+    @Test
+    public void encoding() throws UnsupportedEncodingException {
+        final String outgoingEncoding = "ISO-8859-2";
+        final String bodyText = "Ťava dvojhrbá"; // Camelus bactrianus in Slovak
+        final byte[] returnedBytes = RestAssured.given()
+            .contentType("text/plain; charset="+ outgoingEncoding)
+            .body(bodyText.getBytes(outgoingEncoding))
+            .post("/platform-http/encoding")
+            .then()
+            .statusCode(200)
+            .extract().body().asByteArray();
+        Assertions.assertArrayEquals(bodyText.getBytes(StandardCharsets.UTF_8), returnedBytes);
+    }
+
+    @Test
+    public void responseCodeViaHeader() throws UnsupportedEncodingException {
+        RestAssured.given()
+            .get("/platform-http/response-code-299")
+            .then()
+            .statusCode(299);
+    }
 }