blob: af1c29a6bbf78a0b2d14a5b3ffe7d3b826a31d1f [file] [log] [blame]
/*
* 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.http.server.it;
import java.io.UnsupportedEncodingException;
import java.nio.charset.StandardCharsets;
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;
@QuarkusTest
class PlatformHttpTest {
@Test
public void basic() {
RestAssured.given()
.param("name", "Kermit")
.get("/platform-http/hello")
.then()
.statusCode(200)
.body(equalTo("Hello Kermit"));
RestAssured.given()
.body("Camel")
.post("/platform-http/get-post")
.then()
.statusCode(200)
.body(equalTo("Hello Camel"));
RestAssured.given()
.get("/platform-http/get-post")
.then()
.statusCode(200)
.body(equalTo("Hello ")); // there is no body for get
}
@Test
public void rest() throws Throwable {
RestAssured.get("/platform-http/rest-get")
.then().body(equalTo("GET: /rest-get"));
RestAssured.given()
.contentType("text/plain")
.post("/platform-http/rest-post")
.then().body(equalTo("POST: /rest-post"));
}
@Test
public void consumes() throws Throwable {
RestAssured.given()
.contentType("application/json")
.post("/platform-http/rest-post")
.then()
.statusCode(415);
RestAssured.given()
.contentType("text/plain")
.post("/platform-http/rest-post")
.then()
.statusCode(200);
RestAssured.given()
.contentType("application/json")
.post("/platform-http/consumes")
.then()
.statusCode(415);
RestAssured.given()
.contentType("text/plain")
.post("/platform-http/consumes")
.then()
.statusCode(200);
}
@Test
public void produces() throws Throwable {
RestAssured.given()
.accept("application/json")
.contentType("text/plain")
.post("/platform-http/rest-post")
.then()
.statusCode(406);
RestAssured.given()
.accept("text/plain")
.contentType("text/plain")
.post("/platform-http/rest-post")
.then()
.statusCode(200);
RestAssured.given()
.accept("application/json")
.contentType("text/plain")
.post("/platform-http/produces")
.then()
.statusCode(406);
RestAssured.given()
.accept("text/plain")
.contentType("text/plain")
.post("/platform-http/produces")
.then()
.statusCode(200);
}
@Test
public void invalidMethod() {
RestAssured.post("/platform-http/hello")
.then().statusCode(405);
RestAssured.post("/platform-http/rest-get")
.then().statusCode(405);
RestAssured.get("/platform-http/rest-post")
.then().statusCode(405);
}
@Test
public void multipart() {
final byte[] bytes = new byte[] { 0xc, 0x0, 0xf, 0xe, 0xb, 0xa, 0xb, 0xe };
final byte[] returnedBytes = RestAssured.given().contentType("multipart/form-data")
.multiPart("file", "bytes.bin", bytes)
.formParam("description", "cofe babe")
.post("/platform-http/multipart")
.then()
.statusCode(200)
.extract().body().asByteArray();
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);
}
@Test
public void code204Null() throws Exception {
RestAssured.given()
.get("/platform-http/null-body")
.then()
.statusCode(204);
}
@Test
public void code204EmptyString() throws Exception {
RestAssured.given()
.get("/platform-http/empty-string-body")
.then()
.statusCode(204);
}
@Test
public void code204SomeString() throws Exception {
RestAssured.given()
.get("/platform-http/some-string")
.then()
.statusCode(200)
.body(equalTo("No Content"));
}
@Test
public void code200EmptyString() throws Exception {
RestAssured.given()
.get("/platform-http/empty-string-200")
.then()
.statusCode(200)
.body(equalTo(""));
}
@Test
public void pathParam() throws Exception {
RestAssured.given()
.get("/platform-http/hello-by-name/Kermit")
.then()
.statusCode(200)
.body(equalTo("Hello Kermit"));
}
}