Skip to content

test: add integration tests #57

test: add integration tests

test: add integration tests #57

Workflow file for this run

name: Test
on:
pull_request:
push:
branches:
- main
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version-file: go.mod
check-latest: true
cache: true
- uses: golangci/golangci-lint-action@v7
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version-file: go.mod
check-latest: true
cache: true
- run: make test
integration:
runs-on: ubuntu-latest
services:
consul:
image: hashicorp/consul
ports:
- 8500:8500
vault:
image: hashicorp/vault
env:
SKIP_SETCAP: "true"
VAULT_DEV_ROOT_TOKEN_ID: vault-auth-token
ports:
- 8200:8200
env:
SERVICE_NAME: my-test-service
SERVICE_PRODUCT: test
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version-file: go.mod
check-latest: true
cache: true
- name: Setup
run: |
# Load values into Consul
curl -X PUT --data foo http://127.0.0.1:8500/v1/kv/global/env_vars/FOO
curl -X PUT --data bar http://127.0.0.1:8500/v1/kv/global/env_vars/BAR
curl -X PUT --data dev http://127.0.0.1:8500/v1/kv/global/dev/env_vars/DEV
curl -X PUT --data foobar http://127.0.0.1:8500/v1/kv/services/my-test-service/env_vars/FOO
curl -X PUT --data baz http://127.0.0.1:8500/v1/kv/services/my-test-service/env_vars/BAZ
curl -X PUT --data test http://127.0.0.1:8500/v1/kv/services/my-test-service/dev/env_vars/FOOBAR
# Turn off kv v2 and enable kv v1
curl -X DELETE --header "X-Vault-Token: vault-auth-token" http://127.0.0.1:8200/v1/sys/mounts/secret
curl -X POST --header "X-Vault-Token: vault-auth-token" --data '{"type":"kv","path":"secret/","options":{"version":"1"}}' http://127.0.0.1:8200/v1/sys/mounts/secret
# Load values into Vault
curl -X POST --header "X-Vault-Token: vault-auth-token" --data '{"value":"my-secret"}' http://127.0.0.1:8200/v1/secret/global/env_vars/SECRET
curl -X POST --header "X-Vault-Token: vault-auth-token" --data '{"value":"my-dev-secret"}' http://127.0.0.1:8200/v1/secret/global/dev/env_vars/SECRET
curl -X POST --header "X-Vault-Token: vault-auth-token" --data '{"value":"vdev"}' http://127.0.0.1:8200/v1/secret/global/dev/env_vars/DEV
curl -X POST --header "X-Vault-Token: vault-auth-token" --data '{"value":"vfoo"}' http://127.0.0.1:8200/v1/secret/services/my-test-service/env_vars/FOO
curl -X POST --header "X-Vault-Token: vault-auth-token" --data '{"value":"vfoobar"}' http://127.0.0.1:8200/v1/secret/services/my-test-service/dev/env_vars/FOOBAR
- name: Test no config
run: scripts/test -s 0 -e tests/no-config.stderr.txt true
- name: Test no command
run: scripts/test -s 1 -e tests/no-command.stderr.txt
- name: Test load all dev
run: scripts/test -d -s 0 -o tests/dev.stdout.txt -e tests/dev.stderr.txt tests/print-env FOO BAR BAZ DEV TEST SECRET
env:
CONSUL_ADDR: http://127.0.0.1:8500
VAULT_ADDR: http://127.0.0.1:8200
VAULT_TOKEN: vault-auth-token
- name: Test load all
run: scripts/test -d -s 0 -o tests/full.stdout.txt -e tests/full.stderr.txt tests/print-env FOO BAR BAZ DEV TEST SECRET
env:
CONSUL_ADDR: http://127.0.0.1:8500
VAULT_ADDR: http://127.0.0.1:8200
VAULT_TOKEN: vault-auth-token
SERVICE_ENV: stage
- name: Test load consul
run: scripts/test -s 0 -o tests/consul.stdout.txt -e tests/consul.stderr.txt tests/print-env FOO BAR BAZ DEV TEST
env:
CONSUL_ADDR: http://127.0.0.1:8500
- name: Test load vault
run: scripts/test -s 0 -o tests/vault.stdout.txt -e tests/vault.stderr.txt tests/print-env FOO BAR BAZ DEV TEST SECRET
env:
VAULT_ADDR: http://127.0.0.1:8200
VAULT_TOKEN: vault-auth-token
SERVICE_ENV: stage
shellcheck:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: shellcheck scripts/*