This is an automated email from the ASF dual-hosted git repository. oscerd pushed a commit to branch ci-fix/floci-migration-and-aws-sink-tests in repository https://gitbox.apache.org/repos/asf/camel-kamelets.git
commit 6067e3d12222ea59584d66277d7ae6fbe446b531 Author: Andrea Cosentino <[email protected]> AuthorDate: Thu Jul 9 12:23:15 2026 +0200 chore: Migrate AWS tests from LocalStack to Floci and add sink tests LocalStack's community edition was sunset in March 2026, now requiring auth tokens. This migrates all AWS integration tests to use Floci, the MIT-licensed drop-in replacement, via Citrus's native floci support in citrus-testcontainers. Also migrates all Pipe-format integration definitions to Camel route YAML format (issue #2873) and adds new Citrus integration tests for aws-s3-sink, aws-sqs-sink, and aws-sns-sink kamelets. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]> --- .../camel-kamelets-itest/src/test/java/AwsIT.java | 5 ++ .../test/resources/aws/ddb/amazonDDBClient.groovy | 8 +- .../test/resources/aws/ddb/application.properties | 8 +- ...ws-ddb-sink-delete-item.citrus.it.yaml.disabled | 8 +- .../aws-ddb-sink-put-item.citrus.it.yaml.disabled | 8 +- .../aws-ddb-sink-route.yaml} | 46 ++++++----- ...ws-ddb-sink-update-item.citrus.it.yaml.disabled | 8 +- .../aws-ddb-source-route.yaml} | 40 ++++------ .../aws/ddb/aws-ddb-source.citrus.it.yaml.disabled | 10 +-- .../aws/eventbridge/application.properties | 8 +- .../aws/eventbridge/aws-eventbridge-sink-pipe.yaml | 51 ------------ .../aws-eventbridge-sink-route.yaml} | 56 ++++++------- .../aws-eventbridge-sink.citrus.it.yaml | 12 +-- .../aws-sqs-event-listener-route.yaml} | 39 ++++----- .../aws/eventbridge/setupEventBridge.groovy | 12 +-- .../aws/kinesis/amazonKinesisClient.groovy | 8 +- .../resources/aws/kinesis/application.properties | 8 +- .../aws/kinesis/aws-kinesis-sink-pipe.yaml | 56 ------------- ...ource-pipe.yaml => aws-kinesis-sink-route.yaml} | 46 ++++++----- .../aws/kinesis/aws-kinesis-sink.citrus.it.yaml | 8 +- .../aws-kinesis-source-route.yaml} | 40 ++++------ .../aws/kinesis/aws-kinesis-source.citrus.it.yaml | 10 +-- .../src/test/resources/aws/s3/README.md | 6 +- .../test/resources/aws/s3/amazonS3Client.groovy | 8 +- .../test/resources/aws/s3/application.properties | 8 +- .../aws-s3-sink-route.citrus.it.yaml} | 62 +++++++-------- ...aws-s3-uri-pipe.yaml => aws-s3-sink-route.yaml} | 45 +++++------ .../aws-s3-source-route.yaml} | 40 ++++------ .../aws/s3/aws-s3-source-to-http-route.yaml | 54 +++++++++++++ .../resources/aws/s3/aws-s3-to-http.citrus.it.yaml | 10 +-- .../src/test/resources/aws/s3/aws-s3-to-http.yaml | 79 ------------------- .../resources/aws/s3/aws-s3-to-knative-broker.yaml | 8 +- .../aws/s3/aws-s3-to-log-uri-based.citrus.it.yaml | 14 ++-- .../aws/s3/aws-s3-uri-pipe.citrus.it.yaml | 18 ++--- .../{amazonS3Client.groovy => getS3Object.groovy} | 17 ++-- .../aws/sns/aws-sns-sink-route.citrus.it.yaml | 92 ++++++++++++++++++++++ .../aws-sns-sink-route.yaml} | 43 +++++----- .../aws-sqs-sns-event-listener.yaml} | 36 +++------ .../test/resources/aws/sns/setupSnsToSqs.groovy | 53 +++++++++++++ .../src/test/resources/aws/sqs/README.md | 6 +- .../test/resources/aws/sqs/amazonSQSClient.groovy | 8 +- ...-pipe.yaml => aws-sqs-sink-event-listener.yaml} | 36 +++------ ...s.it.yaml => aws-sqs-sink-route.citrus.it.yaml} | 58 +++++++++----- ...s-sqs-uri-pipe.yaml => aws-sqs-sink-route.yaml} | 43 +++++----- ...sqs-uri-pipe.yaml => aws-sqs-source-route.yaml} | 39 ++++----- .../sqs/aws-sqs-to-log-uri-based.citrus.it.yaml | 14 ++-- .../aws/sqs/aws-sqs-uri-pipe.citrus.it.yaml | 18 ++--- 47 files changed, 626 insertions(+), 684 deletions(-) diff --git a/tests/camel-kamelets-itest/src/test/java/AwsIT.java b/tests/camel-kamelets-itest/src/test/java/AwsIT.java index ee67f5826..b1a364815 100644 --- a/tests/camel-kamelets-itest/src/test/java/AwsIT.java +++ b/tests/camel-kamelets-itest/src/test/java/AwsIT.java @@ -84,4 +84,9 @@ public class AwsIT { return CitrusTestFactorySupport.factory(TestLoader.YAML).packageScan("aws.eventbridge"); } + @CitrusTestFactory + public Stream<DynamicTest> awsSns() { + return CitrusTestFactorySupport.factory(TestLoader.YAML).packageScan("aws.sns"); + } + } diff --git a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/amazonDDBClient.groovy b/tests/camel-kamelets-itest/src/test/resources/aws/ddb/amazonDDBClient.groovy index 35b0e9015..f7c74dc54 100644 --- a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/amazonDDBClient.groovy +++ b/tests/camel-kamelets-itest/src/test/resources/aws/ddb/amazonDDBClient.groovy @@ -29,13 +29,13 @@ import software.amazon.awssdk.services.dynamodb.model.StreamViewType DynamoDbClient amazonDDBClient = DynamoDbClient .builder() - .endpointOverride(URI.create('${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}')) + .endpointOverride(URI.create('${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}')) .credentialsProvider(StaticCredentialsProvider.create( AwsBasicCredentials.create( - '${CITRUS_TESTCONTAINERS_LOCALSTACK_ACCESS_KEY}', - '${CITRUS_TESTCONTAINERS_LOCALSTACK_SECRET_KEY}') + '${CITRUS_TESTCONTAINERS_FLOCI_ACCESS_KEY}', + '${CITRUS_TESTCONTAINERS_FLOCI_SECRET_KEY}') )) - .region(Region.of('${CITRUS_TESTCONTAINERS_LOCALSTACK_REGION}')) + .region(Region.of('${CITRUS_TESTCONTAINERS_FLOCI_REGION}')) .build() amazonDDBClient.createTable(b -> { diff --git a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/application.properties b/tests/camel-kamelets-itest/src/test/resources/aws/ddb/application.properties index b226e109c..856d4a655 100644 --- a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/application.properties +++ b/tests/camel-kamelets-itest/src/test/resources/aws/ddb/application.properties @@ -17,8 +17,8 @@ aws.ddb.tableName=${aws.ddb.tableName} -aws.ddb.uriEndpointOverride=${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL} -aws.ddb.secretKey=${CITRUS_TESTCONTAINERS_LOCALSTACK_SECRET_KEY} -aws.ddb.accessKey=${CITRUS_TESTCONTAINERS_LOCALSTACK_ACCESS_KEY} -aws.ddb.region=${CITRUS_TESTCONTAINERS_LOCALSTACK_REGION} +aws.ddb.uriEndpointOverride=${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL} +aws.ddb.secretKey=${CITRUS_TESTCONTAINERS_FLOCI_SECRET_KEY} +aws.ddb.accessKey=${CITRUS_TESTCONTAINERS_FLOCI_ACCESS_KEY} +aws.ddb.region=${CITRUS_TESTCONTAINERS_FLOCI_REGION} aws.ddb.overrideEndpoint=true diff --git a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-delete-item.citrus.it.yaml.disabled b/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-delete-item.citrus.it.yaml.disabled index 5d8e87d5c..9ab17edff 100644 --- a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-delete-item.citrus.it.yaml.disabled +++ b/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-delete-item.citrus.it.yaml.disabled @@ -26,15 +26,15 @@ variables: - name: "timer.source.period" value: "10000" actions: - # Create LocalStack infrastructure + # Create Floci infrastructure - testcontainers: start: - localstack: + floci: services: - "DYNAMODB" - waitFor: http: - url: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}" + url: "${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}" # Create AWS-DDB client - groovy: @@ -86,7 +86,7 @@ actions: jbang: run: integration: - file: "aws/ddb/aws-ddb-sink-pipe.yaml" + file: "aws/ddb/aws-ddb-sink-route.yaml" systemProperties: properties: - name: "timer.source.period" diff --git a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-put-item.citrus.it.yaml.disabled b/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-put-item.citrus.it.yaml.disabled index 93146ea4d..97f0bcbd9 100644 --- a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-put-item.citrus.it.yaml.disabled +++ b/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-put-item.citrus.it.yaml.disabled @@ -26,15 +26,15 @@ variables: - name: "timer.source.period" value: "10000" actions: - # Create LocalStack infrastructure + # Create Floci infrastructure - testcontainers: start: - localstack: + floci: services: - "DYNAMODB" - waitFor: http: - url: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}" + url: "${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}" # Create AWS-DDB client - groovy: @@ -73,7 +73,7 @@ actions: jbang: run: integration: - file: "aws/ddb/aws-ddb-sink-pipe.yaml" + file: "aws/ddb/aws-ddb-sink-route.yaml" systemProperties: properties: - name: "timer.source.period" diff --git a/tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/aws-sqs-event-listener-pipe.yaml b/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-route.yaml similarity index 57% rename from tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/aws-sqs-event-listener-pipe.yaml rename to tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-route.yaml index 6e4fe1695..a1dbca82f 100644 --- a/tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/aws-sqs-event-listener-pipe.yaml +++ b/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-route.yaml @@ -15,27 +15,25 @@ # limitations under the License. # --------------------------------------------------------------------------- -apiVersion: camel.apache.org/v1 -kind: Pipe -metadata: - name: aws-sqs-event-listener-pipe -spec: - source: - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1 - name: aws-sqs-source - properties: - queueNameOrArn: "{{aws.sqs.queueName}}" - uriEndpointOverride: "{{aws.eventbridge.uriEndpointOverride}}" - overrideEndpoint: "{{aws.eventbridge.overrideEndpoint}}" - accessKey: "{{aws.eventbridge.accessKey}}" - secretKey: "{{aws.eventbridge.secretKey}}" - region: "{{aws.eventbridge.region}}" - sink: - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1 - name: log-sink - properties: - showHeaders: true +- route: + from: + uri: "timer:tick" + parameters: + period: "{{timer.source.period}}" + repeatCount: 1 + steps: + - setBody: + constant: "{{aws.ddb.json.data}}" + - log: + message: "${body}" + showHeaders: true + - to: + uri: "kamelet:aws-ddb-sink" + parameters: + table: "{{aws.ddb.tableName}}" + operation: "{{aws.ddb.operation}}" + overrideEndpoint: "{{aws.ddb.overrideEndpoint}}" + uriEndpointOverride: "{{aws.ddb.uriEndpointOverride}}" + accessKey: "{{aws.ddb.accessKey}}" + secretKey: "{{aws.ddb.secretKey}}" + region: "{{aws.ddb.region}}" diff --git a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-update-item.citrus.it.yaml.disabled b/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-update-item.citrus.it.yaml.disabled index 0765021e8..5d1e2d3f3 100644 --- a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-update-item.citrus.it.yaml.disabled +++ b/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-update-item.citrus.it.yaml.disabled @@ -26,15 +26,15 @@ variables: - name: "timer.source.period" value: "10000" actions: - # Create LocalStack infrastructure + # Create Floci infrastructure - testcontainers: start: - localstack: + floci: services: - "DYNAMODB" - waitFor: http: - url: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}" + url: "${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}" # Create AWS-DDB client - groovy: @@ -91,7 +91,7 @@ actions: jbang: run: integration: - file: "aws/ddb/aws-ddb-sink-pipe.yaml" + file: "aws/ddb/aws-ddb-sink-route.yaml" systemProperties: properties: - name: "timer.source.period" diff --git a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml b/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-source-route.yaml similarity index 60% copy from tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml copy to tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-source-route.yaml index 7155c8c50..d02c29974 100644 --- a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml +++ b/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-source-route.yaml @@ -15,27 +15,19 @@ # limitations under the License. # --------------------------------------------------------------------------- -apiVersion: camel.apache.org/v1 -kind: Pipe -metadata: - name: aws-sqs-uri-pipe -spec: - source: - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1 - name: aws-sqs-source - properties: - queueNameOrArn: "{{aws.sqs.queueName}}" - uriEndpointOverride: "{{aws.sqs.uriEndpointOverride}}" - overrideEndpoint: "{{aws.sqs.overrideEndpoint}}" - accessKey: "{{aws.sqs.accessKey}}" - secretKey: "{{aws.sqs.secretKey}}" - region: "{{aws.sqs.region}}" - sink: - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1 - name: log-sink - properties: - showHeaders: true +- route: + from: + uri: "kamelet:aws-ddb-streams-source" + parameters: + streamIteratorType: "FROM_START" + table: "{{aws.ddb.tableName}}" + overrideEndpoint: "{{aws.ddb.overrideEndpoint}}" + uriEndpointOverride: "{{aws.ddb.uriEndpointOverride}}" + accessKey: "{{aws.ddb.accessKey}}" + secretKey: "{{aws.ddb.secretKey}}" + region: "{{aws.ddb.region}}" + steps: + - to: + uri: "kamelet:log-sink" + parameters: + showHeaders: true diff --git a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-source.citrus.it.yaml.disabled b/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-source.citrus.it.yaml.disabled index a133e36b6..f20cc5890 100644 --- a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-source.citrus.it.yaml.disabled +++ b/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-source.citrus.it.yaml.disabled @@ -30,15 +30,15 @@ variables: - name: "aws.ddb.item.title" value: "Star Wars IV" actions: - # Create LocalStack infrastructure + # Create Floci infrastructure - testcontainers: start: - localstack: + floci: services: - "DYNAMODB" - waitFor: http: - url: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}" + url: "${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}" # Create AWS-DDB client - groovy: @@ -50,7 +50,7 @@ actions: jbang: run: integration: - file: "aws/ddb/aws-ddb-source-pipe.yaml" + file: "aws/ddb/aws-ddb-source-route.yaml" systemProperties: file: "aws/ddb/application.properties" @@ -62,6 +62,6 @@ actions: - camel: jbang: verify: - integration: "aws-ddb-source-pipe" + integration: "aws-ddb-source-route" logMessage: | "Star Wars IV" diff --git a/tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/application.properties b/tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/application.properties index 40975ecac..a06f98e93 100644 --- a/tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/application.properties +++ b/tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/application.properties @@ -21,8 +21,8 @@ aws.eventbridge.eventSource=${aws.eventbridge.eventSource} aws.eventbridge.eventSourcePrefix=${aws.eventbridge.eventSourcePrefix} aws.eventbridge.detailType=${aws.eventbridge.detailType} -aws.eventbridge.uriEndpointOverride=${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL} -aws.eventbridge.secretKey=${CITRUS_TESTCONTAINERS_LOCALSTACK_SECRET_KEY} -aws.eventbridge.accessKey=${CITRUS_TESTCONTAINERS_LOCALSTACK_ACCESS_KEY} -aws.eventbridge.region=${CITRUS_TESTCONTAINERS_LOCALSTACK_REGION} +aws.eventbridge.uriEndpointOverride=${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL} +aws.eventbridge.secretKey=${CITRUS_TESTCONTAINERS_FLOCI_SECRET_KEY} +aws.eventbridge.accessKey=${CITRUS_TESTCONTAINERS_FLOCI_ACCESS_KEY} +aws.eventbridge.region=${CITRUS_TESTCONTAINERS_FLOCI_REGION} aws.eventbridge.overrideEndpoint=true diff --git a/tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/aws-eventbridge-sink-pipe.yaml b/tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/aws-eventbridge-sink-pipe.yaml deleted file mode 100644 index d73252705..000000000 --- a/tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/aws-eventbridge-sink-pipe.yaml +++ /dev/null @@ -1,51 +0,0 @@ -# --------------------------------------------------------------------------- -# 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. -# --------------------------------------------------------------------------- - -apiVersion: camel.apache.org/v1 -kind: Pipe -metadata: - name: aws-eventbridge-sink-pipe -spec: - source: - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1 - name: timer-source - properties: - period: '{{timer.source.period}}' - message: '{{aws.eventbridge.json.data}}' - steps: - - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1 - name: log-action - sink: - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1 - name: aws-eventbridge-sink - properties: - eventbusNameOrArn: '{{aws.eventbridge.eventbusName}}' - overrideEndpoint: '{{aws.eventbridge.overrideEndpoint}}' - uriEndpointOverride: '{{aws.eventbridge.uriEndpointOverride}}' - accessKey: '{{aws.eventbridge.accessKey}}' - secretKey: '{{aws.eventbridge.secretKey}}' - region: '{{aws.eventbridge.region}}' - resourcesArn: '{{aws.eventbridge.resourcesArn}}' - eventSource: '{{aws.eventbridge.eventSource}}' - eventSourcePrefix: '{{aws.eventbridge.eventSourcePrefix}}' - detailType: '{{aws.eventbridge.detailType}}' diff --git a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-pipe.yaml b/tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/aws-eventbridge-sink-route.yaml similarity index 50% rename from tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-pipe.yaml rename to tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/aws-eventbridge-sink-route.yaml index e473e75a3..76642738c 100644 --- a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-pipe.yaml +++ b/tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/aws-eventbridge-sink-route.yaml @@ -15,36 +15,26 @@ # limitations under the License. # --------------------------------------------------------------------------- -apiVersion: camel.apache.org/v1 -kind: Pipe -metadata: - name: aws-ddb-sink-pipe -spec: - source: - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1 - name: timer-source - properties: - period: "{{timer.source.period}}" - message: "{{aws.ddb.json.data}}" - steps: - - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1 - name: log-action - properties: - showHeaders: true - sink: - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1 - name: aws-ddb-sink - properties: - table: "{{aws.ddb.tableName}}" - operation: "{{aws.ddb.operation}}" - overrideEndpoint: "{{aws.ddb.overrideEndpoint}}" - uriEndpointOverride: "{{aws.ddb.uriEndpointOverride}}" - accessKey: "{{aws.ddb.accessKey}}" - secretKey: "{{aws.ddb.secretKey}}" - region: "{{aws.ddb.region}}" +- route: + from: + uri: "timer:tick" + parameters: + period: "{{timer.source.period}}" + repeatCount: 1 + steps: + - setBody: + constant: "{{aws.eventbridge.json.data}}" + - log: "${body}" + - to: + uri: "kamelet:aws-eventbridge-sink" + parameters: + eventbusNameOrArn: "{{aws.eventbridge.eventbusName}}" + overrideEndpoint: "{{aws.eventbridge.overrideEndpoint}}" + uriEndpointOverride: "{{aws.eventbridge.uriEndpointOverride}}" + accessKey: "{{aws.eventbridge.accessKey}}" + secretKey: "{{aws.eventbridge.secretKey}}" + region: "{{aws.eventbridge.region}}" + resourcesArn: "{{aws.eventbridge.resourcesArn}}" + eventSource: "{{aws.eventbridge.eventSource}}" + eventSourcePrefix: "{{aws.eventbridge.eventSourcePrefix}}" + detailType: "{{aws.eventbridge.detailType}}" diff --git a/tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/aws-eventbridge-sink.citrus.it.yaml b/tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/aws-eventbridge-sink.citrus.it.yaml index ae5c09944..48600cc95 100644 --- a/tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/aws-eventbridge-sink.citrus.it.yaml +++ b/tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/aws-eventbridge-sink.citrus.it.yaml @@ -37,17 +37,17 @@ variables: - name: "timer.source.period" value: "10000" actions: - # Create LocalStack infrastructure + # Create Floci infrastructure - testcontainers: start: - localstack: + floci: services: - "SQS" - "EVENT_BRIDGE" - waitFor: http: - url: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}" + url: "${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}" # Create AWS EventBridge and SQS queue - groovy: @@ -59,7 +59,7 @@ actions: jbang: run: integration: - file: "aws/eventbridge/aws-eventbridge-sink-pipe.yaml" + file: "aws/eventbridge/aws-eventbridge-sink-route.yaml" systemProperties: properties: - name: "timer.source.period" @@ -73,7 +73,7 @@ actions: jbang: run: integration: - file: "aws/eventbridge/aws-sqs-event-listener-pipe.yaml" + file: "aws/eventbridge/aws-sqs-event-listener-route.yaml" systemProperties: properties: - name: "aws.sqs.queueName" @@ -84,6 +84,6 @@ actions: - camel: jbang: verify: - integration: "aws-sqs-event-listener-pipe" + integration: "aws-sqs-event-listener-route" logMessage: | "detail":{"message":"Hello AWS EventBridge!"} diff --git a/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-source-pipe.yaml b/tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/aws-sqs-event-listener-route.yaml similarity index 59% copy from tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-source-pipe.yaml copy to tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/aws-sqs-event-listener-route.yaml index f85692cc6..8809635e8 100644 --- a/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-source-pipe.yaml +++ b/tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/aws-sqs-event-listener-route.yaml @@ -15,27 +15,18 @@ # limitations under the License. # --------------------------------------------------------------------------- -apiVersion: camel.apache.org/v1 -kind: Pipe -metadata: - name: aws-kinesis-source-pipe -spec: - source: - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1 - name: aws-kinesis-source - properties: - stream: '{{aws.kinesis.streamName}}' - overrideEndpoint: '{{aws.kinesis.overrideEndpoint}}' - uriEndpointOverride: '{{aws.kinesis.uriEndpointOverride}}' - accessKey: '{{aws.kinesis.accessKey}}' - secretKey: '{{aws.kinesis.secretKey}}' - region: '{{aws.kinesis.region}}' - sink: - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1 - name: log-sink - properties: - showHeaders: true +- route: + from: + uri: "kamelet:aws-sqs-source" + parameters: + queueNameOrArn: "{{aws.sqs.queueName}}" + uriEndpointOverride: "{{aws.eventbridge.uriEndpointOverride}}" + overrideEndpoint: "{{aws.eventbridge.overrideEndpoint}}" + accessKey: "{{aws.eventbridge.accessKey}}" + secretKey: "{{aws.eventbridge.secretKey}}" + region: "{{aws.eventbridge.region}}" + steps: + - to: + uri: "kamelet:log-sink" + parameters: + showHeaders: true diff --git a/tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/setupEventBridge.groovy b/tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/setupEventBridge.groovy index 95d667361..4dc58bb4d 100644 --- a/tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/setupEventBridge.groovy +++ b/tests/camel-kamelets-itest/src/test/resources/aws/eventbridge/setupEventBridge.groovy @@ -32,7 +32,7 @@ */ import org.citrusframework.actions.testcontainers.aws2.AwsService -import org.citrusframework.testcontainers.aws2.LocalStackContainer +import org.citrusframework.testcontainers.aws2.FlociContainer import software.amazon.awssdk.auth.credentials.AwsBasicCredentials import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider import software.amazon.awssdk.regions.Region @@ -43,7 +43,7 @@ import software.amazon.awssdk.services.sqs.SqsClient import software.amazon.awssdk.services.sqs.model.CreateQueueResponse import software.amazon.awssdk.services.sqs.model.QueueAttributeName -LocalStackContainer container = context.getReferenceResolver().resolve(LocalStackContainer.class) +FlociContainer container = context.getReferenceResolver().resolve(FlociContainer.class) container.withServices(AwsService.EVENT_BRIDGE, AwsService.S3, AwsService.SQS) EventBridgeClient eventBridgeClient = container.getClient(AwsService.EVENT_BRIDGE) @@ -60,13 +60,13 @@ PutRuleResponse putRuleResponse = eventBridgeClient.putRule(b -> b.name("events- SqsClient sqsClient = SqsClient .builder() - .endpointOverride(URI.create('${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}')) + .endpointOverride(URI.create('${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}')) .credentialsProvider(StaticCredentialsProvider.create( AwsBasicCredentials.create( - '${CITRUS_TESTCONTAINERS_LOCALSTACK_ACCESS_KEY}', - '${CITRUS_TESTCONTAINERS_LOCALSTACK_SECRET_KEY}') + '${CITRUS_TESTCONTAINERS_FLOCI_ACCESS_KEY}', + '${CITRUS_TESTCONTAINERS_FLOCI_SECRET_KEY}') )) - .region(Region.of('${CITRUS_TESTCONTAINERS_LOCALSTACK_REGION}')) + .region(Region.of('${CITRUS_TESTCONTAINERS_FLOCI_REGION}')) .build() // Create SQS queue acting as an EventBridge notification endpoint diff --git a/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/amazonKinesisClient.groovy b/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/amazonKinesisClient.groovy index bc1090200..9d8aae8b6 100644 --- a/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/amazonKinesisClient.groovy +++ b/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/amazonKinesisClient.groovy @@ -22,13 +22,13 @@ import software.amazon.awssdk.services.kinesis.KinesisClient KinesisClient kinesisClient = KinesisClient .builder() - .endpointOverride(URI.create('${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}')) + .endpointOverride(URI.create('${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}')) .credentialsProvider(StaticCredentialsProvider.create( AwsBasicCredentials.create( - '${CITRUS_TESTCONTAINERS_LOCALSTACK_ACCESS_KEY}', - '${CITRUS_TESTCONTAINERS_LOCALSTACK_SECRET_KEY}') + '${CITRUS_TESTCONTAINERS_FLOCI_ACCESS_KEY}', + '${CITRUS_TESTCONTAINERS_FLOCI_SECRET_KEY}') )) - .region(Region.of('${CITRUS_TESTCONTAINERS_LOCALSTACK_REGION}')) + .region(Region.of('${CITRUS_TESTCONTAINERS_FLOCI_REGION}')) .build() kinesisClient.createStream(s -> s.streamName('${aws.kinesis.streamName}').shardCount(1)) diff --git a/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/application.properties b/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/application.properties index b002548b8..e9fe526da 100644 --- a/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/application.properties +++ b/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/application.properties @@ -18,8 +18,8 @@ aws.kinesis.streamName=${aws.kinesis.streamName} aws.kinesis.partitionKey=${aws.kinesis.partitionKey} -aws.kinesis.uriEndpointOverride=${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL} -aws.kinesis.secretKey=${CITRUS_TESTCONTAINERS_LOCALSTACK_SECRET_KEY} -aws.kinesis.accessKey=${CITRUS_TESTCONTAINERS_LOCALSTACK_ACCESS_KEY} -aws.kinesis.region=${CITRUS_TESTCONTAINERS_LOCALSTACK_REGION} +aws.kinesis.uriEndpointOverride=${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL} +aws.kinesis.secretKey=${CITRUS_TESTCONTAINERS_FLOCI_SECRET_KEY} +aws.kinesis.accessKey=${CITRUS_TESTCONTAINERS_FLOCI_ACCESS_KEY} +aws.kinesis.region=${CITRUS_TESTCONTAINERS_FLOCI_REGION} aws.kinesis.overrideEndpoint=true diff --git a/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-sink-pipe.yaml b/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-sink-pipe.yaml deleted file mode 100644 index 8de1b46cf..000000000 --- a/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-sink-pipe.yaml +++ /dev/null @@ -1,56 +0,0 @@ -# --------------------------------------------------------------------------- -# 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. -# --------------------------------------------------------------------------- - -apiVersion: camel.apache.org/v1 -kind: Pipe -metadata: - name: aws-kinesis-sink-pipe -spec: - source: - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1 - name: timer-source - properties: - period: '{{timer.source.period}}' - message: '{{aws.kinesis.json.data}}' - steps: - - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1 - name: insert-header-action - properties: - name: "partition" - value: '{{aws.kinesis.partitionKey}}' - - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1 - name: log-action - properties: - showHeaders: true - sink: - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1 - name: aws-kinesis-sink - properties: - stream: '{{aws.kinesis.streamName}}' - overrideEndpoint: '{{aws.kinesis.overrideEndpoint}}' - uriEndpointOverride: '{{aws.kinesis.uriEndpointOverride}}' - accessKey: '{{aws.kinesis.accessKey}}' - secretKey: '{{aws.kinesis.secretKey}}' - region: '{{aws.kinesis.region}}' diff --git a/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-source-pipe.yaml b/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-sink-route.yaml similarity index 56% rename from tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-source-pipe.yaml rename to tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-sink-route.yaml index f85692cc6..81a257282 100644 --- a/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-source-pipe.yaml +++ b/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-sink-route.yaml @@ -15,27 +15,25 @@ # limitations under the License. # --------------------------------------------------------------------------- -apiVersion: camel.apache.org/v1 -kind: Pipe -metadata: - name: aws-kinesis-source-pipe -spec: - source: - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1 - name: aws-kinesis-source - properties: - stream: '{{aws.kinesis.streamName}}' - overrideEndpoint: '{{aws.kinesis.overrideEndpoint}}' - uriEndpointOverride: '{{aws.kinesis.uriEndpointOverride}}' - accessKey: '{{aws.kinesis.accessKey}}' - secretKey: '{{aws.kinesis.secretKey}}' - region: '{{aws.kinesis.region}}' - sink: - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1 - name: log-sink - properties: - showHeaders: true +- route: + from: + uri: "timer:tick" + parameters: + period: "{{timer.source.period}}" + repeatCount: 1 + steps: + - setBody: + constant: "{{aws.kinesis.json.data}}" + - setHeader: + name: "partition" + constant: "{{aws.kinesis.partitionKey}}" + - log: "${body}" + - to: + uri: "kamelet:aws-kinesis-sink" + parameters: + stream: "{{aws.kinesis.streamName}}" + overrideEndpoint: "{{aws.kinesis.overrideEndpoint}}" + uriEndpointOverride: "{{aws.kinesis.uriEndpointOverride}}" + accessKey: "{{aws.kinesis.accessKey}}" + secretKey: "{{aws.kinesis.secretKey}}" + region: "{{aws.kinesis.region}}" diff --git a/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-sink.citrus.it.yaml b/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-sink.citrus.it.yaml index 57ab64e0f..311643ad8 100644 --- a/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-sink.citrus.it.yaml +++ b/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-sink.citrus.it.yaml @@ -31,15 +31,15 @@ variables: - name: "timer.source.period" value: "10000" actions: - # Create LocalStack infrastructure + # Create Floci infrastructure - testcontainers: start: - localstack: + floci: services: - "KINESIS" - waitFor: http: - url: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}" + url: "${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}" # Create AWS-KINESIS client - camel: @@ -52,7 +52,7 @@ actions: jbang: run: integration: - file: "aws/kinesis/aws-kinesis-sink-pipe.yaml" + file: "aws/kinesis/aws-kinesis-sink-route.yaml" systemProperties: properties: - name: "timer.source.period" diff --git a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-source-pipe.yaml b/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-source-route.yaml similarity index 58% rename from tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-source-pipe.yaml rename to tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-source-route.yaml index 3d25229c4..951b20efd 100644 --- a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-source-pipe.yaml +++ b/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-source-route.yaml @@ -15,28 +15,18 @@ # limitations under the License. # --------------------------------------------------------------------------- -apiVersion: camel.apache.org/v1 -kind: Pipe -metadata: - name: aws-ddb-source-pipe -spec: - source: - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1 - name: aws-ddb-streams-source - properties: - streamIteratorType: FROM_START - table: "{{aws.ddb.tableName}}" - overrideEndpoint: "{{aws.ddb.overrideEndpoint}}" - uriEndpointOverride: "{{aws.ddb.uriEndpointOverride}}" - accessKey: "{{aws.ddb.accessKey}}" - secretKey: "{{aws.ddb.secretKey}}" - region: "{{aws.ddb.region}}" - sink: - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1 - name: log-sink - properties: - showHeaders: true +- route: + from: + uri: "kamelet:aws-kinesis-source" + parameters: + stream: "{{aws.kinesis.streamName}}" + overrideEndpoint: "{{aws.kinesis.overrideEndpoint}}" + uriEndpointOverride: "{{aws.kinesis.uriEndpointOverride}}" + accessKey: "{{aws.kinesis.accessKey}}" + secretKey: "{{aws.kinesis.secretKey}}" + region: "{{aws.kinesis.region}}" + steps: + - to: + uri: "kamelet:log-sink" + parameters: + showHeaders: true diff --git a/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-source.citrus.it.yaml b/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-source.citrus.it.yaml index 457ab1794..1c70b6e6d 100644 --- a/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-source.citrus.it.yaml +++ b/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/aws-kinesis-source.citrus.it.yaml @@ -24,15 +24,15 @@ variables: - name: "aws.kinesis.streamData" value: "Camel rocks!" actions: - # Create LocalStack infrastructure + # Create Floci infrastructure - testcontainers: start: - localstack: + floci: services: - "KINESIS" - waitFor: http: - url: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}" + url: "${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}" # Create AWS-KINESIS client - camel: @@ -45,7 +45,7 @@ actions: jbang: run: integration: - file: "aws/kinesis/aws-kinesis-source-pipe.yaml" + file: "aws/kinesis/aws-kinesis-source-route.yaml" systemProperties: file: "aws/kinesis/application.properties" @@ -63,5 +63,5 @@ actions: - camel: jbang: verify: - integration: "aws-kinesis-source-pipe" + integration: "aws-kinesis-source-route" logMessage: "${aws.kinesis.streamData}" diff --git a/tests/camel-kamelets-itest/src/test/resources/aws/s3/README.md b/tests/camel-kamelets-itest/src/test/resources/aws/s3/README.md index b5e8f53f0..c68fbd727 100644 --- a/tests/camel-kamelets-itest/src/test/resources/aws/s3/README.md +++ b/tests/camel-kamelets-itest/src/test/resources/aws/s3/README.md @@ -7,7 +7,7 @@ This test verifies the AWS S3 Kamelet source defined in [aws-s3-source.kamelet.y The test verifies the AWS S3 Kamelet source by creating a Camel K integration that uses the Kamelet and listens for messages on the AWS S3 bucket. -The test uses a [LocalStack Testcontainers](https://www.testcontainers.org/modules/localstack/) instance to start a local AWS S3 service for mocking reasons. +The test uses a [Floci Testcontainers](https://github.com/floci-io/testcontainers-floci) instance to start a local AWS S3 service for emulation reasons. The Kamelet and the test interact with the local AWS S3 service for validation of functionality. ### Test Kamelet source @@ -15,7 +15,7 @@ The Kamelet and the test interact with the local AWS S3 service for validation o The test performs the following high level steps for configs - URI, secret and property based: *Preparation* -- Start the AWS S3 service as LocalStack container +- Start the AWS S3 service as Floci container - Overwrite the Kamelet with the latest source - Prepare the Camel AWS S3 client @@ -27,7 +27,7 @@ The test performs the following high level steps for configs - URI, secret and p - Verify that the integration has received the message event *Cleanup* -- Stop the LocalStack container +- Stop the Floci container - Delete the Camel K integration - Delete the secret from the current namespacce diff --git a/tests/camel-kamelets-itest/src/test/resources/aws/s3/amazonS3Client.groovy b/tests/camel-kamelets-itest/src/test/resources/aws/s3/amazonS3Client.groovy index 4c6470e9c..21ac44c02 100644 --- a/tests/camel-kamelets-itest/src/test/resources/aws/s3/amazonS3Client.groovy +++ b/tests/camel-kamelets-itest/src/test/resources/aws/s3/amazonS3Client.groovy @@ -22,14 +22,14 @@ import software.amazon.awssdk.services.s3.S3Client S3Client s3 = S3Client .builder() - .endpointOverride(URI.create('${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}')) + .endpointOverride(URI.create('${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}')) .credentialsProvider(StaticCredentialsProvider.create( AwsBasicCredentials.create( - '${CITRUS_TESTCONTAINERS_LOCALSTACK_ACCESS_KEY}', - '${CITRUS_TESTCONTAINERS_LOCALSTACK_SECRET_KEY}') + '${CITRUS_TESTCONTAINERS_FLOCI_ACCESS_KEY}', + '${CITRUS_TESTCONTAINERS_FLOCI_SECRET_KEY}') )) .forcePathStyle(true) - .region(Region.of('${CITRUS_TESTCONTAINERS_LOCALSTACK_REGION}')) + .region(Region.of('${CITRUS_TESTCONTAINERS_FLOCI_REGION}')) .build() s3.createBucket(b -> b.bucket('${aws.s3.bucketNameOrArn}')) diff --git a/tests/camel-kamelets-itest/src/test/resources/aws/s3/application.properties b/tests/camel-kamelets-itest/src/test/resources/aws/s3/application.properties index 83b194f7b..a265e8b46 100644 --- a/tests/camel-kamelets-itest/src/test/resources/aws/s3/application.properties +++ b/tests/camel-kamelets-itest/src/test/resources/aws/s3/application.properties @@ -19,7 +19,7 @@ aws.s3.bucketNameOrArn=${aws.s3.bucketNameOrArn} aws.s3.overrideEndpoint=true aws.s3.forcePathStyle=true -aws.s3.uriEndpointOverride=${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL} -aws.s3.secretKey=${CITRUS_TESTCONTAINERS_LOCALSTACK_SECRET_KEY} -aws.s3.accessKey=${CITRUS_TESTCONTAINERS_LOCALSTACK_ACCESS_KEY} -aws.s3.region=${CITRUS_TESTCONTAINERS_LOCALSTACK_REGION} +aws.s3.uriEndpointOverride=${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL} +aws.s3.secretKey=${CITRUS_TESTCONTAINERS_FLOCI_SECRET_KEY} +aws.s3.accessKey=${CITRUS_TESTCONTAINERS_FLOCI_ACCESS_KEY} +aws.s3.region=${CITRUS_TESTCONTAINERS_FLOCI_REGION} diff --git a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-source.citrus.it.yaml.disabled b/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-sink-route.citrus.it.yaml similarity index 56% copy from tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-source.citrus.it.yaml.disabled copy to tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-sink-route.citrus.it.yaml index a133e36b6..85f874fd5 100644 --- a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-source.citrus.it.yaml.disabled +++ b/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-sink-route.citrus.it.yaml @@ -15,53 +15,53 @@ # limitations under the License. # --------------------------------------------------------------------------- -name: aws-ddb-source-test +name: aws-s3-sink-route-test variables: - - name: "maxRetryAttempts" - value: "20" - - name: "aws.ddb.streams" - value: "true" - - name: "aws.ddb.tableName" - value: "movies" - - name: "aws.ddb.item.id" - value: "1" - - name: "aws.ddb.item.year" - value: "1977" - - name: "aws.ddb.item.title" - value: "Star Wars IV" + - name: "aws.s3.bucketNameOrArn" + value: "sink-bucket" + - name: "aws.s3.key" + value: "test-sink.txt" + - name: "test.message" + value: "Hello from S3 sink test" actions: - # Create LocalStack infrastructure + # Create Floci infrastructure - testcontainers: start: - localstack: + floci: services: - - "DYNAMODB" + - "S3" - waitFor: http: - url: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}" + url: "${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}" - # Create AWS-DDB client - - groovy: - script: - file: "aws/ddb/amazonDDBClient.groovy" + # Create AWS-S3 client + - camel: + createComponent: + name: amazonS3Client + file: "aws/s3/amazonS3Client.groovy" # Create Camel JBang integration - camel: jbang: run: integration: - file: "aws/ddb/aws-ddb-source-pipe.yaml" + file: "aws/s3/aws-s3-sink-route.yaml" systemProperties: - file: "aws/ddb/application.properties" + file: "aws/s3/application.properties" + properties: + - name: "test.message" + value: "${test.message}" + - name: "aws.s3.key" + value: "${aws.s3.key}" - - groovy: - script: - file: "aws/ddb/putItem.groovy" - - # Verify AWS-DDB source + # Verify S3 sink wrote the object - camel: jbang: verify: - integration: "aws-ddb-source-pipe" - logMessage: | - "Star Wars IV" + integration: "aws-s3-sink-route" + logMessage: "${test.message}" + + # Verify object exists in S3 by reading it back + - groovy: + script: + file: "aws/s3/getS3Object.groovy" diff --git a/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-uri-pipe.yaml b/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-sink-route.yaml similarity index 58% rename from tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-uri-pipe.yaml rename to tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-sink-route.yaml index 70a998636..67b08ab95 100644 --- a/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-uri-pipe.yaml +++ b/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-sink-route.yaml @@ -15,28 +15,23 @@ # limitations under the License. # --------------------------------------------------------------------------- -apiVersion: camel.apache.org/v1 -kind: Pipe -metadata: - name: aws-s3-uri-pipe -spec: - source: - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1 - name: aws-s3-source - properties: - bucketNameOrArn: "{{aws.s3.bucketNameOrArn}}" - uriEndpointOverride: "{{aws.s3.uriEndpointOverride}}" - overrideEndpoint: "{{aws.s3.overrideEndpoint}}" - forcePathStyle: "{{aws.s3.forcePathStyle}}" - accessKey: "{{aws.s3.accessKey}}" - secretKey: "{{aws.s3.secretKey}}" - region: "{{aws.s3.region}}" - sink: - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1 - name: log-sink - properties: - showHeaders: true +- route: + from: + uri: "timer:tick" + parameters: + period: "10000" + repeatCount: 1 + steps: + - setBody: + constant: "{{test.message}}" + - to: + uri: "kamelet:aws-s3-sink" + parameters: + bucketNameOrArn: "{{aws.s3.bucketNameOrArn}}" + accessKey: "{{aws.s3.accessKey}}" + secretKey: "{{aws.s3.secretKey}}" + region: "{{aws.s3.region}}" + overrideEndpoint: "{{aws.s3.overrideEndpoint}}" + uriEndpointOverride: "{{aws.s3.uriEndpointOverride}}" + forcePathStyle: "{{aws.s3.forcePathStyle}}" + keyName: "{{aws.s3.key}}" diff --git a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml b/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-source-route.yaml similarity index 60% copy from tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml copy to tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-source-route.yaml index 7155c8c50..5ffc1f0ea 100644 --- a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml +++ b/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-source-route.yaml @@ -15,27 +15,19 @@ # limitations under the License. # --------------------------------------------------------------------------- -apiVersion: camel.apache.org/v1 -kind: Pipe -metadata: - name: aws-sqs-uri-pipe -spec: - source: - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1 - name: aws-sqs-source - properties: - queueNameOrArn: "{{aws.sqs.queueName}}" - uriEndpointOverride: "{{aws.sqs.uriEndpointOverride}}" - overrideEndpoint: "{{aws.sqs.overrideEndpoint}}" - accessKey: "{{aws.sqs.accessKey}}" - secretKey: "{{aws.sqs.secretKey}}" - region: "{{aws.sqs.region}}" - sink: - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1 - name: log-sink - properties: - showHeaders: true +- route: + from: + uri: "kamelet:aws-s3-source" + parameters: + bucketNameOrArn: "{{aws.s3.bucketNameOrArn}}" + uriEndpointOverride: "{{aws.s3.uriEndpointOverride}}" + overrideEndpoint: "{{aws.s3.overrideEndpoint}}" + forcePathStyle: "{{aws.s3.forcePathStyle}}" + accessKey: "{{aws.s3.accessKey}}" + secretKey: "{{aws.s3.secretKey}}" + region: "{{aws.s3.region}}" + steps: + - to: + uri: "kamelet:log-sink" + parameters: + showHeaders: true diff --git a/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-source-to-http-route.yaml b/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-source-to-http-route.yaml new file mode 100644 index 000000000..39e60ad9a --- /dev/null +++ b/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-source-to-http-route.yaml @@ -0,0 +1,54 @@ +# --------------------------------------------------------------------------- +# 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. +# --------------------------------------------------------------------------- + +- route: + from: + uri: "kamelet:aws-s3-source" + parameters: + bucketNameOrArn: "{{aws.s3.bucketNameOrArn}}" + uriEndpointOverride: "{{aws.s3.uriEndpointOverride}}" + overrideEndpoint: "{{aws.s3.overrideEndpoint}}" + forcePathStyle: "{{aws.s3.forcePathStyle}}" + accessKey: "{{aws.s3.accessKey}}" + secretKey: "{{aws.s3.secretKey}}" + region: "{{aws.s3.region}}" + steps: + - to: + uri: "kamelet:data-type-action" + parameters: + scheme: "aws2-s3" + format: "application-cloudevents" + - to: + uri: "kamelet:data-type-action" + parameters: + scheme: "http" + format: "application-cloudevents" + - to: + uri: "kamelet:data-type-action" + parameters: + scheme: "text" + format: "plain" + - removeHeaders: + pattern: "Camel*" + - to: + uri: "kamelet:log-sink" + parameters: + showHeaders: true + - to: + uri: "kamelet:http-sink" + parameters: + url: "{{http.sink.url}}" diff --git a/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-to-http.citrus.it.yaml b/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-to-http.citrus.it.yaml index 13f815e8e..2d241d335 100644 --- a/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-to-http.citrus.it.yaml +++ b/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-to-http.citrus.it.yaml @@ -24,15 +24,15 @@ variables: - name: "aws.s3.key" value: "hello.txt" actions: - # Create LocalStack infrastructure + # Create Floci infrastructure - testcontainers: start: - localstack: + floci: services: - "S3" - waitFor: http: - url: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}" + url: "${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}" # Create AWS-S3 client - camel: @@ -45,7 +45,7 @@ actions: jbang: run: integration: - file: "aws/s3/aws-s3-to-http.yaml" + file: "aws/s3/aws-s3-source-to-http-route.yaml" systemProperties: file: "aws/s3/application.properties" properties: @@ -89,5 +89,5 @@ actions: - camel: jbang: verify: - integration: "aws-s3-to-http" + integration: "aws-s3-source-to-http-route" logMessage: "${aws.s3.message}" diff --git a/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-to-http.yaml b/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-to-http.yaml deleted file mode 100644 index 70ddfcc21..000000000 --- a/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-to-http.yaml +++ /dev/null @@ -1,79 +0,0 @@ -# --------------------------------------------------------------------------- -# 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. -# --------------------------------------------------------------------------- - -apiVersion: camel.apache.org/v1 -kind: Pipe -metadata: - name: aws-s3-to-http -spec: - integration: - dependencies: - - "camel:cloudevents" - source: - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1 - name: aws-s3-source - properties: - bucketNameOrArn: "{{aws.s3.bucketNameOrArn}}" - uriEndpointOverride: "{{aws.s3.uriEndpointOverride}}" - overrideEndpoint: "{{aws.s3.overrideEndpoint}}" - forcePathStyle: "{{aws.s3.forcePathStyle}}" - accessKey: "{{aws.s3.accessKey}}" - secretKey: "{{aws.s3.secretKey}}" - region: "{{aws.s3.region}}" - steps: - - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1 - name: data-type-action - properties: - scheme: "aws2-s3" - format: "application-cloudevents" - - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1 - name: data-type-action - properties: - scheme: "http" - format: "application-cloudevents" - - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1 - name: data-type-action - properties: - scheme: "text" - format: "plain" - - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1 - name: drop-headers-action - properties: - pattern: "Camel*" - - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1 - name: log-sink - properties: - showHeaders: true - sink: - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1 - name: http-sink - properties: - url: "{{http.sink.url}}" diff --git a/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-to-knative-broker.yaml b/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-to-knative-broker.yaml index c1522c925..aa56b6237 100644 --- a/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-to-knative-broker.yaml +++ b/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-to-knative-broker.yaml @@ -29,10 +29,10 @@ spec: bucketNameOrArn: ${aws.s3.bucketNameOrArn} overrideEndpoint: true forcePathStyle: true - uriEndpointOverride: ${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL} - accessKey: ${CITRUS_TESTCONTAINERS_LOCALSTACK_ACCESS_KEY} - secretKey: ${CITRUS_TESTCONTAINERS_LOCALSTACK_SECRET_KEY} - region: ${CITRUS_TESTCONTAINERS_LOCALSTACK_REGION} + uriEndpointOverride: ${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL} + accessKey: ${CITRUS_TESTCONTAINERS_FLOCI_ACCESS_KEY} + secretKey: ${CITRUS_TESTCONTAINERS_FLOCI_SECRET_KEY} + region: ${CITRUS_TESTCONTAINERS_FLOCI_REGION} steps: - ref: kind: Kamelet diff --git a/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-to-log-uri-based.citrus.it.yaml b/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-to-log-uri-based.citrus.it.yaml index fcdc5127b..9786bab46 100644 --- a/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-to-log-uri-based.citrus.it.yaml +++ b/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-to-log-uri-based.citrus.it.yaml @@ -24,15 +24,15 @@ variables: - name: "aws.s3.key" value: "hello.txt" actions: - # Create LocalStack infrastructure + # Create Floci infrastructure - testcontainers: start: - localstack: + floci: services: - "S3" - waitFor: http: - url: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}" + url: "${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}" # Create AWS-S3 client - camel: @@ -51,17 +51,17 @@ actions: - name: "aws.s3.bucketNameOrArn" value: "${aws.s3.bucketNameOrArn}" - name: "aws.s3.uriEndpointOverride" - value: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}" + value: "${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}" - name: "aws.s3.overrideEndpoint" value: "true" - name: "aws.s3.forcePathStyle" value: "true" - name: "aws.s3.secretKey" - value: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SECRET_KEY}" + value: "${CITRUS_TESTCONTAINERS_FLOCI_SECRET_KEY}" - name: "aws.s3.accessKey" - value: "${CITRUS_TESTCONTAINERS_LOCALSTACK_ACCESS_KEY}" + value: "${CITRUS_TESTCONTAINERS_FLOCI_ACCESS_KEY}" - name: "aws.s3.region" - value: "${CITRUS_TESTCONTAINERS_LOCALSTACK_REGION}" + value: "${CITRUS_TESTCONTAINERS_FLOCI_REGION}" # Publish event - send: diff --git a/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-uri-pipe.citrus.it.yaml b/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-uri-pipe.citrus.it.yaml index fc63613f2..599098efc 100644 --- a/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-uri-pipe.citrus.it.yaml +++ b/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-uri-pipe.citrus.it.yaml @@ -24,15 +24,15 @@ variables: - name: "aws.s3.key" value: "hello.txt" actions: - # Create LocalStack infrastructure + # Create Floci infrastructure - testcontainers: start: - localstack: + floci: services: - "S3" - waitFor: http: - url: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}" + url: "${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}" # Create AWS-S3 client - camel: @@ -45,23 +45,23 @@ actions: jbang: run: integration: - file: "aws/s3/aws-s3-uri-pipe.yaml" + file: "aws/s3/aws-s3-source-route.yaml" systemProperties: properties: - name: "aws.s3.bucketNameOrArn" value: "${aws.s3.bucketNameOrArn}" - name: "aws.s3.uriEndpointOverride" - value: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}" + value: "${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}" - name: "aws.s3.overrideEndpoint" value: "true" - name: "aws.s3.forcePathStyle" value: "true" - name: "aws.s3.secretKey" - value: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SECRET_KEY}" + value: "${CITRUS_TESTCONTAINERS_FLOCI_SECRET_KEY}" - name: "aws.s3.accessKey" - value: "${CITRUS_TESTCONTAINERS_LOCALSTACK_ACCESS_KEY}" + value: "${CITRUS_TESTCONTAINERS_FLOCI_ACCESS_KEY}" - name: "aws.s3.region" - value: "${CITRUS_TESTCONTAINERS_LOCALSTACK_REGION}" + value: "${CITRUS_TESTCONTAINERS_FLOCI_REGION}" # Publish event - send: @@ -77,5 +77,5 @@ actions: - camel: jbang: verify: - integration: "aws-s3-uri-pipe" + integration: "aws-s3-source-route" logMessage: "${aws.s3.message}" diff --git a/tests/camel-kamelets-itest/src/test/resources/aws/s3/amazonS3Client.groovy b/tests/camel-kamelets-itest/src/test/resources/aws/s3/getS3Object.groovy similarity index 65% copy from tests/camel-kamelets-itest/src/test/resources/aws/s3/amazonS3Client.groovy copy to tests/camel-kamelets-itest/src/test/resources/aws/s3/getS3Object.groovy index 4c6470e9c..b44362677 100644 --- a/tests/camel-kamelets-itest/src/test/resources/aws/s3/amazonS3Client.groovy +++ b/tests/camel-kamelets-itest/src/test/resources/aws/s3/getS3Object.groovy @@ -19,19 +19,24 @@ import software.amazon.awssdk.auth.credentials.AwsBasicCredentials import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider import software.amazon.awssdk.regions.Region import software.amazon.awssdk.services.s3.S3Client +import software.amazon.awssdk.services.s3.model.GetObjectRequest S3Client s3 = S3Client .builder() - .endpointOverride(URI.create('${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}')) + .endpointOverride(URI.create('${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}')) .credentialsProvider(StaticCredentialsProvider.create( AwsBasicCredentials.create( - '${CITRUS_TESTCONTAINERS_LOCALSTACK_ACCESS_KEY}', - '${CITRUS_TESTCONTAINERS_LOCALSTACK_SECRET_KEY}') + '${CITRUS_TESTCONTAINERS_FLOCI_ACCESS_KEY}', + '${CITRUS_TESTCONTAINERS_FLOCI_SECRET_KEY}') )) .forcePathStyle(true) - .region(Region.of('${CITRUS_TESTCONTAINERS_LOCALSTACK_REGION}')) + .region(Region.of('${CITRUS_TESTCONTAINERS_FLOCI_REGION}')) .build() -s3.createBucket(b -> b.bucket('${aws.s3.bucketNameOrArn}')) +def response = s3.getObjectAsBytes(GetObjectRequest.builder() + .bucket('${aws.s3.bucketNameOrArn}') + .key('${aws.s3.key}') + .build()) -return s3 +String content = response.asUtf8String() +assert content == '${test.message}' : "Expected '${test.message}' but got '" + content + "'" diff --git a/tests/camel-kamelets-itest/src/test/resources/aws/sns/aws-sns-sink-route.citrus.it.yaml b/tests/camel-kamelets-itest/src/test/resources/aws/sns/aws-sns-sink-route.citrus.it.yaml new file mode 100644 index 000000000..506a2bbde --- /dev/null +++ b/tests/camel-kamelets-itest/src/test/resources/aws/sns/aws-sns-sink-route.citrus.it.yaml @@ -0,0 +1,92 @@ +# --------------------------------------------------------------------------- +# 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: aws-sns-sink-route-test +variables: + - name: "aws.sns.topicName" + value: "sns-test-topic" + - name: "aws.sqs.queueName" + value: "sns-test-queue" + - name: "test.message" + value: "Hello from SNS sink test" +actions: + # Create Floci infrastructure + - testcontainers: + start: + floci: + services: + - "SNS" + - "SQS" + - waitFor: + http: + url: "${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}" + + # Create SNS topic, SQS queue, and subscribe SQS to SNS + - groovy: + script: + file: "aws/sns/setupSnsToSqs.groovy" + + # Create Camel JBang integration for the SNS sink + - camel: + jbang: + run: + integration: + file: "aws/sns/aws-sns-sink-route.yaml" + systemProperties: + properties: + - name: "test.message" + value: "${test.message}" + - name: "aws.sns.topicName" + value: "${aws.sns.topicName}" + - name: "aws.sns.uriEndpointOverride" + value: "${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}" + - name: "aws.sns.overrideEndpoint" + value: "true" + - name: "aws.sns.secretKey" + value: "${CITRUS_TESTCONTAINERS_FLOCI_SECRET_KEY}" + - name: "aws.sns.accessKey" + value: "${CITRUS_TESTCONTAINERS_FLOCI_ACCESS_KEY}" + - name: "aws.sns.region" + value: "${CITRUS_TESTCONTAINERS_FLOCI_REGION}" + + # Create event listener to consume the message forwarded from SNS to SQS + - camel: + jbang: + run: + integration: + file: "aws/sns/aws-sqs-sns-event-listener.yaml" + systemProperties: + properties: + - name: "aws.sqs.queueName" + value: "${aws.sqs.queueName}" + - name: "aws.sqs.uriEndpointOverride" + value: "${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}" + - name: "aws.sqs.overrideEndpoint" + value: "true" + - name: "aws.sqs.secretKey" + value: "${CITRUS_TESTCONTAINERS_FLOCI_SECRET_KEY}" + - name: "aws.sqs.accessKey" + value: "${CITRUS_TESTCONTAINERS_FLOCI_ACCESS_KEY}" + - name: "aws.sqs.region" + value: "${CITRUS_TESTCONTAINERS_FLOCI_REGION}" + + # Verify message received by the SQS listener + - camel: + jbang: + verify: + integration: "aws-sqs-sns-event-listener" + logMessage: "${test.message}" diff --git a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml b/tests/camel-kamelets-itest/src/test/resources/aws/sns/aws-sns-sink-route.yaml similarity index 60% copy from tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml copy to tests/camel-kamelets-itest/src/test/resources/aws/sns/aws-sns-sink-route.yaml index 7155c8c50..913cabd64 100644 --- a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml +++ b/tests/camel-kamelets-itest/src/test/resources/aws/sns/aws-sns-sink-route.yaml @@ -15,27 +15,22 @@ # limitations under the License. # --------------------------------------------------------------------------- -apiVersion: camel.apache.org/v1 -kind: Pipe -metadata: - name: aws-sqs-uri-pipe -spec: - source: - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1 - name: aws-sqs-source - properties: - queueNameOrArn: "{{aws.sqs.queueName}}" - uriEndpointOverride: "{{aws.sqs.uriEndpointOverride}}" - overrideEndpoint: "{{aws.sqs.overrideEndpoint}}" - accessKey: "{{aws.sqs.accessKey}}" - secretKey: "{{aws.sqs.secretKey}}" - region: "{{aws.sqs.region}}" - sink: - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1 - name: log-sink - properties: - showHeaders: true +- route: + from: + uri: "timer:tick" + parameters: + period: "10000" + repeatCount: 1 + steps: + - setBody: + constant: "{{test.message}}" + - to: + uri: "kamelet:aws-sns-sink" + parameters: + topicNameOrArn: "{{aws.sns.topicName}}" + accessKey: "{{aws.sns.accessKey}}" + secretKey: "{{aws.sns.secretKey}}" + region: "{{aws.sns.region}}" + overrideEndpoint: "{{aws.sns.overrideEndpoint}}" + uriEndpointOverride: "{{aws.sns.uriEndpointOverride}}" + autoCreateTopic: "true" diff --git a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml b/tests/camel-kamelets-itest/src/test/resources/aws/sns/aws-sqs-sns-event-listener.yaml similarity index 60% copy from tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml copy to tests/camel-kamelets-itest/src/test/resources/aws/sns/aws-sqs-sns-event-listener.yaml index 7155c8c50..0ba9d0c7c 100644 --- a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml +++ b/tests/camel-kamelets-itest/src/test/resources/aws/sns/aws-sqs-sns-event-listener.yaml @@ -15,27 +15,15 @@ # limitations under the License. # --------------------------------------------------------------------------- -apiVersion: camel.apache.org/v1 -kind: Pipe -metadata: - name: aws-sqs-uri-pipe -spec: - source: - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1 - name: aws-sqs-source - properties: - queueNameOrArn: "{{aws.sqs.queueName}}" - uriEndpointOverride: "{{aws.sqs.uriEndpointOverride}}" - overrideEndpoint: "{{aws.sqs.overrideEndpoint}}" - accessKey: "{{aws.sqs.accessKey}}" - secretKey: "{{aws.sqs.secretKey}}" - region: "{{aws.sqs.region}}" - sink: - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1 - name: log-sink - properties: - showHeaders: true +- route: + from: + uri: "aws2-sqs:{{aws.sqs.queueName}}" + parameters: + accessKey: "{{aws.sqs.accessKey}}" + secretKey: "{{aws.sqs.secretKey}}" + region: "{{aws.sqs.region}}" + overrideEndpoint: "{{aws.sqs.overrideEndpoint}}" + uriEndpointOverride: "{{aws.sqs.uriEndpointOverride}}" + steps: + - to: + uri: "log:aws-sqs-sns-event-listener" diff --git a/tests/camel-kamelets-itest/src/test/resources/aws/sns/setupSnsToSqs.groovy b/tests/camel-kamelets-itest/src/test/resources/aws/sns/setupSnsToSqs.groovy new file mode 100644 index 000000000..eb172c07d --- /dev/null +++ b/tests/camel-kamelets-itest/src/test/resources/aws/sns/setupSnsToSqs.groovy @@ -0,0 +1,53 @@ +/* + * 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. + */ + +import software.amazon.awssdk.auth.credentials.AwsBasicCredentials +import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider +import software.amazon.awssdk.regions.Region +import software.amazon.awssdk.services.sns.SnsClient +import software.amazon.awssdk.services.sqs.SqsClient +import software.amazon.awssdk.services.sqs.model.QueueAttributeName + +def credentials = StaticCredentialsProvider.create( + AwsBasicCredentials.create( + '${CITRUS_TESTCONTAINERS_FLOCI_ACCESS_KEY}', + '${CITRUS_TESTCONTAINERS_FLOCI_SECRET_KEY}')) + +def region = Region.of('${CITRUS_TESTCONTAINERS_FLOCI_REGION}') +def endpoint = URI.create('${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}') + +SnsClient snsClient = SnsClient.builder() + .endpointOverride(endpoint) + .credentialsProvider(credentials) + .region(region) + .build() + +SqsClient sqsClient = SqsClient.builder() + .endpointOverride(endpoint) + .credentialsProvider(credentials) + .region(region) + .build() + +def topicArn = snsClient.createTopic(b -> b.name('${aws.sns.topicName}')).topicArn() + +def queueUrl = sqsClient.createQueue(b -> b.queueName('${aws.sqs.queueName}')).queueUrl() +def queueArn = sqsClient.getQueueAttributes(b -> b.queueUrl(queueUrl) + .attributeNames(QueueAttributeName.QUEUE_ARN)) + .attributes().get(QueueAttributeName.QUEUE_ARN) + +snsClient.subscribe(b -> b.topicArn(topicArn).protocol("sqs").endpoint(queueArn) + .attributes(Collections.singletonMap("RawMessageDelivery", "true"))) diff --git a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/README.md b/tests/camel-kamelets-itest/src/test/resources/aws/sqs/README.md index 974dc5114..2314ed0ea 100644 --- a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/README.md +++ b/tests/camel-kamelets-itest/src/test/resources/aws/sqs/README.md @@ -7,7 +7,7 @@ This test verifies the AWS SQS Kamelet source defined in [aws-sqs-source.kamelet The test verifies the AWS SQS Kamelet source by creating a Camel K integration that uses the Kamelet and listens for messages on the AWS SQS channel. -The test uses a [LocalStack Testcontainers](https://www.testcontainers.org/modules/localstack/) instance to start a local AWS SQS service for mocking reasons. +The test uses a [Floci Testcontainers](https://github.com/floci-io/testcontainers-floci) instance to start a local AWS SQS service for emulation reasons. The Kamelet and the test interact with the local AWS SQS service for validation of functionality. ### Test Kamelet source @@ -15,7 +15,7 @@ The Kamelet and the test interact with the local AWS SQS service for validation The test performs the following high level steps for configs - URI, secret and property based: *Preparation* -- Start the AWS SQS service as LocalStack container +- Start the AWS SQS service as Floci container - Overwrite the Kamelet with the latest source - Prepare the Camel AWS SQS client @@ -27,7 +27,7 @@ The test performs the following high level steps for configs - URI, secret and p - Verify that the integration has received the message event *Cleanup* -- Stop the LocalStack container +- Stop the Floci container - Delete the Camel K integration - Delete the secret from the current namespacce diff --git a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/amazonSQSClient.groovy b/tests/camel-kamelets-itest/src/test/resources/aws/sqs/amazonSQSClient.groovy index 80676fac7..c2fbdd17f 100644 --- a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/amazonSQSClient.groovy +++ b/tests/camel-kamelets-itest/src/test/resources/aws/sqs/amazonSQSClient.groovy @@ -22,13 +22,13 @@ import software.amazon.awssdk.services.sqs.SqsClient SqsClient sqsClient = SqsClient .builder() - .endpointOverride(URI.create('${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}')) + .endpointOverride(URI.create('${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}')) .credentialsProvider(StaticCredentialsProvider.create( AwsBasicCredentials.create( - '${CITRUS_TESTCONTAINERS_LOCALSTACK_ACCESS_KEY}', - '${CITRUS_TESTCONTAINERS_LOCALSTACK_SECRET_KEY}') + '${CITRUS_TESTCONTAINERS_FLOCI_ACCESS_KEY}', + '${CITRUS_TESTCONTAINERS_FLOCI_SECRET_KEY}') )) - .region(Region.of('${CITRUS_TESTCONTAINERS_LOCALSTACK_REGION}')) + .region(Region.of('${CITRUS_TESTCONTAINERS_FLOCI_REGION}')) .build() sqsClient.createQueue(s -> s.queueName('${aws.sqs.queueName}')) diff --git a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml b/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-sink-event-listener.yaml similarity index 60% copy from tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml copy to tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-sink-event-listener.yaml index 7155c8c50..da26e400c 100644 --- a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml +++ b/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-sink-event-listener.yaml @@ -15,27 +15,15 @@ # limitations under the License. # --------------------------------------------------------------------------- -apiVersion: camel.apache.org/v1 -kind: Pipe -metadata: - name: aws-sqs-uri-pipe -spec: - source: - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1 - name: aws-sqs-source - properties: - queueNameOrArn: "{{aws.sqs.queueName}}" - uriEndpointOverride: "{{aws.sqs.uriEndpointOverride}}" - overrideEndpoint: "{{aws.sqs.overrideEndpoint}}" - accessKey: "{{aws.sqs.accessKey}}" - secretKey: "{{aws.sqs.secretKey}}" - region: "{{aws.sqs.region}}" - sink: - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1 - name: log-sink - properties: - showHeaders: true +- route: + from: + uri: "aws2-sqs:{{aws.sqs.queueName}}" + parameters: + accessKey: "{{aws.sqs.accessKey}}" + secretKey: "{{aws.sqs.secretKey}}" + region: "{{aws.sqs.region}}" + overrideEndpoint: "{{aws.sqs.overrideEndpoint}}" + uriEndpointOverride: "{{aws.sqs.uriEndpointOverride}}" + steps: + - to: + uri: "log:aws-sqs-sink-event-listener" diff --git a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-to-log-uri-based.citrus.it.yaml b/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-sink-route.citrus.it.yaml similarity index 52% copy from tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-to-log-uri-based.citrus.it.yaml copy to tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-sink-route.citrus.it.yaml index 7466bc6c1..ecbf2a278 100644 --- a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-to-log-uri-based.citrus.it.yaml +++ b/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-sink-route.citrus.it.yaml @@ -15,22 +15,22 @@ # limitations under the License. # --------------------------------------------------------------------------- -name: aws-sqs-to-log-uri-based-test +name: aws-sqs-sink-route-test variables: - name: "aws.sqs.queueName" - value: "queue3" - - name: "aws.sqs.message" - value: "Hello from SQS Kamelet" + value: "sink-queue" + - name: "test.message" + value: "Hello from SQS sink test" actions: - # Create LocalStack infrastructure + # Create Floci infrastructure - testcontainers: start: - localstack: + floci: services: - "SQS" - waitFor: http: - url: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}" + url: "${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}" # Create AWS-SQS client - camel: @@ -43,32 +43,48 @@ actions: jbang: run: integration: - file: "aws/sqs/aws-sqs-to-log-uri-based.yaml" + file: "aws/sqs/aws-sqs-sink-route.yaml" systemProperties: properties: + - name: "test.message" + value: "${test.message}" - name: "aws.sqs.queueName" value: "${aws.sqs.queueName}" - name: "aws.sqs.uriEndpointOverride" - value: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}" + value: "${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}" - name: "aws.sqs.overrideEndpoint" value: "true" - name: "aws.sqs.secretKey" - value: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SECRET_KEY}" + value: "${CITRUS_TESTCONTAINERS_FLOCI_SECRET_KEY}" - name: "aws.sqs.accessKey" - value: "${CITRUS_TESTCONTAINERS_LOCALSTACK_ACCESS_KEY}" + value: "${CITRUS_TESTCONTAINERS_FLOCI_ACCESS_KEY}" - name: "aws.sqs.region" - value: "${CITRUS_TESTCONTAINERS_LOCALSTACK_REGION}" + value: "${CITRUS_TESTCONTAINERS_FLOCI_REGION}" - # Publish event - - send: - endpoint: camel:aws2-sqs://${aws.sqs.queueName}?amazonSQSClient=#amazonSQSClient - message: - body: - data: "${aws.sqs.message}" + # Create event listener to consume the message from SQS + - camel: + jbang: + run: + integration: + file: "aws/sqs/aws-sqs-sink-event-listener.yaml" + systemProperties: + properties: + - name: "aws.sqs.queueName" + value: "${aws.sqs.queueName}" + - name: "aws.sqs.uriEndpointOverride" + value: "${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}" + - name: "aws.sqs.overrideEndpoint" + value: "true" + - name: "aws.sqs.secretKey" + value: "${CITRUS_TESTCONTAINERS_FLOCI_SECRET_KEY}" + - name: "aws.sqs.accessKey" + value: "${CITRUS_TESTCONTAINERS_FLOCI_ACCESS_KEY}" + - name: "aws.sqs.region" + value: "${CITRUS_TESTCONTAINERS_FLOCI_REGION}" - # Verify AWS-SQS source + # Verify message received by the listener - camel: jbang: verify: - integration: "aws-sqs-to-log-uri-based" - logMessage: "${aws.sqs.message}" + integration: "aws-sqs-sink-event-listener" + logMessage: "${test.message}" diff --git a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml b/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-sink-route.yaml similarity index 60% copy from tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml copy to tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-sink-route.yaml index 7155c8c50..62c3e4418 100644 --- a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml +++ b/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-sink-route.yaml @@ -15,27 +15,22 @@ # limitations under the License. # --------------------------------------------------------------------------- -apiVersion: camel.apache.org/v1 -kind: Pipe -metadata: - name: aws-sqs-uri-pipe -spec: - source: - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1 - name: aws-sqs-source - properties: - queueNameOrArn: "{{aws.sqs.queueName}}" - uriEndpointOverride: "{{aws.sqs.uriEndpointOverride}}" - overrideEndpoint: "{{aws.sqs.overrideEndpoint}}" - accessKey: "{{aws.sqs.accessKey}}" - secretKey: "{{aws.sqs.secretKey}}" - region: "{{aws.sqs.region}}" - sink: - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1 - name: log-sink - properties: - showHeaders: true +- route: + from: + uri: "timer:tick" + parameters: + period: "10000" + repeatCount: 1 + steps: + - setBody: + constant: "{{test.message}}" + - to: + uri: "kamelet:aws-sqs-sink" + parameters: + queueNameOrArn: "{{aws.sqs.queueName}}" + accessKey: "{{aws.sqs.accessKey}}" + secretKey: "{{aws.sqs.secretKey}}" + region: "{{aws.sqs.region}}" + overrideEndpoint: "{{aws.sqs.overrideEndpoint}}" + uriEndpointOverride: "{{aws.sqs.uriEndpointOverride}}" + autoCreateQueue: "true" diff --git a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml b/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-source-route.yaml similarity index 60% rename from tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml rename to tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-source-route.yaml index 7155c8c50..0313cd426 100644 --- a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.yaml +++ b/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-source-route.yaml @@ -15,27 +15,18 @@ # limitations under the License. # --------------------------------------------------------------------------- -apiVersion: camel.apache.org/v1 -kind: Pipe -metadata: - name: aws-sqs-uri-pipe -spec: - source: - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1 - name: aws-sqs-source - properties: - queueNameOrArn: "{{aws.sqs.queueName}}" - uriEndpointOverride: "{{aws.sqs.uriEndpointOverride}}" - overrideEndpoint: "{{aws.sqs.overrideEndpoint}}" - accessKey: "{{aws.sqs.accessKey}}" - secretKey: "{{aws.sqs.secretKey}}" - region: "{{aws.sqs.region}}" - sink: - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1 - name: log-sink - properties: - showHeaders: true +- route: + from: + uri: "kamelet:aws-sqs-source" + parameters: + queueNameOrArn: "{{aws.sqs.queueName}}" + uriEndpointOverride: "{{aws.sqs.uriEndpointOverride}}" + overrideEndpoint: "{{aws.sqs.overrideEndpoint}}" + accessKey: "{{aws.sqs.accessKey}}" + secretKey: "{{aws.sqs.secretKey}}" + region: "{{aws.sqs.region}}" + steps: + - to: + uri: "kamelet:log-sink" + parameters: + showHeaders: true diff --git a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-to-log-uri-based.citrus.it.yaml b/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-to-log-uri-based.citrus.it.yaml index 7466bc6c1..a9d7fec5d 100644 --- a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-to-log-uri-based.citrus.it.yaml +++ b/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-to-log-uri-based.citrus.it.yaml @@ -22,15 +22,15 @@ variables: - name: "aws.sqs.message" value: "Hello from SQS Kamelet" actions: - # Create LocalStack infrastructure + # Create Floci infrastructure - testcontainers: start: - localstack: + floci: services: - "SQS" - waitFor: http: - url: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}" + url: "${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}" # Create AWS-SQS client - camel: @@ -49,15 +49,15 @@ actions: - name: "aws.sqs.queueName" value: "${aws.sqs.queueName}" - name: "aws.sqs.uriEndpointOverride" - value: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}" + value: "${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}" - name: "aws.sqs.overrideEndpoint" value: "true" - name: "aws.sqs.secretKey" - value: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SECRET_KEY}" + value: "${CITRUS_TESTCONTAINERS_FLOCI_SECRET_KEY}" - name: "aws.sqs.accessKey" - value: "${CITRUS_TESTCONTAINERS_LOCALSTACK_ACCESS_KEY}" + value: "${CITRUS_TESTCONTAINERS_FLOCI_ACCESS_KEY}" - name: "aws.sqs.region" - value: "${CITRUS_TESTCONTAINERS_LOCALSTACK_REGION}" + value: "${CITRUS_TESTCONTAINERS_FLOCI_REGION}" # Publish event - send: diff --git a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.citrus.it.yaml b/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.citrus.it.yaml index 90e944650..7937edbe5 100644 --- a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.citrus.it.yaml +++ b/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-uri-pipe.citrus.it.yaml @@ -22,15 +22,15 @@ variables: - name: "aws.sqs.message" value: "Hello from SQS Kamelet" actions: - # Create LocalStack infrastructure + # Create Floci infrastructure - testcontainers: start: - localstack: + floci: services: - "SQS" - waitFor: http: - url: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}" + url: "${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}" # Create AWS-SQS client - camel: @@ -43,21 +43,21 @@ actions: jbang: run: integration: - file: "aws/sqs/aws-sqs-uri-pipe.yaml" + file: "aws/sqs/aws-sqs-source-route.yaml" systemProperties: properties: - name: "aws.sqs.queueName" value: "${aws.sqs.queueName}" - name: "aws.sqs.uriEndpointOverride" - value: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}" + value: "${CITRUS_TESTCONTAINERS_FLOCI_SERVICE_URL}" - name: "aws.sqs.overrideEndpoint" value: "true" - name: "aws.sqs.secretKey" - value: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SECRET_KEY}" + value: "${CITRUS_TESTCONTAINERS_FLOCI_SECRET_KEY}" - name: "aws.sqs.accessKey" - value: "${CITRUS_TESTCONTAINERS_LOCALSTACK_ACCESS_KEY}" + value: "${CITRUS_TESTCONTAINERS_FLOCI_ACCESS_KEY}" - name: "aws.sqs.region" - value: "${CITRUS_TESTCONTAINERS_LOCALSTACK_REGION}" + value: "${CITRUS_TESTCONTAINERS_FLOCI_REGION}" # Publish event - send: @@ -70,5 +70,5 @@ actions: - camel: jbang: verify: - integration: "aws-sqs-uri-pipe" + integration: "aws-sqs-source-route" logMessage: "${aws.sqs.message}"
