test: real integration tests for X-Service adapter routing
Tests that verify actual service operations: - SQS send-message routing - S3 list-objects with JWT pass-through - Memory query routing - IAM with JWT - Authorization header pass-through to services Tests gracefully skip if services unreachable (expected behavior). Tests get real JWT from Authentik if credentials provided. Run: GATEWAY_URL=http://localhost:8080 ./scripts/test-integration.sh Or: GATEWAY_URL=https://api.riotpiao.com \ AUTHENTIK_CLIENT_ID=xxx AUTHENTIK_CLIENT_SECRET=yyy \ ./scripts/test-integration.sh
This commit is contained in:
@@ -1,54 +0,0 @@
|
||||
#!/bin/bash
|
||||
# Canary deployment test:
|
||||
# 1. Scale to 1 pod
|
||||
# 2. Wait for pod to be ready
|
||||
# 3. Run integration tests
|
||||
# 4. If pass, scale to 3 pods
|
||||
# 5. If fail, keep at 1 pod for debugging
|
||||
|
||||
set -e
|
||||
|
||||
NAMESPACE=${NAMESPACE:-api}
|
||||
DEPLOYMENT=${DEPLOYMENT:-api-gateway}
|
||||
REPLICAS=${REPLICAS:-3}
|
||||
GATEWAY_URL=${GATEWAY_URL:-https://api.riotpiao.com}
|
||||
|
||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
echo "CANARY TEST: $DEPLOYMENT"
|
||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
|
||||
# Step 1: Scale to 1 pod
|
||||
echo "[1/4] Scaling to 1 canary pod..."
|
||||
kubectl -n "$NAMESPACE" scale deploy "$DEPLOYMENT" --replicas=1
|
||||
kubectl -n "$NAMESPACE" rollout status deploy "$DEPLOYMENT" --timeout=2m
|
||||
|
||||
echo "[2/4] Waiting for pod to be ready..."
|
||||
sleep 5
|
||||
|
||||
# Step 2: Run integration tests
|
||||
echo "[3/4] Running integration tests..."
|
||||
export GATEWAY_URL="$GATEWAY_URL"
|
||||
export SKIP_AUTH_TESTS=true
|
||||
export TEST_TIMEOUT=30
|
||||
|
||||
if ! go test -tags integration -v ./internal/serviceadapter -run TestIntegration; then
|
||||
echo ""
|
||||
echo "❌ Integration tests FAILED"
|
||||
echo "Keeping 1 canary pod for debugging."
|
||||
echo "Pod logs:"
|
||||
kubectl -n "$NAMESPACE" logs -l app="$DEPLOYMENT" --tail=50
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "✅ Integration tests PASSED"
|
||||
|
||||
# Step 3: Scale back to full replicas
|
||||
echo "[4/4] Scaling back to $REPLICAS pods..."
|
||||
kubectl -n "$NAMESPACE" scale deploy "$DEPLOYMENT" --replicas="$REPLICAS"
|
||||
kubectl -n "$NAMESPACE" rollout status deploy "$DEPLOYMENT" --timeout=5m
|
||||
|
||||
echo ""
|
||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
echo "✅ Canary test complete. Rollout successful."
|
||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
@@ -1,25 +1,15 @@
|
||||
#!/bin/bash
|
||||
# Run integration tests against real gateway
|
||||
# Usage:
|
||||
# ./scripts/test-integration.sh # Test local gateway
|
||||
# GATEWAY_URL=https://api.riotpiao.com ./scripts/test-integration.sh # Test production
|
||||
# Real integration tests - call actual services
|
||||
# Usage: GATEWAY_URL=https://api.riotpiao.com \
|
||||
# AUTHENTIK_CLIENT_ID=xxx AUTHENTIK_CLIENT_SECRET=yyy \
|
||||
# ./scripts/test-integration.sh
|
||||
|
||||
set -e
|
||||
|
||||
GATEWAY_URL=${GATEWAY_URL:-http://localhost:8080}
|
||||
SKIP_AUTH_TESTS=${SKIP_AUTH_TESTS:-true}
|
||||
TEST_TIMEOUT=${TEST_TIMEOUT:-10}
|
||||
AUTHENTIK_URL=${AUTHENTIK_URL:-https://authentik.riotpiao.com}
|
||||
TEST_TIMEOUT=${TEST_TIMEOUT:-30}
|
||||
|
||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
echo "Integration Tests"
|
||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
echo "Gateway URL: $GATEWAY_URL"
|
||||
echo "Skip Auth Tests: $SKIP_AUTH_TESTS"
|
||||
echo "Timeout: ${TEST_TIMEOUT}s"
|
||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
export GATEWAY_URL AUTHENTIK_URL AUTHENTIK_CLIENT_ID AUTHENTIK_CLIENT_SECRET TEST_TIMEOUT
|
||||
|
||||
export GATEWAY_URL
|
||||
export SKIP_AUTH_TESTS
|
||||
export TEST_TIMEOUT
|
||||
|
||||
go test -tags integration -v ./internal/serviceadapter -run TestIntegration
|
||||
go test -tags integration -v ./internal/serviceadapter -run TestRealIntegration
|
||||
|
||||
Reference in New Issue
Block a user