From 13dafb7341db8acef5eb8c0e9615c4b0c83975af Mon Sep 17 00:00:00 2001 From: Sam Alba Date: Mon, 20 Dec 2021 17:31:04 -0800 Subject: [PATCH] tests: implemented tasks tests for engine.#Push Signed-off-by: Sam Alba --- tests/tasks.bats | 5 +++ tests/tasks/push/push.cue | 67 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+) create mode 100644 tests/tasks/push/push.cue diff --git a/tests/tasks.bats b/tests/tasks.bats index 93f74820..79d7cc4a 100644 --- a/tests/tasks.bats +++ b/tests/tasks.bats @@ -14,6 +14,11 @@ setup() { "$DAGGER" --europa up ./pull_auth.cue } +@test "task: #Push" { + cd "$TESTDIR"/tasks/push + "$DAGGER" --europa up ./push.cue +} + @test "task: #ReadFile" { cd "$TESTDIR"/tasks/readfile "$DAGGER" --europa up diff --git a/tests/tasks/push/push.cue b/tests/tasks/push/push.cue new file mode 100644 index 00000000..19eb8bbc --- /dev/null +++ b/tests/tasks/push/push.cue @@ -0,0 +1,67 @@ +package main + +import ( + "strings" + "alpha.dagger.io/europa/dagger/engine" +) + +engine.#Plan & { + inputs: secrets: dockerHubToken: envvar: "DOCKERHUB_TOKEN" + + #auth: [{ + target: "daggerio/ci-test:private-pull" + username: "daggertest" + secret: inputs.secrets.dockerHubToken.contents + }] + + actions: { + randomString: { + baseImage: engine.#Pull & { + source: "alpine:3.15.0@sha256:e7d88de73db3d3fd9b2d63aa7f447a10fd0220b7cbf39803c803f2af9ba256b3" + } + + image: engine.#Exec & { + input: baseImage.output + args: [ + "sh", "-c", "echo -n $RANDOM > /output.txt", + ] + } + + outputFile: engine.#ReadFile & { + input: image.output + path: "/output.txt" + } + + output: outputFile.contents + } + + // Push image with random content + push: engine.#Push & { + dest: "daggerio/ci-test:\(randomString.output)" + input: randomString.image.output + config: Env: ["FOO=\(randomString.output)"] + auth: #auth + } + + // Pull same image and check the content + pull: engine.#Pull & { + source: "daggerio/ci-test:\(randomString.output)" + auth: #auth + } & { + // check digest + digest: strings.Split(push.result, "@")[1] + // check image config + config: { + Env: ["FOO=\(randomString.output)"] + } + } + + pullOutputFile: engine.#ReadFile & { + input: pull.output + path: "/output.txt" + } + + // Check output file in the pulled image + pullContent: string & pullOutputFile.contents & randomString.contents + } +}