Files
go-sip/cmd/saas-server/check-integration.sh
T

31 lines
1.7 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
cd "$(dirname "$0")/../.."
image=rabbitmq:4.1-management-alpine
command -v docker >/dev/null && docker info >/dev/null
# Never pull images or connect to an existing broker implicitly.
docker image inspect "$image" >/dev/null
uid=$(docker run --rm --entrypoint id "$image" -u rabbitmq)
gid=$(docker run --rm --entrypoint id "$image" -g rabbitmq)
name="saas-server-test-$$"
cleanup() { docker rm -f "$name" >/dev/null 2>&1; }
trap cleanup EXIT
docker run -d --name "$name" --tmpfs "/var/lib/rabbitmq:rw,uid=$uid,gid=$gid,mode=0700" \
-p 127.0.0.1::5672 "$image" >/dev/null
ready=0
for _ in $(seq 1 60); do
if docker exec -u rabbitmq "$name" rabbitmq-diagnostics -q check_running >/dev/null 2>&1; then ready=1; break; fi
sleep 1
done
if [ "$ready" -ne 1 ]; then echo 'isolated RabbitMQ not ready' >&2; exit 1; fi
password=$(openssl rand -hex 12)
docker exec -u rabbitmq "$name" rabbitmqctl add_user saas_test "$password" >/dev/null
docker exec -u rabbitmq "$name" rabbitmqctl add_vhost saas-mock-server-test >/dev/null
docker exec -u rabbitmq "$name" rabbitmqctl set_permissions -p saas-mock-server-test saas_test '.*' '.*' '.*' >/dev/null
port=$(docker port "$name" 5672/tcp | awk -F: 'NR==1{print $NF}')
export SAAS_MOCK_TEST_BROKER_URL="amqp://saas_test:${password}@127.0.0.1:${port}/saas-mock-server-test"
output=$(go test -race -tags=integration ./cmd/saas-server -run '^Test(SaaSServerIsolatedHTTPSMQAgentMTLS|StartupShutdownPreservesConfiguration)$' -count=1 -v 2>&1) || { printf '%s\n' "$output"; exit 1; }
printf '%s\n' "$output"
grep -Fq -- '--- PASS: TestSaaSServerIsolatedHTTPSMQAgentMTLS (' <<<"$output"
grep -Fq -- '--- PASS: TestStartupShutdownPreservesConfiguration (' <<<"$output"