This is an automated email from the ASF dual-hosted git repository.
oscerd pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-kamelets.git
The following commit(s) were added to refs/heads/main by this push:
new 1ea6796b1 Add integration tests for transformation, header, filter,
http, and log kamelets (#2845)
1ea6796b1 is described below
commit 1ea6796b12ec0f95fd72543224d8de533d155cc9
Author: Andrea Cosentino <[email protected]>
AuthorDate: Tue May 19 14:16:11 2026 +0200
Add integration tests for transformation, header, filter, http, and log
kamelets (#2845)
Add 10 new Citrus integration tests covering actions, sources, and sinks:
Transformation actions: drop-field, mask-field, replace-field, hoist-field
Header actions: insert-header
Filter actions: predicate-filter, has-header-filter
Source kamelets: http-source
Sink kamelets: http-sink, log-sink
Also fix YAML folded block scalar (message: >) to quoted string in
existing pipe definitions (extract-field, insert-field, data-type) to
avoid trailing newline in property resolution.
Co-authored-by: Claude Opus 4.6 (1M context) <[email protected]>
---
.../src/test/java/CommonIT.java | 20 ++++++
.../has-header-filter-action-pipe.citrus.it.yaml | 68 +++++++++++++++++++
.../has-header-filter-action-pipe.yaml} | 19 ++----
.../predicate-filter-action-pipe.citrus.it.yaml | 62 +++++++++++++++++
.../predicate-filter-action-pipe.yaml} | 9 ++-
.../insert-header-action-pipe.citrus.it.yaml | 68 +++++++++++++++++++
.../insert-header-action-pipe.yaml} | 11 ++-
.../resources/http/http-sink-pipe.citrus.it.yaml | 60 +++++++++++++++++
.../http-sink-pipe.yaml} | 21 +++---
.../http/http-source-to-http.citrus.it.yaml | 78 ++++++++++++++++++++++
.../http-source-to-http.yaml} | 14 +---
.../log-sink-pipe.citrus.it.yaml} | 47 +++++++------
.../log-sink-pipe.yaml} | 21 +++---
.../transformation/data-type-action-pipe.yaml | 3 +-
.../drop-field-action-pipe.citrus.it.yaml | 64 ++++++++++++++++++
...ction-pipe.yaml => drop-field-action-pipe.yaml} | 7 +-
.../transformation/extract-field-action-pipe.yaml | 3 +-
.../hoist-field-action-pipe.citrus.it.yaml | 64 ++++++++++++++++++
...tion-pipe.yaml => hoist-field-action-pipe.yaml} | 9 ++-
.../transformation/insert-field-action-pipe.yaml | 3 +-
.../mask-field-action-pipe.citrus.it.yaml | 68 +++++++++++++++++++
...ction-pipe.yaml => mask-field-action-pipe.yaml} | 10 +--
.../replace-field-action-pipe.citrus.it.yaml | 62 +++++++++++++++++
...on-pipe.yaml => replace-field-action-pipe.yaml} | 9 ++-
24 files changed, 693 insertions(+), 107 deletions(-)
diff --git a/tests/camel-kamelets-itest/src/test/java/CommonIT.java
b/tests/camel-kamelets-itest/src/test/java/CommonIT.java
index b01527187..27a1af47c 100644
--- a/tests/camel-kamelets-itest/src/test/java/CommonIT.java
+++ b/tests/camel-kamelets-itest/src/test/java/CommonIT.java
@@ -78,4 +78,24 @@ public class CommonIT {
public Stream<DynamicTest> crypto() {
return
CitrusTestFactorySupport.factory(TestLoader.YAML).packageScan("crypto");
}
+
+ @CitrusTestFactory
+ public Stream<DynamicTest> header() {
+ return
CitrusTestFactorySupport.factory(TestLoader.YAML).packageScan("header");
+ }
+
+ @CitrusTestFactory
+ public Stream<DynamicTest> filter() {
+ return
CitrusTestFactorySupport.factory(TestLoader.YAML).packageScan("filter");
+ }
+
+ @CitrusTestFactory
+ public Stream<DynamicTest> httpTests() {
+ return
CitrusTestFactorySupport.factory(TestLoader.YAML).packageScan("http");
+ }
+
+ @CitrusTestFactory
+ public Stream<DynamicTest> log() {
+ return
CitrusTestFactorySupport.factory(TestLoader.YAML).packageScan("log");
+ }
}
diff --git
a/tests/camel-kamelets-itest/src/test/resources/filter/has-header-filter-action-pipe.citrus.it.yaml
b/tests/camel-kamelets-itest/src/test/resources/filter/has-header-filter-action-pipe.citrus.it.yaml
new file mode 100644
index 000000000..b120a1401
--- /dev/null
+++
b/tests/camel-kamelets-itest/src/test/resources/filter/has-header-filter-action-pipe.citrus.it.yaml
@@ -0,0 +1,68 @@
+# ---------------------------------------------------------------------------
+# 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.
+# ---------------------------------------------------------------------------
+
+name: has-header-filter-action-pipe-test
+variables:
+ - name: "id"
+ value: "citrus:randomUUID()"
+ - name: "header.name"
+ value: "myTestHeader"
+ - name: "header.value"
+ value: "myTestValue"
+actions:
+ - createVariables:
+ variables:
+ - name: "http.server.url"
+ value: "http://localhost:${http.server.port}"
+ # Create Camel JBang integration
+ - camel:
+ jbang:
+ run:
+ waitForRunningState: false
+ integration:
+ file: "filter/has-header-filter-action-pipe.yaml"
+ systemProperties:
+ properties:
+ - name: "http.sink.url"
+ value: "${http.server.url}"
+ - name: "header.name"
+ value: "${header.name}"
+ - name: "header.value"
+ value: "${header.value}"
+ - name: "input"
+ value: |
+ { \"id\": \"${id}\" }
+
+ # Verify Http request - message should pass through because header exists
+ - http:
+ server: "httpServer"
+ receiveRequest:
+ POST:
+ path: "/result"
+ headers:
+ - name: "${header.name}"
+ value: "${header.value}"
+
+ - http:
+ server: "httpServer"
+ sendResponse:
+ response:
+ status: 200
+ reasonPhrase: "OK"
+ version: "HTTP/1.1"
+ body:
+ data: "Thank You!"
diff --git
a/tests/camel-kamelets-itest/src/test/resources/transformation/data-type-action-pipe.yaml
b/tests/camel-kamelets-itest/src/test/resources/filter/has-header-filter-action-pipe.yaml
similarity index 81%
copy from
tests/camel-kamelets-itest/src/test/resources/transformation/data-type-action-pipe.yaml
copy to
tests/camel-kamelets-itest/src/test/resources/filter/has-header-filter-action-pipe.yaml
index 71f4a19b9..4a432399d 100644
---
a/tests/camel-kamelets-itest/src/test/resources/transformation/data-type-action-pipe.yaml
+++
b/tests/camel-kamelets-itest/src/test/resources/filter/has-header-filter-action-pipe.yaml
@@ -18,11 +18,8 @@
apiVersion: camel.apache.org/v1
kind: Pipe
metadata:
- name: data-type-action-pipe
+ name: has-header-filter-action-pipe
spec:
- integration:
- dependencies:
- - "camel:cloudevents"
source:
ref:
kind: Kamelet
@@ -30,22 +27,20 @@ spec:
name: timer-source
properties:
period: 10000
- contentType: application/json
- message: >
- {{input}}
+ message: "{{input}}"
steps:
- ref:
kind: Kamelet
apiVersion: camel.apache.org/v1
- name: data-type-action
+ name: insert-header-action
properties:
- scheme: "http"
- format: "application-cloudevents"
+ name: "{{header.name}}"
+ value: "{{header.value}}"
- ref:
kind: Kamelet
apiVersion: camel.apache.org/v1
- name: log-action
+ name: has-header-filter-action
properties:
- showHeaders: true
+ name: "{{header.name}}"
sink:
uri: "{{http.sink.url}}/result"
diff --git
a/tests/camel-kamelets-itest/src/test/resources/filter/predicate-filter-action-pipe.citrus.it.yaml
b/tests/camel-kamelets-itest/src/test/resources/filter/predicate-filter-action-pipe.citrus.it.yaml
new file mode 100644
index 000000000..69c7602f6
--- /dev/null
+++
b/tests/camel-kamelets-itest/src/test/resources/filter/predicate-filter-action-pipe.citrus.it.yaml
@@ -0,0 +1,62 @@
+# ---------------------------------------------------------------------------
+# 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.
+# ---------------------------------------------------------------------------
+
+name: predicate-filter-action-pipe-test
+variables:
+ - name: "name.value"
+ value: "Camel"
+actions:
+ - createVariables:
+ variables:
+ - name: "http.server.url"
+ value: "http://localhost:${http.server.port}"
+ # Create Camel JBang integration
+ - camel:
+ jbang:
+ run:
+ waitForRunningState: false
+ integration:
+ file: "filter/predicate-filter-action-pipe.yaml"
+ systemProperties:
+ properties:
+ - name: "http.sink.url"
+ value: "${http.server.url}"
+ - name: "filter.expression"
+ value: "@.name =~ /.*Camel.*/"
+ - name: "input"
+ value: |
+ { \"name\": \"${name.value}\" }
+
+ # Verify Http request - message should pass through because expression
matches
+ - http:
+ server: "httpServer"
+ receiveRequest:
+ POST:
+ path: "/result"
+ body:
+ data: |
+ { "name": "${name.value}" }
+
+ - http:
+ server: "httpServer"
+ sendResponse:
+ response:
+ status: 200
+ reasonPhrase: "OK"
+ version: "HTTP/1.1"
+ body:
+ data: "Thank You!"
diff --git
a/tests/camel-kamelets-itest/src/test/resources/transformation/extract-field-action-pipe.yaml
b/tests/camel-kamelets-itest/src/test/resources/filter/predicate-filter-action-pipe.yaml
similarity index 90%
copy from
tests/camel-kamelets-itest/src/test/resources/transformation/extract-field-action-pipe.yaml
copy to
tests/camel-kamelets-itest/src/test/resources/filter/predicate-filter-action-pipe.yaml
index 9e994901d..52c38ff6a 100644
---
a/tests/camel-kamelets-itest/src/test/resources/transformation/extract-field-action-pipe.yaml
+++
b/tests/camel-kamelets-itest/src/test/resources/filter/predicate-filter-action-pipe.yaml
@@ -18,7 +18,7 @@
apiVersion: camel.apache.org/v1
kind: Pipe
metadata:
- name: extract-field-action-pipe
+ name: predicate-filter-action-pipe
spec:
source:
ref:
@@ -28,14 +28,13 @@ spec:
properties:
period: 10000
contentType: application/json
- message: >
- {{input}}
+ message: "{{input}}"
steps:
- ref:
kind: Kamelet
apiVersion: camel.apache.org/v1
- name: extract-field-action
+ name: predicate-filter-action
properties:
- field: "{{field.name}}"
+ expression: "{{filter.expression}}"
sink:
uri: "{{http.sink.url}}/result"
diff --git
a/tests/camel-kamelets-itest/src/test/resources/header/insert-header-action-pipe.citrus.it.yaml
b/tests/camel-kamelets-itest/src/test/resources/header/insert-header-action-pipe.citrus.it.yaml
new file mode 100644
index 000000000..3fb8096c4
--- /dev/null
+++
b/tests/camel-kamelets-itest/src/test/resources/header/insert-header-action-pipe.citrus.it.yaml
@@ -0,0 +1,68 @@
+# ---------------------------------------------------------------------------
+# 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.
+# ---------------------------------------------------------------------------
+
+name: insert-header-action-pipe-test
+variables:
+ - name: "id"
+ value: "citrus:randomUUID()"
+ - name: "header.name"
+ value: "myTestHeader"
+ - name: "header.value"
+ value: "myTestValue"
+actions:
+ - createVariables:
+ variables:
+ - name: "http.server.url"
+ value: "http://localhost:${http.server.port}"
+ # Create Camel JBang integration
+ - camel:
+ jbang:
+ run:
+ waitForRunningState: false
+ integration:
+ file: "header/insert-header-action-pipe.yaml"
+ systemProperties:
+ properties:
+ - name: "http.sink.url"
+ value: "${http.server.url}"
+ - name: "header.name"
+ value: "${header.name}"
+ - name: "header.value"
+ value: "${header.value}"
+ - name: "input"
+ value: |
+ { \"id\": \"${id}\" }
+
+ # Verify Http request with the inserted header
+ - http:
+ server: "httpServer"
+ receiveRequest:
+ POST:
+ path: "/result"
+ headers:
+ - name: "${header.name}"
+ value: "${header.value}"
+
+ - http:
+ server: "httpServer"
+ sendResponse:
+ response:
+ status: 200
+ reasonPhrase: "OK"
+ version: "HTTP/1.1"
+ body:
+ data: "Thank You!"
diff --git
a/tests/camel-kamelets-itest/src/test/resources/transformation/extract-field-action-pipe.yaml
b/tests/camel-kamelets-itest/src/test/resources/header/insert-header-action-pipe.yaml
similarity index 88%
copy from
tests/camel-kamelets-itest/src/test/resources/transformation/extract-field-action-pipe.yaml
copy to
tests/camel-kamelets-itest/src/test/resources/header/insert-header-action-pipe.yaml
index 9e994901d..7805bc999 100644
---
a/tests/camel-kamelets-itest/src/test/resources/transformation/extract-field-action-pipe.yaml
+++
b/tests/camel-kamelets-itest/src/test/resources/header/insert-header-action-pipe.yaml
@@ -18,7 +18,7 @@
apiVersion: camel.apache.org/v1
kind: Pipe
metadata:
- name: extract-field-action-pipe
+ name: insert-header-action-pipe
spec:
source:
ref:
@@ -27,15 +27,14 @@ spec:
name: timer-source
properties:
period: 10000
- contentType: application/json
- message: >
- {{input}}
+ message: "{{input}}"
steps:
- ref:
kind: Kamelet
apiVersion: camel.apache.org/v1
- name: extract-field-action
+ name: insert-header-action
properties:
- field: "{{field.name}}"
+ name: "{{header.name}}"
+ value: "{{header.value}}"
sink:
uri: "{{http.sink.url}}/result"
diff --git
a/tests/camel-kamelets-itest/src/test/resources/http/http-sink-pipe.citrus.it.yaml
b/tests/camel-kamelets-itest/src/test/resources/http/http-sink-pipe.citrus.it.yaml
new file mode 100644
index 000000000..50a7ef16b
--- /dev/null
+++
b/tests/camel-kamelets-itest/src/test/resources/http/http-sink-pipe.citrus.it.yaml
@@ -0,0 +1,60 @@
+# ---------------------------------------------------------------------------
+# 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.
+# ---------------------------------------------------------------------------
+
+name: http-sink-pipe-test
+variables:
+ - name: "id"
+ value: "citrus:randomUUID()"
+actions:
+ - createVariables:
+ variables:
+ - name: "http.server.url"
+ value: "http://localhost:${http.server.port}"
+ # Create Camel JBang integration
+ - camel:
+ jbang:
+ run:
+ waitForRunningState: false
+ integration:
+ file: "http/http-sink-pipe.yaml"
+ systemProperties:
+ properties:
+ - name: "http.sink.url"
+ value: "${http.server.url}"
+ - name: "input"
+ value: |
+ { \"id\": \"${id}\", \"message\": \"Hello from http-sink\"
}
+
+ # Verify Http request received by the mock server
+ - http:
+ server: "httpServer"
+ receiveRequest:
+ POST:
+ path: "/result"
+ body:
+ data: |
+ { "id": "${id}", "message": "Hello from http-sink" }
+
+ - http:
+ server: "httpServer"
+ sendResponse:
+ response:
+ status: 200
+ reasonPhrase: "OK"
+ version: "HTTP/1.1"
+ body:
+ data: "Thank You!"
diff --git
a/tests/camel-kamelets-itest/src/test/resources/transformation/extract-field-action-pipe.yaml
b/tests/camel-kamelets-itest/src/test/resources/http/http-sink-pipe.yaml
similarity index 78%
copy from
tests/camel-kamelets-itest/src/test/resources/transformation/extract-field-action-pipe.yaml
copy to tests/camel-kamelets-itest/src/test/resources/http/http-sink-pipe.yaml
index 9e994901d..e3bd348df 100644
---
a/tests/camel-kamelets-itest/src/test/resources/transformation/extract-field-action-pipe.yaml
+++ b/tests/camel-kamelets-itest/src/test/resources/http/http-sink-pipe.yaml
@@ -18,7 +18,7 @@
apiVersion: camel.apache.org/v1
kind: Pipe
metadata:
- name: extract-field-action-pipe
+ name: http-sink-pipe
spec:
source:
ref:
@@ -27,15 +27,12 @@ spec:
name: timer-source
properties:
period: 10000
- contentType: application/json
- message: >
- {{input}}
- steps:
- - ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: extract-field-action
- properties:
- field: "{{field.name}}"
+ message: "{{input}}"
sink:
- uri: "{{http.sink.url}}/result"
+ ref:
+ kind: Kamelet
+ apiVersion: camel.apache.org/v1
+ name: http-sink
+ properties:
+ url: "{{http.sink.url}}/result"
+ method: "POST"
diff --git
a/tests/camel-kamelets-itest/src/test/resources/http/http-source-to-http.citrus.it.yaml
b/tests/camel-kamelets-itest/src/test/resources/http/http-source-to-http.citrus.it.yaml
new file mode 100644
index 000000000..1cf3ba809
--- /dev/null
+++
b/tests/camel-kamelets-itest/src/test/resources/http/http-source-to-http.citrus.it.yaml
@@ -0,0 +1,78 @@
+# ---------------------------------------------------------------------------
+# 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.
+# ---------------------------------------------------------------------------
+
+name: http-source-to-http-test
+variables:
+ - name: "id"
+ value: "citrus:randomUUID()"
+actions:
+ - createVariables:
+ variables:
+ - name: "http.server.url"
+ value: "http://localhost:${http.server.port}"
+ # Create Camel JBang integration
+ - camel:
+ jbang:
+ run:
+ waitForRunningState: false
+ integration:
+ file: "http/http-source-to-http.yaml"
+ systemProperties:
+ properties:
+ - name: "http.source.url"
+ value: "${http.server.url}"
+ - name: "http.sink.url"
+ value: "${http.server.url}"
+
+ # The http-source will poll GET /data - respond with test data
+ - http:
+ server: "httpServer"
+ receiveRequest:
+ GET:
+ path: "/data"
+
+ - http:
+ server: "httpServer"
+ sendResponse:
+ response:
+ status: 200
+ reasonPhrase: "OK"
+ version: "HTTP/1.1"
+ contentType: "application/json"
+ body:
+ data: |
+ { "id": "${id}", "message": "Hello from http-source" }
+
+ # Verify the data arrives at the sink endpoint
+ - http:
+ server: "httpServer"
+ receiveRequest:
+ POST:
+ path: "/result"
+ body:
+ data: |
+ { "id": "${id}", "message": "Hello from http-source" }
+
+ - http:
+ server: "httpServer"
+ sendResponse:
+ response:
+ status: 200
+ reasonPhrase: "OK"
+ version: "HTTP/1.1"
+ body:
+ data: "Thank You!"
diff --git
a/tests/camel-kamelets-itest/src/test/resources/transformation/extract-field-action-pipe.yaml
b/tests/camel-kamelets-itest/src/test/resources/http/http-source-to-http.yaml
similarity index 82%
copy from
tests/camel-kamelets-itest/src/test/resources/transformation/extract-field-action-pipe.yaml
copy to
tests/camel-kamelets-itest/src/test/resources/http/http-source-to-http.yaml
index 9e994901d..22c984459 100644
---
a/tests/camel-kamelets-itest/src/test/resources/transformation/extract-field-action-pipe.yaml
+++
b/tests/camel-kamelets-itest/src/test/resources/http/http-source-to-http.yaml
@@ -18,24 +18,16 @@
apiVersion: camel.apache.org/v1
kind: Pipe
metadata:
- name: extract-field-action-pipe
+ name: http-source-to-http
spec:
source:
ref:
kind: Kamelet
apiVersion: camel.apache.org/v1
- name: timer-source
+ name: http-source
properties:
+ url: "{{http.source.url}}/data"
period: 10000
contentType: application/json
- message: >
- {{input}}
- steps:
- - ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: extract-field-action
- properties:
- field: "{{field.name}}"
sink:
uri: "{{http.sink.url}}/result"
diff --git
a/tests/camel-kamelets-itest/src/test/resources/transformation/extract-field-action-pipe.yaml
b/tests/camel-kamelets-itest/src/test/resources/log/log-sink-pipe.citrus.it.yaml
similarity index 61%
copy from
tests/camel-kamelets-itest/src/test/resources/transformation/extract-field-action-pipe.yaml
copy to
tests/camel-kamelets-itest/src/test/resources/log/log-sink-pipe.citrus.it.yaml
index 9e994901d..01f9a98d7 100644
---
a/tests/camel-kamelets-itest/src/test/resources/transformation/extract-field-action-pipe.yaml
+++
b/tests/camel-kamelets-itest/src/test/resources/log/log-sink-pipe.citrus.it.yaml
@@ -15,27 +15,26 @@
# limitations under the License.
# ---------------------------------------------------------------------------
-apiVersion: camel.apache.org/v1
-kind: Pipe
-metadata:
- name: extract-field-action-pipe
-spec:
- source:
- ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: timer-source
- properties:
- period: 10000
- contentType: application/json
- message: >
- {{input}}
- steps:
- - ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: extract-field-action
- properties:
- field: "{{field.name}}"
- sink:
- uri: "{{http.sink.url}}/result"
+name: log-sink-pipe-test
+variables:
+ - name: "log.message"
+ value: "Hello from log-sink test!"
+actions:
+ # Create Camel JBang integration
+ - camel:
+ jbang:
+ run:
+ waitForRunningState: false
+ integration:
+ file: "log/log-sink-pipe.yaml"
+ systemProperties:
+ properties:
+ - name: "message"
+ value: "${log.message}"
+
+ # Verify the log output contains the message
+ - camel:
+ jbang:
+ verify:
+ integration: "log-sink-pipe"
+ logMessage: "${log.message}"
diff --git
a/tests/camel-kamelets-itest/src/test/resources/transformation/extract-field-action-pipe.yaml
b/tests/camel-kamelets-itest/src/test/resources/log/log-sink-pipe.yaml
similarity index 78%
copy from
tests/camel-kamelets-itest/src/test/resources/transformation/extract-field-action-pipe.yaml
copy to tests/camel-kamelets-itest/src/test/resources/log/log-sink-pipe.yaml
index 9e994901d..8dd027b95 100644
---
a/tests/camel-kamelets-itest/src/test/resources/transformation/extract-field-action-pipe.yaml
+++ b/tests/camel-kamelets-itest/src/test/resources/log/log-sink-pipe.yaml
@@ -18,7 +18,7 @@
apiVersion: camel.apache.org/v1
kind: Pipe
metadata:
- name: extract-field-action-pipe
+ name: log-sink-pipe
spec:
source:
ref:
@@ -27,15 +27,12 @@ spec:
name: timer-source
properties:
period: 10000
- contentType: application/json
- message: >
- {{input}}
- steps:
- - ref:
- kind: Kamelet
- apiVersion: camel.apache.org/v1
- name: extract-field-action
- properties:
- field: "{{field.name}}"
+ message: "{{message}}"
sink:
- uri: "{{http.sink.url}}/result"
+ ref:
+ kind: Kamelet
+ apiVersion: camel.apache.org/v1
+ name: log-sink
+ properties:
+ loggerName: "test-log-sink"
+ showHeaders: false
diff --git
a/tests/camel-kamelets-itest/src/test/resources/transformation/data-type-action-pipe.yaml
b/tests/camel-kamelets-itest/src/test/resources/transformation/data-type-action-pipe.yaml
index 71f4a19b9..cbfd8a00b 100644
---
a/tests/camel-kamelets-itest/src/test/resources/transformation/data-type-action-pipe.yaml
+++
b/tests/camel-kamelets-itest/src/test/resources/transformation/data-type-action-pipe.yaml
@@ -31,8 +31,7 @@ spec:
properties:
period: 10000
contentType: application/json
- message: >
- {{input}}
+ message: "{{input}}"
steps:
- ref:
kind: Kamelet
diff --git
a/tests/camel-kamelets-itest/src/test/resources/transformation/drop-field-action-pipe.citrus.it.yaml
b/tests/camel-kamelets-itest/src/test/resources/transformation/drop-field-action-pipe.citrus.it.yaml
new file mode 100644
index 000000000..699f0521a
--- /dev/null
+++
b/tests/camel-kamelets-itest/src/test/resources/transformation/drop-field-action-pipe.citrus.it.yaml
@@ -0,0 +1,64 @@
+# ---------------------------------------------------------------------------
+# 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.
+# ---------------------------------------------------------------------------
+
+name: drop-field-action-pipe-test
+variables:
+ - name: "field.name"
+ value: "subject"
+ - name: "id"
+ value: "citrus:randomUUID()"
+actions:
+ - createVariables:
+ variables:
+ - name: "http.server.url"
+ value: "http://localhost:${http.server.port}"
+ # Create Camel JBang integration
+ - camel:
+ jbang:
+ run:
+ waitForRunningState: false
+ integration:
+ file: "transformation/drop-field-action-pipe.yaml"
+ systemProperties:
+ properties:
+ - name: "http.sink.url"
+ value: "${http.server.url}"
+ - name: "field.name"
+ value: "${field.name}"
+ - name: "input"
+ value: |
+ { \"id\": \"${id}\", \"${field.name}\": \"Camel rocks!\" }
+
+ # Verify Http request
+ - http:
+ server: "httpServer"
+ receiveRequest:
+ POST:
+ path: "/result"
+ body:
+ data: |
+ {"id":"${id}"}
+
+ - http:
+ server: "httpServer"
+ sendResponse:
+ response:
+ status: 200
+ reasonPhrase: "OK"
+ version: "HTTP/1.1"
+ body:
+ data: "Thank You!"
diff --git
a/tests/camel-kamelets-itest/src/test/resources/transformation/extract-field-action-pipe.yaml
b/tests/camel-kamelets-itest/src/test/resources/transformation/drop-field-action-pipe.yaml
similarity index 92%
copy from
tests/camel-kamelets-itest/src/test/resources/transformation/extract-field-action-pipe.yaml
copy to
tests/camel-kamelets-itest/src/test/resources/transformation/drop-field-action-pipe.yaml
index 9e994901d..4e06f342c 100644
---
a/tests/camel-kamelets-itest/src/test/resources/transformation/extract-field-action-pipe.yaml
+++
b/tests/camel-kamelets-itest/src/test/resources/transformation/drop-field-action-pipe.yaml
@@ -18,7 +18,7 @@
apiVersion: camel.apache.org/v1
kind: Pipe
metadata:
- name: extract-field-action-pipe
+ name: drop-field-action-pipe
spec:
source:
ref:
@@ -28,13 +28,12 @@ spec:
properties:
period: 10000
contentType: application/json
- message: >
- {{input}}
+ message: "{{input}}"
steps:
- ref:
kind: Kamelet
apiVersion: camel.apache.org/v1
- name: extract-field-action
+ name: drop-field-action
properties:
field: "{{field.name}}"
sink:
diff --git
a/tests/camel-kamelets-itest/src/test/resources/transformation/extract-field-action-pipe.yaml
b/tests/camel-kamelets-itest/src/test/resources/transformation/extract-field-action-pipe.yaml
index 9e994901d..947867457 100644
---
a/tests/camel-kamelets-itest/src/test/resources/transformation/extract-field-action-pipe.yaml
+++
b/tests/camel-kamelets-itest/src/test/resources/transformation/extract-field-action-pipe.yaml
@@ -28,8 +28,7 @@ spec:
properties:
period: 10000
contentType: application/json
- message: >
- {{input}}
+ message: "{{input}}"
steps:
- ref:
kind: Kamelet
diff --git
a/tests/camel-kamelets-itest/src/test/resources/transformation/hoist-field-action-pipe.citrus.it.yaml
b/tests/camel-kamelets-itest/src/test/resources/transformation/hoist-field-action-pipe.citrus.it.yaml
new file mode 100644
index 000000000..675e9fbdf
--- /dev/null
+++
b/tests/camel-kamelets-itest/src/test/resources/transformation/hoist-field-action-pipe.citrus.it.yaml
@@ -0,0 +1,64 @@
+# ---------------------------------------------------------------------------
+# 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.
+# ---------------------------------------------------------------------------
+
+name: hoist-field-action-pipe-test
+variables:
+ - name: "id"
+ value: "citrus:randomUUID()"
+ - name: "hoist.field"
+ value: "wrapped"
+actions:
+ - createVariables:
+ variables:
+ - name: "http.server.url"
+ value: "http://localhost:${http.server.port}"
+ # Create Camel JBang integration
+ - camel:
+ jbang:
+ run:
+ waitForRunningState: false
+ integration:
+ file: "transformation/hoist-field-action-pipe.yaml"
+ systemProperties:
+ properties:
+ - name: "http.sink.url"
+ value: "${http.server.url}"
+ - name: "hoist.field"
+ value: "${hoist.field}"
+ - name: "input"
+ value: |
+ { \"id\": \"${id}\" }
+
+ # Verify Http request
+ - http:
+ server: "httpServer"
+ receiveRequest:
+ POST:
+ path: "/result"
+ body:
+ data: |
+ {"${hoist.field}":{"id":"${id}"}}
+
+ - http:
+ server: "httpServer"
+ sendResponse:
+ response:
+ status: 200
+ reasonPhrase: "OK"
+ version: "HTTP/1.1"
+ body:
+ data: "Thank You!"
diff --git
a/tests/camel-kamelets-itest/src/test/resources/transformation/extract-field-action-pipe.yaml
b/tests/camel-kamelets-itest/src/test/resources/transformation/hoist-field-action-pipe.yaml
similarity index 90%
copy from
tests/camel-kamelets-itest/src/test/resources/transformation/extract-field-action-pipe.yaml
copy to
tests/camel-kamelets-itest/src/test/resources/transformation/hoist-field-action-pipe.yaml
index 9e994901d..0a2ee004e 100644
---
a/tests/camel-kamelets-itest/src/test/resources/transformation/extract-field-action-pipe.yaml
+++
b/tests/camel-kamelets-itest/src/test/resources/transformation/hoist-field-action-pipe.yaml
@@ -18,7 +18,7 @@
apiVersion: camel.apache.org/v1
kind: Pipe
metadata:
- name: extract-field-action-pipe
+ name: hoist-field-action-pipe
spec:
source:
ref:
@@ -28,14 +28,13 @@ spec:
properties:
period: 10000
contentType: application/json
- message: >
- {{input}}
+ message: "{{input}}"
steps:
- ref:
kind: Kamelet
apiVersion: camel.apache.org/v1
- name: extract-field-action
+ name: hoist-field-action
properties:
- field: "{{field.name}}"
+ field: "{{hoist.field}}"
sink:
uri: "{{http.sink.url}}/result"
diff --git
a/tests/camel-kamelets-itest/src/test/resources/transformation/insert-field-action-pipe.yaml
b/tests/camel-kamelets-itest/src/test/resources/transformation/insert-field-action-pipe.yaml
index a52700de6..f4149fe82 100644
---
a/tests/camel-kamelets-itest/src/test/resources/transformation/insert-field-action-pipe.yaml
+++
b/tests/camel-kamelets-itest/src/test/resources/transformation/insert-field-action-pipe.yaml
@@ -28,8 +28,7 @@ spec:
properties:
period: 10000
contentType: application/json
- message: >
- {{input}}
+ message: "{{input}}"
steps:
- ref:
kind: Kamelet
diff --git
a/tests/camel-kamelets-itest/src/test/resources/transformation/mask-field-action-pipe.citrus.it.yaml
b/tests/camel-kamelets-itest/src/test/resources/transformation/mask-field-action-pipe.citrus.it.yaml
new file mode 100644
index 000000000..f8608ac2e
--- /dev/null
+++
b/tests/camel-kamelets-itest/src/test/resources/transformation/mask-field-action-pipe.citrus.it.yaml
@@ -0,0 +1,68 @@
+# ---------------------------------------------------------------------------
+# 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.
+# ---------------------------------------------------------------------------
+
+name: mask-field-action-pipe-test
+variables:
+ - name: "id"
+ value: "citrus:randomUUID()"
+ - name: "mask.fields"
+ value: "password"
+ - name: "mask.replacement"
+ value: "***"
+actions:
+ - createVariables:
+ variables:
+ - name: "http.server.url"
+ value: "http://localhost:${http.server.port}"
+ # Create Camel JBang integration
+ - camel:
+ jbang:
+ run:
+ waitForRunningState: false
+ integration:
+ file: "transformation/mask-field-action-pipe.yaml"
+ systemProperties:
+ properties:
+ - name: "http.sink.url"
+ value: "${http.server.url}"
+ - name: "mask.fields"
+ value: "${mask.fields}"
+ - name: "mask.replacement"
+ value: "${mask.replacement}"
+ - name: "input"
+ value: |
+ { \"id\": \"${id}\", \"password\": \"secret123\" }
+
+ # Verify Http request
+ - http:
+ server: "httpServer"
+ receiveRequest:
+ POST:
+ path: "/result"
+ body:
+ data: |
+ {"id":"${id}","password":"${mask.replacement}"}
+
+ - http:
+ server: "httpServer"
+ sendResponse:
+ response:
+ status: 200
+ reasonPhrase: "OK"
+ version: "HTTP/1.1"
+ body:
+ data: "Thank You!"
diff --git
a/tests/camel-kamelets-itest/src/test/resources/transformation/extract-field-action-pipe.yaml
b/tests/camel-kamelets-itest/src/test/resources/transformation/mask-field-action-pipe.yaml
similarity index 88%
copy from
tests/camel-kamelets-itest/src/test/resources/transformation/extract-field-action-pipe.yaml
copy to
tests/camel-kamelets-itest/src/test/resources/transformation/mask-field-action-pipe.yaml
index 9e994901d..29002d893 100644
---
a/tests/camel-kamelets-itest/src/test/resources/transformation/extract-field-action-pipe.yaml
+++
b/tests/camel-kamelets-itest/src/test/resources/transformation/mask-field-action-pipe.yaml
@@ -18,7 +18,7 @@
apiVersion: camel.apache.org/v1
kind: Pipe
metadata:
- name: extract-field-action-pipe
+ name: mask-field-action-pipe
spec:
source:
ref:
@@ -28,14 +28,14 @@ spec:
properties:
period: 10000
contentType: application/json
- message: >
- {{input}}
+ message: "{{input}}"
steps:
- ref:
kind: Kamelet
apiVersion: camel.apache.org/v1
- name: extract-field-action
+ name: mask-field-action
properties:
- field: "{{field.name}}"
+ fields: "{{mask.fields}}"
+ replacement: "{{mask.replacement}}"
sink:
uri: "{{http.sink.url}}/result"
diff --git
a/tests/camel-kamelets-itest/src/test/resources/transformation/replace-field-action-pipe.citrus.it.yaml
b/tests/camel-kamelets-itest/src/test/resources/transformation/replace-field-action-pipe.citrus.it.yaml
new file mode 100644
index 000000000..1ac084660
--- /dev/null
+++
b/tests/camel-kamelets-itest/src/test/resources/transformation/replace-field-action-pipe.citrus.it.yaml
@@ -0,0 +1,62 @@
+# ---------------------------------------------------------------------------
+# 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.
+# ---------------------------------------------------------------------------
+
+name: replace-field-action-pipe-test
+variables:
+ - name: "field.value"
+ value: "Camel rocks!"
+actions:
+ - createVariables:
+ variables:
+ - name: "http.server.url"
+ value: "http://localhost:${http.server.port}"
+ # Create Camel JBang integration
+ - camel:
+ jbang:
+ run:
+ waitForRunningState: false
+ integration:
+ file: "transformation/replace-field-action-pipe.yaml"
+ systemProperties:
+ properties:
+ - name: "http.sink.url"
+ value: "${http.server.url}"
+ - name: "renames"
+ value: "oldName:newName"
+ - name: "input"
+ value: |
+ { \"oldName\": \"${field.value}\" }
+
+ # Verify Http request
+ - http:
+ server: "httpServer"
+ receiveRequest:
+ POST:
+ path: "/result"
+ body:
+ data: |
+ {"newName":"${field.value}"}
+
+ - http:
+ server: "httpServer"
+ sendResponse:
+ response:
+ status: 200
+ reasonPhrase: "OK"
+ version: "HTTP/1.1"
+ body:
+ data: "Thank You!"
diff --git
a/tests/camel-kamelets-itest/src/test/resources/transformation/extract-field-action-pipe.yaml
b/tests/camel-kamelets-itest/src/test/resources/transformation/replace-field-action-pipe.yaml
similarity index 90%
copy from
tests/camel-kamelets-itest/src/test/resources/transformation/extract-field-action-pipe.yaml
copy to
tests/camel-kamelets-itest/src/test/resources/transformation/replace-field-action-pipe.yaml
index 9e994901d..70dcabfda 100644
---
a/tests/camel-kamelets-itest/src/test/resources/transformation/extract-field-action-pipe.yaml
+++
b/tests/camel-kamelets-itest/src/test/resources/transformation/replace-field-action-pipe.yaml
@@ -18,7 +18,7 @@
apiVersion: camel.apache.org/v1
kind: Pipe
metadata:
- name: extract-field-action-pipe
+ name: replace-field-action-pipe
spec:
source:
ref:
@@ -28,14 +28,13 @@ spec:
properties:
period: 10000
contentType: application/json
- message: >
- {{input}}
+ message: "{{input}}"
steps:
- ref:
kind: Kamelet
apiVersion: camel.apache.org/v1
- name: extract-field-action
+ name: replace-field-action
properties:
- field: "{{field.name}}"
+ renames: "{{renames}}"
sink:
uri: "{{http.sink.url}}/result"