From 29ab665759c776181d8fb511868ee8f6ed6e5893 Mon Sep 17 00:00:00 2001 From: Christoph Deppisch Date: Thu, 6 Aug 2026 11:43:15 +0200 Subject: [PATCH] chore: Improve AWS integration tests - Use Citrus provided AWS service clients - Use service options to auto create S3 buckets, SQS queues, Kinesis streams and DDB tables --- .../resources/aws/ddb/amazonDDBClient.groovy | 62 ------------------- .../aws-ddb-sink-delete-item.citrus.it.yaml | 10 +-- .../ddb/aws-ddb-sink-put-item.citrus.it.yaml | 10 +-- ...> aws-ddb-sink-update-item.citrus.it.yaml} | 11 ++-- .../aws/ddb/aws-ddb-source.citrus.it.yaml | 10 +-- .../src/test/resources/aws/ddb/getItem.groovy | 3 +- .../src/test/resources/aws/ddb/putItem.groovy | 4 +- .../test/resources/aws/ddb/verifyItems.groovy | 5 +- .../aws/kinesis/amazonKinesisClient.groovy | 36 ----------- .../kinesis/aws-kinesis-sink.citrus.it.yaml | 9 +-- .../kinesis/aws-kinesis-source.citrus.it.yaml | 10 +-- .../aws/s3/aws-s3-sink-route.citrus.it.yaml | 9 +-- .../aws/s3/aws-s3-to-http.citrus.it.yaml | 9 +-- .../s3/aws-s3-to-log-uri-based.citrus.it.yaml | 10 +-- .../aws/s3/aws-s3-uri-pipe.citrus.it.yaml | 11 ++-- .../test/resources/aws/s3/getS3Object.groovy | 15 +---- .../resources/aws/sns/setupSnsToSqs.groovy | 24 +------ .../resources/aws/sqs/amazonSQSClient.groovy | 36 ----------- .../aws/sqs/aws-sqs-sink-route.citrus.it.yaml | 9 +-- .../aws-sqs-to-log-uri-based.citrus.it.yaml | 9 +-- .../aws/sqs/aws-sqs-uri-pipe.citrus.it.yaml | 11 ++-- 21 files changed, 61 insertions(+), 252 deletions(-) delete mode 100644 tests/camel-kamelets-itest/src/test/resources/aws/ddb/amazonDDBClient.groovy rename tests/camel-kamelets-itest/src/test/resources/aws/ddb/{aws-ddb-sink-update-item.citrus.it.yaml.disabled => aws-ddb-sink-update-item.citrus.it.yaml} (95%) delete mode 100644 tests/camel-kamelets-itest/src/test/resources/aws/kinesis/amazonKinesisClient.groovy delete mode 100644 tests/camel-kamelets-itest/src/test/resources/aws/sqs/amazonSQSClient.groovy 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 deleted file mode 100644 index 35b0e9015..000000000 --- a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/amazonDDBClient.groovy +++ /dev/null @@ -1,62 +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. - */ - -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.dynamodb.DynamoDbClient -import software.amazon.awssdk.services.dynamodb.model.AttributeDefinition -import software.amazon.awssdk.services.dynamodb.model.KeySchemaElement -import software.amazon.awssdk.services.dynamodb.model.KeyType -import software.amazon.awssdk.services.dynamodb.model.ProvisionedThroughput -import software.amazon.awssdk.services.dynamodb.model.ScalarAttributeType -import software.amazon.awssdk.services.dynamodb.model.StreamSpecification -import software.amazon.awssdk.services.dynamodb.model.StreamViewType - -DynamoDbClient amazonDDBClient = DynamoDbClient - .builder() - .endpointOverride(URI.create('${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}')) - .credentialsProvider(StaticCredentialsProvider.create( - AwsBasicCredentials.create( - '${CITRUS_TESTCONTAINERS_LOCALSTACK_ACCESS_KEY}', - '${CITRUS_TESTCONTAINERS_LOCALSTACK_SECRET_KEY}') - )) - .region(Region.of('${CITRUS_TESTCONTAINERS_LOCALSTACK_REGION}')) - .build() - -amazonDDBClient.createTable(b -> { - b.tableName('${aws.ddb.tableName}') - b.keySchema( - KeySchemaElement.builder().attributeName("id").keyType(KeyType.HASH).build(), - ) - b.attributeDefinitions( - AttributeDefinition.builder().attributeName("id").attributeType(ScalarAttributeType.N).build(), - ) - - if (${aws.ddb.streams}) { - b.streamSpecification(StreamSpecification.builder() - .streamEnabled(true) - .streamViewType(StreamViewType.NEW_AND_OLD_IMAGES).build()) - } - - b.provisionedThroughput( - ProvisionedThroughput.builder() - .readCapacityUnits(1L) - .writeCapacityUnits(1L).build()) -}) - -context.getReferenceResolver().bind("amazonDDBClient", amazonDDBClient) diff --git a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-delete-item.citrus.it.yaml b/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-delete-item.citrus.it.yaml index 04d69eae1..a0c397a91 100644 --- a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-delete-item.citrus.it.yaml +++ b/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-delete-item.citrus.it.yaml @@ -19,6 +19,8 @@ name: aws-ddb-sink-delete-item-test variables: - name: "maxRetryAttempts" value: "20" + - name: "aws.ddb.client.name" + value: "ddbDeleteItemClient" - name: "aws.ddb.streams" value: "false" - name: "aws.ddb.tableName" @@ -32,15 +34,13 @@ actions: localstack: services: - "DYNAMODB" + options: + tables: '${aws.ddb.tableName}' + dynamodbClientName: 'ddbDeleteItemClient' - waitFor: http: url: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}" - # Create AWS-DDB client - - groovy: - script: - file: "aws/ddb/amazonDDBClient.groovy" - # Verify empty AWS-DDB - createVariables: variables: diff --git a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-put-item.citrus.it.yaml b/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-put-item.citrus.it.yaml index 2bea9d1fc..cebf9abc4 100644 --- a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-put-item.citrus.it.yaml +++ b/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-put-item.citrus.it.yaml @@ -19,6 +19,8 @@ name: aws-ddb-sink-put-item-test variables: - name: "maxRetryAttempts" value: "20" + - name: "aws.ddb.client.name" + value: "ddbPutItemClient" - name: "aws.ddb.streams" value: "false" - name: "aws.ddb.tableName" @@ -32,15 +34,13 @@ actions: localstack: services: - "DYNAMODB" + options: + tables: '${aws.ddb.tableName}' + dynamodbClientName: 'ddbPutItemClient' - waitFor: http: url: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}" - # Create AWS-DDB client - - groovy: - script: - file: "aws/ddb/amazonDDBClient.groovy" - # Verify empty AWS-DDB - createVariables: variables: 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 similarity index 95% rename from tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-update-item.citrus.it.yaml.disabled rename to tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-sink-update-item.citrus.it.yaml index b60964776..da050b280 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 @@ -16,9 +16,12 @@ # --------------------------------------------------------------------------- name: aws-ddb-sink-update-item-test +status: DISABLED variables: - name: "maxRetryAttempts" value: "20" + - name: "aws.ddb.client.name" + value: "ddbUpdateItemClient" - name: "aws.ddb.streams" value: "false" - name: "aws.ddb.tableName" @@ -32,15 +35,13 @@ actions: localstack: services: - "DYNAMODB" + options: + tables: '${aws.ddb.tableName}' + dynamodbClientName: 'ddbUpdateItemClient' - waitFor: http: url: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}" - # Create AWS-DDB client - - groovy: - script: - file: "aws/ddb/amazonDDBClient.groovy" - # Verify empty AWS-DDB - createVariables: variables: diff --git a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-source.citrus.it.yaml b/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-source.citrus.it.yaml index df7749f50..29433de7d 100644 --- a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-source.citrus.it.yaml +++ b/tests/camel-kamelets-itest/src/test/resources/aws/ddb/aws-ddb-source.citrus.it.yaml @@ -19,6 +19,8 @@ name: aws-ddb-source-test variables: - name: "maxRetryAttempts" value: "20" + - name: "aws.ddb.client.name" + value: "ddbSourceItemClient" - name: "aws.ddb.streams" value: "true" - name: "aws.ddb.tableName" @@ -36,15 +38,13 @@ actions: localstack: services: - "DYNAMODB" + options: + tables: '${aws.ddb.tableName}' + dynamodbClientName: 'ddbSourceItemClient' - waitFor: http: url: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}" - # Create AWS-DDB client - - groovy: - script: - file: "aws/ddb/amazonDDBClient.groovy" - # Create Camel JBang integration - camel: cli: diff --git a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/getItem.groovy b/tests/camel-kamelets-itest/src/test/resources/aws/ddb/getItem.groovy index e436dfa58..e0c3a75e0 100644 --- a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/getItem.groovy +++ b/tests/camel-kamelets-itest/src/test/resources/aws/ddb/getItem.groovy @@ -16,9 +16,10 @@ */ import org.citrusframework.exceptions.CitrusRuntimeException +import software.amazon.awssdk.services.dynamodb.DynamoDbClient import software.amazon.awssdk.services.dynamodb.model.AttributeValue -var amazonDDBClient = context.getReferenceResolver().resolve("amazonDDBClient") +var amazonDDBClient = context.getReferenceResolver().resolve('${aws.ddb.client.name}', DynamoDbClient.class) try { def item = amazonDDBClient.getItem(b -> b.tableName('${aws.ddb.tableName}') diff --git a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/putItem.groovy b/tests/camel-kamelets-itest/src/test/resources/aws/ddb/putItem.groovy index 907e203ef..987542ffa 100644 --- a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/putItem.groovy +++ b/tests/camel-kamelets-itest/src/test/resources/aws/ddb/putItem.groovy @@ -15,10 +15,12 @@ * limitations under the License. */ + +import software.amazon.awssdk.services.dynamodb.DynamoDbClient import software.amazon.awssdk.services.dynamodb.model.AttributeValue import software.amazon.awssdk.services.dynamodb.model.ReturnValue -var amazonDDBClient = context.getReferenceResolver().resolve("amazonDDBClient") +var amazonDDBClient = context.getReferenceResolver().resolve('${aws.ddb.client.name}', DynamoDbClient.class) Map item = new HashMap<>() item.put("id", AttributeValue.builder().n('${aws.ddb.item.id}').build()) diff --git a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/verifyItems.groovy b/tests/camel-kamelets-itest/src/test/resources/aws/ddb/verifyItems.groovy index 7df226593..f86696b04 100644 --- a/tests/camel-kamelets-itest/src/test/resources/aws/ddb/verifyItems.groovy +++ b/tests/camel-kamelets-itest/src/test/resources/aws/ddb/verifyItems.groovy @@ -16,13 +16,14 @@ */ import org.citrusframework.exceptions.CitrusRuntimeException +import software.amazon.awssdk.services.dynamodb.DynamoDbClient -var amazonDDBClient = context.getReferenceResolver().resolve("amazonDDBClient") +var amazonDDBClient = context.getReferenceResolver().resolve('${aws.ddb.client.name}', DynamoDbClient.class) try { def items = amazonDDBClient.scan(b -> b.tableName('${aws.ddb.tableName}'))?.items() def sorted = items.collect { new TreeMap(it) } - assert '${aws.ddb.items}' == sorted.toString() + assert sorted.toString() == '${aws.ddb.items}' } catch (AssertionError e) { throw new CitrusRuntimeException("AWS DDB item verification failed", e) } 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 deleted file mode 100644 index bc1090200..000000000 --- a/tests/camel-kamelets-itest/src/test/resources/aws/kinesis/amazonKinesisClient.groovy +++ /dev/null @@ -1,36 +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. - */ - -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.kinesis.KinesisClient - -KinesisClient kinesisClient = KinesisClient - .builder() - .endpointOverride(URI.create('${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}')) - .credentialsProvider(StaticCredentialsProvider.create( - AwsBasicCredentials.create( - '${CITRUS_TESTCONTAINERS_LOCALSTACK_ACCESS_KEY}', - '${CITRUS_TESTCONTAINERS_LOCALSTACK_SECRET_KEY}') - )) - .region(Region.of('${CITRUS_TESTCONTAINERS_LOCALSTACK_REGION}')) - .build() - -kinesisClient.createStream(s -> s.streamName('${aws.kinesis.streamName}').shardCount(1)) - -return kinesisClient 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 0b90a11ae..a3824ca4e 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 @@ -37,16 +37,13 @@ actions: localstack: services: - "KINESIS" + options: + streams: '${aws.kinesis.streamName}' + kinesisClientName: "kinesisSinkClient" - waitFor: http: url: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}" - # Create AWS-KINESIS client - - camel: - createComponent: - name: amazonKinesisClient - file: "aws/kinesis/amazonKinesisClient.groovy" - # Create Camel JBang integration - camel: cli: 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 45272cd39..f0e95d3eb 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 @@ -30,16 +30,12 @@ actions: localstack: services: - "KINESIS" + options: + streams: '${aws.kinesis.streamName}' - waitFor: http: url: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}" - # Create AWS-KINESIS client - - camel: - createComponent: - name: amazonKinesisClient - file: "aws/kinesis/amazonKinesisClient.groovy" - # Create Camel JBang integration - camel: cli: @@ -51,7 +47,7 @@ actions: # Publish event - send: - endpoint: camel:aws2-kinesis://${aws.kinesis.streamName}?amazonKinesisClient=#amazonKinesisClient + endpoint: camel:aws2-kinesis://${aws.kinesis.streamName}?amazonKinesisClient=#kinesisClient message: headers: - name: CamelAwsKinesisPartitionKey diff --git a/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-sink-route.citrus.it.yaml b/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-sink-route.citrus.it.yaml index 82ff43b96..c7d519930 100644 --- a/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-sink-route.citrus.it.yaml +++ b/tests/camel-kamelets-itest/src/test/resources/aws/s3/aws-s3-sink-route.citrus.it.yaml @@ -30,16 +30,13 @@ actions: localstack: services: - "S3" + options: + buckets: '${aws.s3.bucketNameOrArn}' + s3ClientName: "s3SinkClient" - waitFor: http: url: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}" - # Create AWS-S3 client - - camel: - createComponent: - name: amazonS3Client - file: "aws/s3/amazonS3Client.groovy" - # Create Camel JBang integration - camel: cli: 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 47c7c8c57..5fa50dfd4 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 @@ -30,16 +30,13 @@ actions: localstack: services: - "S3" + options: + buckets: '${aws.s3.bucketNameOrArn}' + s3ClientName: "amazonS3Client" - waitFor: http: url: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}" - # Create AWS-S3 client - - camel: - createComponent: - name: amazonS3Client - file: "aws/s3/amazonS3Client.groovy" - # Create Camel JBang integration - camel: cli: 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 fac3a4a95..b8f97ab39 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 @@ -30,16 +30,12 @@ actions: localstack: services: - "S3" + options: + buckets: '${aws.s3.bucketNameOrArn}' - waitFor: http: url: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}" - # Create AWS-S3 client - - camel: - createComponent: - name: amazonS3Client - file: "aws/s3/amazonS3Client.groovy" - # Create Camel JBang integration - camel: cli: @@ -65,7 +61,7 @@ actions: # Publish event - send: - endpoint: camel:aws2-s3://${aws.s3.bucketNameOrArn}?amazonS3Client=#amazonS3Client + endpoint: camel:aws2-s3://${aws.s3.bucketNameOrArn}?amazonS3Client=#s3Client message: headers: - name: CamelAwsS3Key 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 a740a19e5..84a5dbb32 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 @@ -30,16 +30,13 @@ actions: localstack: services: - "S3" + options: + buckets: '${aws.s3.bucketNameOrArn}' + s3ClientName: "s3PipeClient" - waitFor: http: url: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}" - # Create AWS-S3 client - - camel: - createComponent: - name: amazonS3Client - file: "aws/s3/amazonS3Client.groovy" - # Create Camel JBang integration - camel: cli: @@ -65,7 +62,7 @@ actions: # Publish event - send: - endpoint: camel:aws2-s3://${aws.s3.bucketNameOrArn}?amazonS3Client=#amazonS3Client + endpoint: camel:aws2-s3://${aws.s3.bucketNameOrArn}?amazonS3Client=#s3PipeClient message: headers: - name: CamelAwsS3Key diff --git a/tests/camel-kamelets-itest/src/test/resources/aws/s3/getS3Object.groovy b/tests/camel-kamelets-itest/src/test/resources/aws/s3/getS3Object.groovy index 5b6a482ec..3bd8e96a1 100644 --- a/tests/camel-kamelets-itest/src/test/resources/aws/s3/getS3Object.groovy +++ b/tests/camel-kamelets-itest/src/test/resources/aws/s3/getS3Object.groovy @@ -15,23 +15,10 @@ * 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.s3.S3Client import software.amazon.awssdk.services.s3.model.GetObjectRequest -S3Client s3 = S3Client - .builder() - .endpointOverride(URI.create('${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}')) - .credentialsProvider(StaticCredentialsProvider.create( - AwsBasicCredentials.create( - '${CITRUS_TESTCONTAINERS_LOCALSTACK_ACCESS_KEY}', - '${CITRUS_TESTCONTAINERS_LOCALSTACK_SECRET_KEY}') - )) - .forcePathStyle(true) - .region(Region.of('${CITRUS_TESTCONTAINERS_LOCALSTACK_REGION}')) - .build() +S3Client s3 = context.getReferenceResolver().resolve("s3SinkClient", S3Client.class) def response = s3.getObjectAsBytes(GetObjectRequest.builder() .bucket('${aws.s3.bucketNameOrArn}') 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 index 3e953f125..a4e6a46eb 100644 --- a/tests/camel-kamelets-itest/src/test/resources/aws/sns/setupSnsToSqs.groovy +++ b/tests/camel-kamelets-itest/src/test/resources/aws/sns/setupSnsToSqs.groovy @@ -15,32 +15,12 @@ * 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_LOCALSTACK_ACCESS_KEY}', - '${CITRUS_TESTCONTAINERS_LOCALSTACK_SECRET_KEY}')) - -def region = Region.of('${CITRUS_TESTCONTAINERS_LOCALSTACK_REGION}') -def endpoint = URI.create('${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}') - -SnsClient snsClient = SnsClient.builder() - .endpointOverride(endpoint) - .credentialsProvider(credentials) - .region(region) - .build() - -SqsClient sqsClient = SqsClient.builder() - .endpointOverride(endpoint) - .credentialsProvider(credentials) - .region(region) - .build() +SnsClient snsClient = context.getReferenceResolver().resolve("snsClient", SnsClient.class) +SqsClient sqsClient = context.getReferenceResolver().resolve("sqsClient", SqsClient.class) def topicArn = snsClient.createTopic(b -> b.name('${aws.sns.topicName}')).topicArn() 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 deleted file mode 100644 index 80676fac7..000000000 --- a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/amazonSQSClient.groovy +++ /dev/null @@ -1,36 +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. - */ - -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.sqs.SqsClient - -SqsClient sqsClient = SqsClient - .builder() - .endpointOverride(URI.create('${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}')) - .credentialsProvider(StaticCredentialsProvider.create( - AwsBasicCredentials.create( - '${CITRUS_TESTCONTAINERS_LOCALSTACK_ACCESS_KEY}', - '${CITRUS_TESTCONTAINERS_LOCALSTACK_SECRET_KEY}') - )) - .region(Region.of('${CITRUS_TESTCONTAINERS_LOCALSTACK_REGION}')) - .build() - -sqsClient.createQueue(s -> s.queueName('${aws.sqs.queueName}')) - -return sqsClient diff --git a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-sink-route.citrus.it.yaml b/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-sink-route.citrus.it.yaml index 9be676c95..824aa77e9 100644 --- a/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-sink-route.citrus.it.yaml +++ b/tests/camel-kamelets-itest/src/test/resources/aws/sqs/aws-sqs-sink-route.citrus.it.yaml @@ -28,16 +28,13 @@ actions: localstack: services: - "SQS" + options: + queues: '${aws.sqs.queueName}' + sqsClientName: "sqsSinkClient" - waitFor: http: url: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}" - # Create AWS-SQS client - - camel: - createComponent: - name: amazonSQSClient - file: "aws/sqs/amazonSQSClient.groovy" - # Create Camel JBang integration - camel: cli: 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 2b30bd631..325c23b7b 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 @@ -28,16 +28,13 @@ actions: localstack: services: - "SQS" + options: + queues: '${aws.sqs.queueName}' + sqsClientName: "amazonSQSClient" - waitFor: http: url: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}" - # Create AWS-SQS client - - camel: - createComponent: - name: amazonSQSClient - file: "aws/sqs/amazonSQSClient.groovy" - # Create Camel JBang integration - camel: cli: 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 7721f0cb5..72f1a6ea4 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 @@ -28,16 +28,13 @@ actions: localstack: services: - "SQS" + options: + queues: '${aws.sqs.queueName}' + sqsClientName: "amazonPipeClient" - waitFor: http: url: "${CITRUS_TESTCONTAINERS_LOCALSTACK_SERVICE_URL}" - # Create AWS-SQS client - - camel: - createComponent: - name: amazonSQSClient - file: "aws/sqs/amazonSQSClient.groovy" - # Create Camel JBang integration - camel: cli: @@ -61,7 +58,7 @@ actions: # Publish event - send: - endpoint: camel:aws2-sqs://${aws.sqs.queueName}?amazonSQSClient=#amazonSQSClient + endpoint: camel:aws2-sqs://${aws.sqs.queueName}?amazonSQSClient=#amazonPipeClient message: body: data: "${aws.sqs.message}"