From 0fc527660874c1a82125d9d4f9a1ed32608c848e Mon Sep 17 00:00:00 2001 From: Glen Johnson Date: Wed, 8 Mar 2023 09:14:29 -0700 Subject: [PATCH] Add e2e test --- .gitignore | 2 +- Jenkinsfile | 6 ++++++ e2e_test.sh | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++ secrets.yml | 3 +++ 4 files changed, 65 insertions(+), 1 deletion(-) create mode 100755 e2e_test.sh create mode 100644 secrets.yml diff --git a/.gitignore b/.gitignore index 26c24a5..a340e0a 100644 --- a/.gitignore +++ b/.gitignore @@ -2,7 +2,7 @@ pkg junit.xml summon-aws *.sublime-project -secrets.yml +summon-s3 # Compiled Object files, Static and Dynamic libs (Shared Objects) *.o diff --git a/Jenkinsfile b/Jenkinsfile index 9b924e4..3a26119 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -18,6 +18,12 @@ pipeline { stage('Changelog') { steps { sh './parse-changelog.sh' } } + stage('E2E Test') { + steps { + sh 'git config --global --add safe.directory "$PWD"' + sh 'summon --provider summon-conjur ./e2e_test.sh' + } + } } } diff --git a/e2e_test.sh b/e2e_test.sh new file mode 100755 index 0000000..e8b4606 --- /dev/null +++ b/e2e_test.sh @@ -0,0 +1,55 @@ +#!/bin/bash -e + +# Run this script using summon +# summon --provider summon-conjur ./e2e_test.sh + +REQUIRED_VARS=(AWS_REGION AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY) +export AWS_BUCKET="summon-s3-ci" +export AWS_ARTIFACT="ci-secret.txt" + +function main { + check_required_vars + build_summon_image + test_output "test secret" +} + +function check_required_vars { + for var in "${REQUIRED_VARS[@]}"; do + if [[ -z "${!var}" ]]; then + echo "$var is not set" + exit 1 + fi + done +} + +function build_summon_image { + rm -rf summon + git clone "https://github.com/cyberark/summon.git" + pushd summon > /dev/null + docker build . -t test-summon + popd > /dev/null +} + +# Helper function to build and run the Docker container +function test_output { + local expected_output="$1" + local output=$(docker run --rm \ + -v "$PWD:/summon-s3-src" -w "/summon-s3-src" \ + -e AWS_REGION -e AWS_ACCESS_KEY_ID -e AWS_SECRET_ACCESS_KEY -e AWS_BUCKET -e AWS_ARTIFACT \ + test-summon \ + go build > /dev/null && \ + summon --provider ./pkg/darwin/summon-s3 \ + --yaml "TEST_CRED: !var $AWS_BUCKET/$AWS_ARTIFACT" \ + printenv TEST_CRED) || true + + if [ "$output" == "$expected_output" ] && [ $? -eq 0 ]; then + echo "Test passed" + exit 0 + else + echo "Test failed" + echo "Expected output to equal: '$expected_output'. Actual output: $output" + exit 1 + fi +} + +main diff --git a/secrets.yml b/secrets.yml new file mode 100644 index 0000000..6a915f1 --- /dev/null +++ b/secrets.yml @@ -0,0 +1,3 @@ +AWS_REGION: !var dev/aws/iam/users/sys_powerful/region +AWS_ACCESS_KEY_ID: !var dev/aws/iam/users/sys_powerful/access_key_id +AWS_SECRET_ACCESS_KEY: !var dev/aws/iam/users/sys_powerful/secret_access_key