This is an automated email from the ASF dual-hosted git repository.
aldettinger 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 54125c4 file: Rewrite the charset related test #3627
54125c4 is described below
commit 54125c473225ba649c5a085df52757cf886af487
Author: aldettinger <[email protected]>
AuthorDate: Mon Mar 21 16:26:40 2022 +0100
file: Rewrite the charset related test #3627
---
integration-tests/file/pom.xml | 21 +++++-----
.../quarkus/component/file/it/FileResource.java | 46 ++++++++++++++++++++++
.../quarkus/component/file/it/FileRoutes.java | 10 ++---
.../camel/quarkus/component/file/it/FileTest.java | 33 +++++-----------
4 files changed, 70 insertions(+), 40 deletions(-)
diff --git a/integration-tests/file/pom.xml b/integration-tests/file/pom.xml
index 4918555..64f4b41 100644
--- a/integration-tests/file/pom.xml
+++ b/integration-tests/file/pom.xml
@@ -59,6 +59,16 @@
<groupId>io.quarkus</groupId>
<artifactId>quarkus-resteasy-jackson</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.awaitility</groupId>
+ <artifactId>awaitility</artifactId>
+ <exclusions>
+ <exclusion>
+ <groupId>org.hamcrest</groupId>
+ <artifactId>hamcrest-core</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
<!-- test dependencies -->
<dependency>
@@ -71,17 +81,6 @@
<artifactId>rest-assured</artifactId>
<scope>test</scope>
</dependency>
- <dependency>
- <groupId>org.awaitility</groupId>
- <artifactId>awaitility</artifactId>
- <scope>test</scope>
- <exclusions>
- <exclusion>
- <groupId>org.hamcrest</groupId>
- <artifactId>hamcrest-core</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
</dependencies>
diff --git
a/integration-tests/file/src/main/java/org/apache/camel/quarkus/component/file/it/FileResource.java
b/integration-tests/file/src/main/java/org/apache/camel/quarkus/component/file/it/FileResource.java
index e5b8f79..3f2ee87 100644
---
a/integration-tests/file/src/main/java/org/apache/camel/quarkus/component/file/it/FileResource.java
+++
b/integration-tests/file/src/main/java/org/apache/camel/quarkus/component/file/it/FileResource.java
@@ -16,9 +16,15 @@
*/
package org.apache.camel.quarkus.component.file.it;
+import java.io.File;
import java.net.URI;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.nio.file.StandardCopyOption;
+import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
+import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import javax.enterprise.context.ApplicationScoped;
@@ -33,11 +39,13 @@ import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
+import com.mchange.io.FileUtils;
import org.apache.camel.CamelContext;
import org.apache.camel.ConsumerTemplate;
import org.apache.camel.Exchange;
import org.apache.camel.ProducerTemplate;
import org.apache.camel.component.mock.MockEndpoint;
+import org.awaitility.Awaitility;
@Path("/file")
@ApplicationScoped
@@ -138,4 +146,42 @@ public class FileResource {
return producerTemplate.requestBody("direct:" + route, body,
String.class);
}
+ @Path("/writeThenReadFileWithCharsetShouldSucceed")
+ @GET
+ public void writeThenReadFileWithCharsetShouldSucceed() throws Exception {
+
+ // Delete any charset encoded files that would reside from a previous
run
+
Files.deleteIfExists(Paths.get("target/charsetIsoRead/charsetEncodedFile.txt"));
+
Files.deleteIfExists(Paths.get("target/charsetIsoWrite/charsetEncodedFile.txt"));
+
+ // Using a charset that has few chance to be the default one on the
build platform
+ String charsetName = "ISO-8859-1";
+ String unencodedContent = "A string with ð char";
+ byte[] encodedContent = unencodedContent.getBytes(charsetName);
+
+ // Produce in the folder named 'charsetIsoWrite' and check the content
is encoded as expected
+ producerTemplate.request("file:target/charsetIsoWrite/?charset=" +
charsetName, ex -> {
+ ex.getMessage().setHeader(Exchange.FILE_NAME,
"charsetEncodedFile.txt");
+ ex.getMessage().setBody(unencodedContent);
+ });
+ Awaitility.await().atMost(10, TimeUnit.SECONDS).until(() -> {
+ File file = new
File("target/charsetIsoWrite/charsetEncodedFile.txt");
+ return Arrays.equals(encodedContent, FileUtils.getBytes(file));
+ });
+
+ // Move the encoded file to the read folder
+ java.nio.file.Path source =
Paths.get("target/charsetIsoWrite/charsetEncodedFile.txt");
+ java.nio.file.Path destination =
Paths.get("target/charsetIsoRead/charsetEncodedFile.txt");
+ Files.move(source, destination, StandardCopyOption.ATOMIC_MOVE);
+
+ // Start the route to consume the encoded file
+ context.getRouteController().startRoute("charsetIsoRead");
+
+ // Check that the consumed file content has been decoded as expected
+ Awaitility.await().atMost(10, TimeUnit.SECONDS).until(() -> {
+ String decodedContent = getFromMock("charsetIsoRead");
+ return unencodedContent.equals(decodedContent);
+ });
+ }
+
}
diff --git
a/integration-tests/file/src/main/java/org/apache/camel/quarkus/component/file/it/FileRoutes.java
b/integration-tests/file/src/main/java/org/apache/camel/quarkus/component/file/it/FileRoutes.java
index 891339c..0986c97 100644
---
a/integration-tests/file/src/main/java/org/apache/camel/quarkus/component/file/it/FileRoutes.java
+++
b/integration-tests/file/src/main/java/org/apache/camel/quarkus/component/file/it/FileRoutes.java
@@ -55,13 +55,11 @@ public class FileRoutes extends RouteBuilder {
.convertBodyTo(String.class)
.to("mock:" + CONSUME_BATCH);
-
from("file://target/charsetUTF8?initialDelay=0&delay=10&delete=true&charset=UTF-8")
+
from("file://target/charsetIsoRead?initialDelay=0&delay=10&delete=true&charset=ISO-8859-1")
+ .routeId("charsetIsoRead")
+ .autoStartup(false)
.convertBodyTo(String.class)
- .to("mock:charsetUTF8");
-
-
from("file://target/charsetISO?initialDelay=0&delay=10&delete=true&charset=ISO-8859-1")
- .convertBodyTo(String.class)
- .to("mock:charsetISO");
+ .to("mock:charsetIsoRead");
from("file://target/idempotent?idempotent=true&move=done/${file:name}&initialDelay=0&delay=10")
.convertBodyTo(String.class).to("mock:idempotent");
diff --git
a/integration-tests/file/src/test/java/org/apache/camel/quarkus/component/file/it/FileTest.java
b/integration-tests/file/src/test/java/org/apache/camel/quarkus/component/file/it/FileTest.java
index 2922d7d..587c204 100644
---
a/integration-tests/file/src/test/java/org/apache/camel/quarkus/component/file/it/FileTest.java
+++
b/integration-tests/file/src/test/java/org/apache/camel/quarkus/component/file/it/FileTest.java
@@ -53,7 +53,6 @@ class FileTest {
private static final String FILE_CONTENT_01 = "Hello1";
private static final String FILE_CONTENT_02 = "Hello2";
private static final String FILE_CONTENT_03 = "Hello3";
- private static final String FILE_BODY_UTF8 = "Hello World \u4f60\u597d";
private List<Path> pathsToDelete = new LinkedList<>();
@@ -85,26 +84,11 @@ class FileTest {
@DisabledOnOs(value = OS.WINDOWS, disabledReason =
"https://github.com/apache/camel-quarkus/issues/3530")
@Test
- public void charset() throws UnsupportedEncodingException {
- // Create a new file
- createFile(FILE_BODY_UTF8, "/file/create/charsetUTF8", "UTF-8", null);
- createFile(FILE_BODY_UTF8, "/file/create/charsetISO", "UTF-8", null);
-
- await().atMost(10, TimeUnit.SECONDS).until(
- () -> RestAssured
- .get("/file/getFromMock/charsetUTF8")
- .then()
- .extract().asString(),
- equalTo(FILE_BODY_UTF8));
-
- // File content read as ISO-8859-1 has to have different content
(because file contains some unknown
- // characters)
- await().atMost(10, TimeUnit.SECONDS).until(
- () -> RestAssured
- .get("/file/getFromMock/charsetISO")
- .then()
- .extract().asString(),
- equalTo(new String(FILE_BODY_UTF8.getBytes(), "ISO-8859-1")));
+ public void writeThenReadFileWithCharsetShouldSucceed() {
+ RestAssured
+ .get("/file/writeThenReadFileWithCharsetShouldSucceed")
+ .then()
+ .statusCode(204);
}
@Test
@@ -273,12 +257,15 @@ class FileTest {
}
private static String createFile(String content, String path) throws
UnsupportedEncodingException {
- return createFile(content.getBytes("UTF-8"), path, null, null);
+ return createFile(content, path, "UTF-8", null);
}
static String createFile(String content, String path, String charset,
String prefix)
throws UnsupportedEncodingException {
- return createFile(content.getBytes(), path, charset, prefix);
+ if (charset == null) {
+ charset = "UTF-8";
+ }
+ return createFile(content.getBytes(charset), path, charset, prefix);
}
static String createFile(byte[] content, String path, String charset,
String fileName) {