From 5c194a5c898914af5d9bdf357febd88ac8b26266 Mon Sep 17 00:00:00 2001 From: Pierre-Henri Symoneaux Date: Mon, 18 Nov 2024 18:15:27 +0100 Subject: [PATCH] test: call venom tests in github-action CI Signed-off-by: Pierre-Henri Symoneaux --- .github/workflows/build.yaml | 2 - .github/workflows/release.yaml | 8 +-- .github/workflows/test.yaml | 62 +++++++++++++++++ tests/Makefile | 6 ++ tests/keys.yaml | 104 +++++++++++++++++++++++++++- tests/lib/okms-cmd.yml | 1 - tests/testdata/ecdsa_pkcs8.priv.pem | 5 ++ tests/testdata/ecdsa_sec1.priv.pem | 5 ++ tests/testdata/ecdsa_ssh.priv.pem | 9 +++ tests/testdata/ecdsa_ssh.pub.pem | 1 + tests/testdata/rsa_pkcs1.priv.pem | 27 ++++++++ tests/testdata/rsa_pkcs8.priv.pem | 28 ++++++++ tests/testdata/rsa_ssh.priv.pem | 38 ++++++++++ tests/testdata/rsa_ssh.pub.pem | 1 + 14 files changed, 288 insertions(+), 9 deletions(-) create mode 100644 .github/workflows/test.yaml create mode 100644 tests/Makefile create mode 100644 tests/testdata/ecdsa_pkcs8.priv.pem create mode 100644 tests/testdata/ecdsa_sec1.priv.pem create mode 100644 tests/testdata/ecdsa_ssh.priv.pem create mode 100644 tests/testdata/ecdsa_ssh.pub.pem create mode 100644 tests/testdata/rsa_pkcs1.priv.pem create mode 100644 tests/testdata/rsa_pkcs8.priv.pem create mode 100644 tests/testdata/rsa_ssh.priv.pem create mode 100644 tests/testdata/rsa_ssh.pub.pem diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index c179d71..da47cd8 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -4,8 +4,6 @@ name: build on: - push: - branches: ["main"] workflow_call: {} jobs: diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index f41de70..f8ae993 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -12,12 +12,12 @@ permissions: # issues: write jobs: - build: - uses: ./.github/workflows/build.yaml + integration-tests: + uses: ./.github/workflows/test.yaml secrets: inherit docker-build: - needs: build + needs: integration-tests runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 @@ -37,7 +37,7 @@ jobs: - run: KO_DOCKER_REPO=ghcr.io/ovh/okms-cli ko build --tags ${{ github.ref_name }},latest --push --bare --platform=linux/arm64,linux/amd64 ./cmd/okms goreleaser: - needs: build + needs: integration-tests runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml new file mode 100644 index 0000000..ec8f245 --- /dev/null +++ b/.github/workflows/test.yaml @@ -0,0 +1,62 @@ +name: test + +on: + push: + branches: ["main"] + workflow_call: {} + + +jobs: + build: + uses: ./.github/workflows/build.yaml + secrets: inherit + test: + needs: build + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: ./.github/actions/setup-build-env + - name: Build CLI + run: go build -cover ./cmd/okms + - name: Setup Venom + run: | + wget https://github.com/ovh/venom/releases/download/v1.2.0/venom.linux-amd64 + mv venom.linux-amd64 venom + chmod +x venom + - name: Setup okms config file + run: | + echo "${{secrets.CERTIFICATE}}" > tls.crt + echo "${{secrets.PRIVATE_KEY}}" > tls.key + + cat > okms.yaml <<-EOF + version: 1 + profile: default + profiles: + default: # default profile + http: + endpoint: ${{secrets.KMS_HTTP_ENDPOINT}} + auth: + type: mtls + cert: $(pwd)/tls.crt + key: $(pwd)/tls.key + EOF + - name: Test connectivity to KMS dmain + run: ./okms keys ls -d -c okms.yaml + - name: Execute tests + run: make -C tests + - uses: actions/upload-artifact@v4 + with: + name: test_results + path: | + ./tests/out/test_results.html + ./tests/out/venom.log + retention-days: 5 + if: always() + - uses: actions/upload-artifact@v4 + with: + name: coverage + path: | + ./tests/out/coverage.txt + ./tests/out/coverage.html + retention-days: 5 + \ No newline at end of file diff --git a/tests/Makefile b/tests/Makefile new file mode 100644 index 0000000..27c0de7 --- /dev/null +++ b/tests/Makefile @@ -0,0 +1,6 @@ +test: + rm -Rf out + ../venom run --html-report --output-dir=out --var-from-file cfg/vars.yaml -v . + go tool covdata percent -i out/coverage + go tool covdata textfmt -i out/coverage -o out/coverage.txt + go tool cover -html out/coverage.txt -o out/coverage.html \ No newline at end of file diff --git a/tests/keys.yaml b/tests/keys.yaml index 09ecbb8..8051f88 100644 --- a/tests/keys.yaml +++ b/tests/keys.yaml @@ -54,6 +54,73 @@ testcases: - result.code ShouldEqual 0 - result.systemoutjson.objects_list ShouldJSONContainWithKey id {{ .value.keyId }} + - name: Update key + steps: + - name: Check AES key current name + type: okms-cmd + args: keys get {{ .Create-Keys.aesKeyId }} + assertions: + - result.code ShouldEqual 0 + - result.systemoutjson.name ShouldEqual "test-aes-1" + - name: Update AES key name + type: okms-cmd + args: keys update {{ .Create-Keys.aesKeyId }} --name test-aes-1-updated + - name: Check AES key new name + type: okms-cmd + args: keys get {{ .Create-Keys.aesKeyId }} + assertions: + - result.code ShouldEqual 0 + - result.systemoutjson.name ShouldEqual "test-aes-1-updated" + + - name: Activate and Deactivate + steps: + - name: Check AES key is active + type: okms-cmd + args: keys get {{ .Create-Keys.aesKeyId }} + assertions: + - result.code ShouldEqual 0 + - result.systemoutjson.attributes.state ShouldEqual "active" + - name: Try activate AES key + type: okms-cmd + args: keys activate {{ .Create-Keys.aesKeyId }} + assertions: + - result.code ShouldEqual 0 + - name: Deactivate AES key + type: okms-cmd + args: keys deactivate {{ .Create-Keys.aesKeyId }} + assertions: + - result.code ShouldEqual 0 + - name: Check AES key is deactivated + type: okms-cmd + args: keys get {{ .Create-Keys.aesKeyId }} + assertions: + - result.code ShouldEqual 0 + - result.systemoutjson.attributes.state ShouldEqual "deactivated" + - name: Compromise AES key + type: okms-cmd + args: keys deactivate {{ .Create-Keys.aesKeyId }} --reason key_compromise + assertions: + - result.code ShouldEqual 0 + - name: Check AES key is compromised + type: okms-cmd + args: keys get {{ .Create-Keys.aesKeyId }} + assertions: + - result.code ShouldEqual 0 + - result.systemoutjson.attributes.state ShouldEqual "compromised" + - result.systemoutjson.attributes.compromise_date ShouldNotBeNil + - name: Reactivate AES key + type: okms-cmd + args: keys activate {{ .Create-Keys.aesKeyId }} + assertions: + - result.code ShouldEqual 0 + - name: Check AES key is active + type: okms-cmd + args: keys get {{ .Create-Keys.aesKeyId }} + assertions: + - result.code ShouldEqual 0 + - result.systemoutjson.attributes.state ShouldEqual "active" + - result.systemoutjson.attributes.compromise_date ShouldBeNil + - name: AES Encryption steps: - name: Encrypt data @@ -281,6 +348,9 @@ testcases: args: keys import --usage encrypt,decrypt --symmetric test-import-aes YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWE= assertions: - result.code ShouldEqual 0 + vars: + toDeleteAesKeyId: + from: result.systemoutjson.id - name: Import RSA PKCS1 key type: okms-cmd args: keys import --usage sign,verify test-import-rsa-pkcs1 @testdata/rsa_pkcs1.priv.pem @@ -315,11 +385,24 @@ testcases: - name: Delete the keys steps: + - name: Try delete active AES key + type: okms-cmd + args: keys delete {{ .Create-Keys.aesKeyId }} + assertions: + - result.code ShouldEqual 1 + - name: Deactivate AES key + type: okms-cmd + args: keys deactivate {{ .Create-Keys.aesKeyId }} + assertions: + - result.code ShouldEqual 0 + - name: Delete deactivated AES key + type: okms-cmd + args: keys delete {{ .Create-Keys.aesKeyId }} + assertions: + - result.code ShouldEqual 0 - name: Force delete the {{ .value.kind }} key type: okms-cmd range: - - keyId: "{{ .Create-Keys.aesKeyId }}" - kind: AES - keyId: "{{ .Create-Keys.rsaKeyId }}" kind: RSA - keyId: "{{ .Create-Keys.ecKeyId }}" @@ -327,3 +410,20 @@ testcases: args: keys delete {{ .value.keyId }} --force assertions: - result.code ShouldEqual 0 + + - name: Cleanup Domain + steps: + - name: List all keys + type: okms-cmd + args: keys ls + assertions: + - result.code ShouldEqual 0 + vars: + allKeys: + from: result.systemoutjson.objects_list + - name: Force delete {{ .value.type }} key {{ .value.name }} + type: okms-cmd + range: "{{.allKeys}}" + args: keys delete {{ .value.id }} --force + assertions: + - result.code ShouldEqual 0 diff --git a/tests/lib/okms-cmd.yml b/tests/lib/okms-cmd.yml index 48f8e4e..a4306ee 100644 --- a/tests/lib/okms-cmd.yml +++ b/tests/lib/okms-cmd.yml @@ -4,7 +4,6 @@ input: format: json steps: - script: mkdir -p ./out/coverage && GOCOVERDIR=./out/coverage {{ .cmd_path }} -c {{ .cfg_path }} --output {{ .input.format }} {{ .input.args }} - # info: "{{ .cmd_path }} -c {{ .cfg_path }} --output {{ .input.format }} {{ .input.args }}" vars: code: from: result.code diff --git a/tests/testdata/ecdsa_pkcs8.priv.pem b/tests/testdata/ecdsa_pkcs8.priv.pem new file mode 100644 index 0000000..841b97f --- /dev/null +++ b/tests/testdata/ecdsa_pkcs8.priv.pem @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgKksp+sxRTdMBUnSK +KLCLQX28FV3zjUmrvs10gK1ZFnuhRANCAASmwId0fcOWQ6DnskzMDVquh5FEqLeV +6SW9kHs7FOW7t2u82fmkDl0z/X3L2D2IZ/aaGpOg3qQAKkvgYCO26HGm +-----END PRIVATE KEY----- diff --git a/tests/testdata/ecdsa_sec1.priv.pem b/tests/testdata/ecdsa_sec1.priv.pem new file mode 100644 index 0000000..fa126f8 --- /dev/null +++ b/tests/testdata/ecdsa_sec1.priv.pem @@ -0,0 +1,5 @@ +-----BEGIN EC PRIVATE KEY----- +MHcCAQEEICpLKfrMUU3TAVJ0iiiwi0F9vBVd841Jq77NdICtWRZ7oAoGCCqGSM49 +AwEHoUQDQgAEpsCHdH3DlkOg57JMzA1aroeRRKi3leklvZB7OxTlu7drvNn5pA5d +M/19y9g9iGf2mhqToN6kACpL4GAjtuhxpg== +-----END EC PRIVATE KEY----- \ No newline at end of file diff --git a/tests/testdata/ecdsa_ssh.priv.pem b/tests/testdata/ecdsa_ssh.priv.pem new file mode 100644 index 0000000..8add87c --- /dev/null +++ b/tests/testdata/ecdsa_ssh.priv.pem @@ -0,0 +1,9 @@ +-----BEGIN OPENSSH PRIVATE KEY----- +b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAaAAAABNlY2RzYS +1zaGEyLW5pc3RwMjU2AAAACG5pc3RwMjU2AAAAQQSlsnz7VFcaNPliN2lduCBW01hecfUL +zjqE83PaNl29sSQe08TZEa2C94Mw851NGvwSSmGWk5m6ky+nZnnoLoYMAAAAsHvkvOJ75L +ziAAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBKWyfPtUVxo0+WI3 +aV24IFbTWF5x9QvOOoTzc9o2Xb2xJB7TxNkRrYL3gzDznU0a/BJKYZaTmbqTL6dmeeguhg +wAAAAgUDmUuoD7DVc+Dr70WqNZgPj++GDr5nnowfXzt7vpG7IAAAAVcHN5bW9uZWFAQzAy +RkwwOE5NTDdMAQID +-----END OPENSSH PRIVATE KEY----- diff --git a/tests/testdata/ecdsa_ssh.pub.pem b/tests/testdata/ecdsa_ssh.pub.pem new file mode 100644 index 0000000..0a0104e --- /dev/null +++ b/tests/testdata/ecdsa_ssh.pub.pem @@ -0,0 +1 @@ +ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBKWyfPtUVxo0+WI3aV24IFbTWF5x9QvOOoTzc9o2Xb2xJB7TxNkRrYL3gzDznU0a/BJKYZaTmbqTL6dmeeguhgw= psymonea@C02FL08NML7L diff --git a/tests/testdata/rsa_pkcs1.priv.pem b/tests/testdata/rsa_pkcs1.priv.pem new file mode 100644 index 0000000..c007b10 --- /dev/null +++ b/tests/testdata/rsa_pkcs1.priv.pem @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEowIBAAKCAQEAqDzr5t25wAd9qDnEEqwfLdGV5jTLbFRTQIP2rKIzqXGIqVnV +ZWZwj1LOpJGVnzCCHQi60uHScouT0wLuqBXF7iGcw+STb2fWNXNUzohF1Dewp2MP +rIK5OImF5TFzYwMdfK5W5EMSF4BpZ3P++yWsa4TPh5caN22fGBJpc8qYuDXqfB1C +I6E7Fsz7TK2dBBGi665szd6iUReqcTI+yJH+QRVvUrwDE2RoKcMTFahZsZ5Zv+W1 +QaDcPq4lx4FEaWdBdVCp/qzZOfyNjjc9WNh5xTi/O4nXeLXFel66sTlnKp45dqmt +fhZx8ttvZv4WxHdajcEYj9EdPWDK4gUfasog5wIDAQABAoIBAEslUxV+6k4symLO +0paojRCxMexunoJXtAv4JcF8fejsjmdeeePd+t751NVLNfKx/xwq3w/80Dxbvf6d +q64mc49nMheJzJURY2vihPnvgolFCsHpjIG4rjTjsIvsJ6cNKCmd0bAJiVY4BFyy +Qi056abo3q2ov4wMieh9qN6QmuCEcsK9if0fcNqnkP8eLtjsV7hbgDQJzXgLAPDj +VXoSg0lbZh0LOHDppr8KCgFn/g74OhuCxbqurEa6IttLAoRZKEu2uNhIYsl53MPp +q2186OIj+5CMPS0W8PuJ9ipr4ObHZyg3759CGumSqAjx/UQdtV1IL+6JnqWakqL2 +vMKlyhkCgYEA3yvNJijkeS6kXUeANmD/kx/4fB/OWCZIry88WWF/VUwRTR4OT4cm +L8gSJea7i2HUw4h+B8gzgelDZMnxVNS1jRjDwenoWJ8qwrs+GcAzUe/UZPVHvkq9 +CgyQXtKmUhC2stD/SZe85sjkU+iF8YBR7bFPbQK0PFYx9xQNkH4g+a0CgYEAwPxx +eY6Cz8Iu3UuBUhxmj8ARnt0CFT4EiZ9o9E0OSv/IyL8jqXRimn9Up6VV+yhevIyX +94Q3HXjOMyozAGvLoOwEKSnOgZ7T8QZ/GJEutx2PHpnUYfsiZxXffBMrC8Xi0lK7 +xLnClNkF3TR79OdroMOp8+c13LQQoLx9oCP4P2MCgYB4pg9kP9s0gDivjQYNX+cL +PM9zGybMlPXab2jq0UCrdlIsJMGL0P6d+kWFY/Wj5qHFi7bGsj7WTqr2hA4J1GzJ ++Mdrv+6yamoNmHh8J2IXO9bRNaExiOol0qECAlOULiD3DvHUcUnYYma9zgkLhFnG +bIMJ5dpWfCrK7nZe1TEyiQKBgQCPkwAFFE4jrO7aulLCuNhgt98kFn53OUV88bjO +kAlDKNrC5tjsN+cn0/UyKCI4kYcxtVNV1OqAJaEalZmOBaRf21cZHL5C1twM4+1o +ZJKhrv8MIBvOrVyh3rb+gvAyeQ1Ptjd1m1G1FWR0dpiF0inTV94309rRkLESNEkt ++7SzywKBgE6nJbK8YL30kyxqyz0pWB6CSfQEVCD+4nVpBlYrmiNpGDnfJOKW8tCW +DexYna2ADOk54TU6kaRegPGKH1+FF6HMn20lUjqtQpu2mV3vbvVMcyj7ubz+Mc3H +qE/XihloiUusYkcPi3+Ksrd/vatIBBFkTVH1TD16js7qK0GHzfo3 +-----END RSA PRIVATE KEY----- \ No newline at end of file diff --git a/tests/testdata/rsa_pkcs8.priv.pem b/tests/testdata/rsa_pkcs8.priv.pem new file mode 100644 index 0000000..596fbbf --- /dev/null +++ b/tests/testdata/rsa_pkcs8.priv.pem @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCxOpNU1lFtNH3s +3w1SUubV0s8bLJqYHX4NEGjJPmY8Htiy4aI2qmf2emM+mbUALyTY8vGajmnpcDH9 +KcEAY2b/yV9F53Z5C8Z4FCyWiYXKutO9vP+xTX75IGjfzMrOAJAGqCaYvIA3j/3+ +xpSy1FeEgrjGKiSt8i9SSYogbk2B4EqKQZJfzK9/bbPVTwJRbLqC9pqc0ZZLnp5a +mVSTIrlqmzHEMHdUB6zY1YUflEvGSvjhirUwrc8xBO4heqGb2ptUAND/6oVUwEfw +j7xKt2uG93yFMNyBNsAqz088dN+t1Ybsj4bRBhITKShlkzwl6BpsSAlx/NicjxMD +6E/x1GARAgMBAAECggEAAKuwEwoclMU2FMdjTYRyyyxZDElG7HxwFaySOPC7gk67 +kzG3Y22RpyUfawU54h5LjWad82/GhtOd3M9jo5S8twsUCTevAxZAUgQBhzBOCU5b +rsQgU5Nvf5HX08D6o3ztDplkS/+qnIs28tfdiC+1hRLZkCZorR/VfgI5O5YvROaK +xCHVyZwGJb2cwVqd9Wbfo99/1CUejxAzXABzBA3lrBdXol2Mq/SAgKYm9xBnywIY +G/wOSqIgZSooN6SZib8M5IkAmw2eRyLld0DKPnMQA8qYn0gqo+U8zzo55eS/SnCk +ZWx0vBYFHyCgqafG3wgPXR8t7UDrHq0QCcr5xa3i4QKBgQDjDMVHXTqnrC3wAZLI +vuunq4YJOR4fE+OpndLAWy02GsTZe5D5tXIiRXVXSUJe4Ffr6BCf1fIyAeAyZTY1 +JnLlcHCu3hpjNhLTzyDlSVd5ZsRFAm5FxbyEo6lLXHyzaA0HUEA2KxR3BTcITNAV +YIhwCtdyFJOOyl86I1VX2SY1bwKBgQDH05MV5+0exxwn/axrGec5S/DgNU2T7rAy +dseX0+t5AFag1+rOpaF0vg3/KYzpX99RBbGKUgsRh1j78RnqCXFfm2nLXXPrqdpA +XQoyoQ7zTw2g7Uz95OTcFIfzPDTiyfs/iun9ghFkMU0uQZlRSpsg5xKbDAXOXmK5 +BsDWY1sCfwKBgCFwXA2qmVzgatOSJ8AQ/jvvcwogs2L4VutAJy3VP89cGem93Rgp +tOl/OUzlqTS37br8rpYbuFPNGuvRJC6nvvwzlyTp6RD7gcJYGwwpxQxIKlfPh9YW +zTDruZ8zu9ngVSriktJnfdgZmIVMasj7Mpztu9U9Wo4JGAVD9um9PXdZAoGBAIel +kAsmzUg/UVW0Vf6+LsAuVO1eQbNSLDmVeBgQu6AAIs48xCBTPy7IdSfpRMaHVkjh +3ItQ9kKH5lfgav78OgH0tfRfE/m963IVtn535nY0C8RaUhFn+BONvFvZWu04v117 +Jyv3x2aEMShdT35nbrb/JRorJyXX3JxNgUoHWBhxAoGAXBsrEEif9jF02GDpnDsv +WSheFEFl+iC4g8Pwj0J/PvIMddFZ5tDUYX3IapYT2hXOrwTTy5E3QwPBpxk1eKDp +Dn6xoM6+dlHPPWA6l48GJK8nmEpgmqemJXwIQ8ODZi2TDE3kWvnZiR3SuP+UJEdS +aZYApzOejZbQzdygUp7Xeg4= +-----END PRIVATE KEY----- \ No newline at end of file diff --git a/tests/testdata/rsa_ssh.priv.pem b/tests/testdata/rsa_ssh.priv.pem new file mode 100644 index 0000000..5f0fa10 --- /dev/null +++ b/tests/testdata/rsa_ssh.priv.pem @@ -0,0 +1,38 @@ +-----BEGIN OPENSSH PRIVATE KEY----- +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 +-----END OPENSSH PRIVATE KEY----- diff --git a/tests/testdata/rsa_ssh.pub.pem b/tests/testdata/rsa_ssh.pub.pem new file mode 100644 index 0000000..e2312dc --- /dev/null +++ b/tests/testdata/rsa_ssh.pub.pem @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC080Ej8WwYjBebXZrYbfuWDHj1n5T4JU8yMitmZP3May45YN5erWLnJEtSPbYoDo3wpM0MmuCvNXTsPUaBV3o5w0VwAa9w8J6e0QaMOzQ85i/4UxaestJTWMWiS2OqBsHd40o67eANtxnwNiAJWlN4Eh9RH2kMe19cy4ImM5DH4MTq3Q6gLlwnwPhKcRoIxcdpmC4QghXHDcDqYSG3puCwLRmSupKrMhBtxT6bvKnLzJkLnxr/EWyM+hQ4uDEBCopxF2mvKg4rwjckvAtycyO34e0dTNZswM033AVvsjSvqAzgOg3pNATasTbjWLA+Ef6y/atct8Z1FVHHLVan70Xn271hL8udYpfzzLL4Fi3WvDIyQ+1/kQp6W2N3ZesmDkQhfUC5DTKy2gzNhHSJAgpVohhXOEZGrgtMjq1E+oYv6pRhIoyxhN3wTsYIjY2ZN98eeAMuz8Y7jVUc/4xVHH8IQPYjxD1/KfWogRcTIC/ewSjXAFrMZEBme2jixqX6Eus= psymonea@C02FL08NML7L