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

davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new adbd2fb83ab CAMEL-20367: Adds tests for file management via http in 
dev mode (#15449)
adbd2fb83ab is described below

commit adbd2fb83ab255abc6df1895910a538d6a0de856
Author: Jakub Vrubel <[email protected]>
AuthorDate: Thu Sep 5 13:31:28 2024 +0200

    CAMEL-20367: Adds tests for file management via http in dev mode (#15449)
---
 .../apache/camel/dsl/jbang/it/DevModeITCase.java   | 32 ++++++++++++++++++++++
 .../dsl/jbang/it/support/JBangTestSupport.java     | 24 ++++++++++++++++
 2 files changed, 56 insertions(+)

diff --git 
a/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/DevModeITCase.java
 
b/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/DevModeITCase.java
index b33d5d84244..7679cf055cf 100644
--- 
a/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/DevModeITCase.java
+++ 
b/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/DevModeITCase.java
@@ -88,6 +88,38 @@ public class DevModeITCase extends JBangTestSupport {
         checkLogContains("Hello Camel from Jenna");
     }
 
+    @Test
+    public void testDeleteFileViaHttp() throws IOException {
+        copyResourceInDataFolder(TestResources.DIR_ROUTE);
+        executeBackground(String.format("run --dev --console --source-dir=%s", 
mountPoint()));
+        checkLogContains("Hello world!");
+        execInHost(String.format(
+                "curl -X DELETE 
http://localhost:%s/q/upload/FromDirectoryRoute.java";,
+                containerService.getDevConsolePort()));
+        checkLogContains("FromDirectoryRoute.java does not exist");
+    }
+
+    @Test
+    public void testUploadFileViaHttp() throws IOException {
+        copyResourceInDataFolder(TestResources.DIR_ROUTE);
+        Files.createDirectory(Path.of(getDataFolder() + "/source-dir"));
+        Files.copy(Path.of(getDataFolder() + "/FromDirectoryRoute.java"),
+                Path.of(getDataFolder() + 
"/source-dir/FromDirectoryRoute.java"));
+        executeBackground(String.format("run --dev --console 
--source-dir=%s/source-dir", mountPoint()));
+        checkLogContains("Hello world!");
+        makeTheFileWriteable(String.format("%s/FromDirectoryRoute.java", 
mountPoint()));
+        Path routeFile = Path.of(getDataFolder(), "FromDirectoryRoute.java");
+        Files.write(routeFile,
+                Files.readAllLines(routeFile).stream()
+                        .map(line -> line.replace("Hello world!", "I have been 
modified!"))
+                        .collect(Collectors.toList()));
+        checkLogDoesNotContain("I have been modified!");
+        execInHost(String.format(
+                "curl -X PUT 
http://localhost:%s/q/upload/FromDirectoryRoute.java --data-binary 
\"@%s/FromDirectoryRoute.java\"",
+                containerService.getDevConsolePort(), getDataFolder()));
+        checkLogContains("I have been modified!");
+    }
+
     private HttpResponse<String> getDevRequest(final String ctxUrl) {
         try {
             return httpClient.send(HttpRequest
diff --git 
a/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/support/JBangTestSupport.java
 
b/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/support/JBangTestSupport.java
index 674dd47d7be..a8e9f435327 100644
--- 
a/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/support/JBangTestSupport.java
+++ 
b/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/support/JBangTestSupport.java
@@ -185,6 +185,26 @@ public abstract class JBangTestSupport {
                         .contains(contains)));
     }
 
+    protected void checkLogDoesNotContain(String route, String contains, int 
waitForSeconds) {
+        Assertions.assertThatNoException().isThrownBy(() -> Awaitility.await()
+                .atMost(waitForSeconds, TimeUnit.SECONDS)
+                .untilAsserted(() -> Assertions.assertThat(getLogs(route))
+                        .as("log does not contain " + contains)
+                        .doesNotContain(contains)));
+    }
+
+    protected void checkLogDoesNotContain(String contains, int waitForSeconds) 
{
+        checkLogDoesNotContain(null, contains, waitForSeconds);
+    }
+
+    protected void checkLogDoesNotContain(String route, String contains) {
+        checkLogDoesNotContain(route, contains, ASSERTION_WAIT_SECONDS);
+    }
+
+    protected void checkLogDoesNotContain(String contains) {
+        checkLogDoesNotContain(contains, ASSERTION_WAIT_SECONDS);
+    }
+
     protected void checkLogContainsPattern(String contains) {
         checkLogContainsPattern(contains, ASSERTION_WAIT_SECONDS);
     }
@@ -256,6 +276,10 @@ public abstract class JBangTestSupport {
                     .atMost(Duration.ofMinutes(2))
                     .pollInterval(Duration.ofSeconds(1))
                     .until(() -> !process.isAlive());
+            if (process.exitValue() != 0) {
+                logger.error(String.valueOf(process.getErrorStream()));
+                logger.info(String.valueOf(process.getOutputStream()));
+            }
             return new String(process.getInputStream().readAllBytes());
         } catch (IOException e) {
             throw new RuntimeException(e);

Reply via email to