From d5aa68fe2bc7481ff5aa617b28a8392258bdbb25 Mon Sep 17 00:00:00 2001 From: Tom Chauveau Date: Thu, 22 Apr 2021 19:14:17 +0200 Subject: [PATCH] Add test on AWS s3 Signed-off-by: Tom Chauveau --- tests/stdlib.bats | 6 +++ tests/stdlib/aws/s3/s3.cue | 24 ++++++++++++ tests/stdlib/aws/s3/verify.cue | 67 ++++++++++++++++++++++++++++++++++ 3 files changed, 97 insertions(+) create mode 100644 tests/stdlib/aws/s3/s3.cue create mode 100644 tests/stdlib/aws/s3/verify.cue diff --git a/tests/stdlib.bats b/tests/stdlib.bats index 4f71b059..0d7c2aca 100644 --- a/tests/stdlib.bats +++ b/tests/stdlib.bats @@ -37,3 +37,9 @@ setup() { "$DAGGER" compute "$TESTDIR"/stdlib/kubernetes/helm --input-dir kubeconfig=~/.kube --input-dir TestHelmSimpleChart.deploy.chartSource="$TESTDIR"/stdlib/kubernetes/helm/testdata/mychart } + +@test "stdlib: s3" { + skip_unless_secrets_available "$TESTDIR"/stdlib/aws/inputs.yaml + + "$DAGGER" compute "$TESTDIR"/stdlib/aws/s3 --input-yaml "$TESTDIR"/stdlib/aws/inputs.yaml +} \ No newline at end of file diff --git a/tests/stdlib/aws/s3/s3.cue b/tests/stdlib/aws/s3/s3.cue new file mode 100644 index 00000000..92786264 --- /dev/null +++ b/tests/stdlib/aws/s3/s3.cue @@ -0,0 +1,24 @@ +package s3 + +import ( + "dagger.io/aws" + "dagger.io/aws/s3" +) + +TestConfig: awsConfig: aws.#Config & { + region: "us-east-2" +} + +bucket: "dagger-ci" + +content: "A simple test sentence" + +TestS3UploadFile: { + deploy: s3.#Put & { + config: TestConfig.awsConfig + sourceInline: content + target: "s3://\(bucket)/test.txt" + } + + verify: #VerifyS3 +} diff --git a/tests/stdlib/aws/s3/verify.cue b/tests/stdlib/aws/s3/verify.cue new file mode 100644 index 00000000..90befbcb --- /dev/null +++ b/tests/stdlib/aws/s3/verify.cue @@ -0,0 +1,67 @@ +package s3 + +import ( + "dagger.io/aws" + "dagger.io/alpine" + "dagger.io/dagger/op" +) + +#List: { + // AWS Config + config: aws.#Config + + // Target S3 URL (e.g. s3:////) + target?: string + + // Export folder + export: "/contents" + + // Script + aws.#Script & { + code: """ + aws s3 ls \(target) > /contents + """ + } +} + +#VerifyS3: { + lists: #List & { + config: TestConfig.awsConfig + target: "s3://\(bucket)" + } + + #CheckFiles: + """ + grep -q test.txt /test + """ + + test: #up: [ + op.#Load & { + from: alpine.#Image & { + package: bash: "~5.1" + } + }, + + op.#WriteFile & { + dest: "/test" + content: lists.out + }, + + op.#WriteFile & { + dest: "/checkFiles.sh" + content: #CheckFiles + }, + + op.#Exec & { + always: true + args: [ + "/bin/bash", + "--noprofile", + "--norc", + "-eo", + "pipefail", + "/checkFiles.sh", + ] + }, + ] +}