Some checks failed
Tests / Go Tests (push) Has been cancelled
Tests / Python Tests (push) Has been cancelled
Tests / Integration Tests (push) Has been cancelled
Tests / Go Lint (push) Has been cancelled
Tests / Python Lint (push) Has been cancelled
Tests / Security Scan (push) Has been cancelled
Tests / All Checks Passed (push) Has been cancelled
Security Scanning / Secret Scanning (push) Has been cancelled
Security Scanning / Dependency Vulnerability Scan (push) Has been cancelled
Security Scanning / Go Security Scan (push) Has been cancelled
Security Scanning / Python Security Scan (push) Has been cancelled
Security Scanning / Node.js Security Scan (push) Has been cancelled
Security Scanning / Docker Image Security (push) Has been cancelled
Security Scanning / Security Summary (push) Has been cancelled
CI/CD Pipeline / Go Tests (push) Has been cancelled
CI/CD Pipeline / Python Tests (push) Has been cancelled
CI/CD Pipeline / Website Tests (push) Has been cancelled
CI/CD Pipeline / Linting (push) Has been cancelled
CI/CD Pipeline / Security Scan (push) Has been cancelled
CI/CD Pipeline / Docker Build & Push (push) Has been cancelled
CI/CD Pipeline / Integration Tests (push) Has been cancelled
CI/CD Pipeline / Deploy to Staging (push) Has been cancelled
CI/CD Pipeline / Deploy to Production (push) Has been cancelled
CI/CD Pipeline / CI Summary (push) Has been cancelled
ci/woodpecker/manual/build-ci-image Pipeline was successful
ci/woodpecker/manual/main Pipeline failed
All services: admin-v2, studio-v2, website, ai-compliance-sdk, consent-service, klausur-service, voice-service, and infrastructure. Large PDFs and compiled binaries excluded via .gitignore.
288 lines
7.0 KiB
Bash
Executable File
288 lines
7.0 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# BreakPilot Integration Tests
|
|
# Testet API-Endpoints mit curl
|
|
# Voraussetzung: docker-compose up -d
|
|
|
|
set -e
|
|
|
|
# Farben für Output
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# Basis-URLs
|
|
CONSENT_SERVICE_URL="http://localhost:8081"
|
|
BACKEND_URL="http://localhost:8000"
|
|
MAILPIT_URL="http://localhost:8025"
|
|
|
|
# Test Counter
|
|
TESTS_PASSED=0
|
|
TESTS_FAILED=0
|
|
|
|
# Helper Functions
|
|
log_info() {
|
|
echo -e "${YELLOW}[INFO]${NC} $1"
|
|
}
|
|
|
|
log_success() {
|
|
echo -e "${GREEN}[✓]${NC} $1"
|
|
((TESTS_PASSED++))
|
|
}
|
|
|
|
log_error() {
|
|
echo -e "${RED}[✗]${NC} $1"
|
|
((TESTS_FAILED++))
|
|
}
|
|
|
|
# Test Helper
|
|
test_endpoint() {
|
|
local name=$1
|
|
local method=$2
|
|
local url=$3
|
|
local expected_status=$4
|
|
local headers=$5
|
|
local body=$6
|
|
|
|
log_info "Testing: $name"
|
|
|
|
if [ -z "$body" ]; then
|
|
response=$(curl -s -w "\n%{http_code}" -X "$method" "$url" $headers)
|
|
else
|
|
response=$(curl -s -w "\n%{http_code}" -X "$method" "$url" $headers -d "$body")
|
|
fi
|
|
|
|
http_code=$(echo "$response" | tail -n1)
|
|
response_body=$(echo "$response" | sed '$d')
|
|
|
|
if [ "$http_code" == "$expected_status" ]; then
|
|
log_success "$name - Status: $http_code"
|
|
else
|
|
log_error "$name - Expected: $expected_status, Got: $http_code"
|
|
echo "Response: $response_body"
|
|
fi
|
|
}
|
|
|
|
echo "========================================="
|
|
echo "BreakPilot Integration Tests"
|
|
echo "========================================="
|
|
echo ""
|
|
|
|
# 1. Health Checks
|
|
log_info "=== 1. Health Checks ==="
|
|
|
|
test_endpoint \
|
|
"Consent Service Health" \
|
|
"GET" \
|
|
"$CONSENT_SERVICE_URL/health" \
|
|
"200"
|
|
|
|
test_endpoint \
|
|
"Backend Health" \
|
|
"GET" \
|
|
"$BACKEND_URL/health" \
|
|
"200"
|
|
|
|
test_endpoint \
|
|
"Mailpit Health" \
|
|
"GET" \
|
|
"$MAILPIT_URL/api/v1/info" \
|
|
"200"
|
|
|
|
echo ""
|
|
|
|
# 2. Auth Tests
|
|
log_info "=== 2. Authentication Tests ==="
|
|
|
|
# Register User
|
|
log_info "Registering test user..."
|
|
REGISTER_RESPONSE=$(curl -s -X POST "$CONSENT_SERVICE_URL/api/v1/auth/register" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{
|
|
"email": "integration-test@example.com",
|
|
"password": "TestPassword123!",
|
|
"first_name": "Integration",
|
|
"last_name": "Test"
|
|
}' -w "\n%{http_code}")
|
|
|
|
REGISTER_STATUS=$(echo "$REGISTER_RESPONSE" | tail -n1)
|
|
if [ "$REGISTER_STATUS" == "201" ] || [ "$REGISTER_STATUS" == "409" ]; then
|
|
log_success "User Registration (or already exists)"
|
|
else
|
|
log_error "User Registration - Status: $REGISTER_STATUS"
|
|
fi
|
|
|
|
# Login
|
|
log_info "Logging in..."
|
|
LOGIN_RESPONSE=$(curl -s -X POST "$CONSENT_SERVICE_URL/api/v1/auth/login" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{
|
|
"email": "integration-test@example.com",
|
|
"password": "TestPassword123!"
|
|
}')
|
|
|
|
ACCESS_TOKEN=$(echo "$LOGIN_RESPONSE" | jq -r '.access_token // empty')
|
|
|
|
if [ -n "$ACCESS_TOKEN" ]; then
|
|
log_success "Login - Token received"
|
|
else
|
|
log_error "Login - No access token received"
|
|
echo "Response: $LOGIN_RESPONSE"
|
|
fi
|
|
|
|
echo ""
|
|
|
|
# 3. Protected Endpoints
|
|
log_info "=== 3. Protected Endpoint Tests ==="
|
|
|
|
if [ -n "$ACCESS_TOKEN" ]; then
|
|
test_endpoint \
|
|
"Get My Consents (Protected)" \
|
|
"GET" \
|
|
"$CONSENT_SERVICE_URL/api/v1/consent/my" \
|
|
"200" \
|
|
"-H 'Authorization: Bearer $ACCESS_TOKEN'"
|
|
|
|
test_endpoint \
|
|
"Get My Profile (Protected)" \
|
|
"GET" \
|
|
"$CONSENT_SERVICE_URL/api/v1/users/me" \
|
|
"200" \
|
|
"-H 'Authorization: Bearer $ACCESS_TOKEN'"
|
|
else
|
|
log_error "Skipping protected endpoint tests - no access token"
|
|
fi
|
|
|
|
echo ""
|
|
|
|
# 4. Document Tests
|
|
log_info "=== 4. Document Tests ==="
|
|
|
|
test_endpoint \
|
|
"Get Published Documents" \
|
|
"GET" \
|
|
"$CONSENT_SERVICE_URL/api/v1/documents/published" \
|
|
"200"
|
|
|
|
test_endpoint \
|
|
"Get Document by Type (terms)" \
|
|
"GET" \
|
|
"$CONSENT_SERVICE_URL/api/v1/documents/type/terms" \
|
|
"200"
|
|
|
|
echo ""
|
|
|
|
# 5. Consent Tests
|
|
log_info "=== 5. Consent Tests ==="
|
|
|
|
if [ -n "$ACCESS_TOKEN" ]; then
|
|
# Get published document ID
|
|
DOCUMENTS_RESPONSE=$(curl -s "$CONSENT_SERVICE_URL/api/v1/documents/published")
|
|
VERSION_ID=$(echo "$DOCUMENTS_RESPONSE" | jq -r '.[0].current_version.id // empty')
|
|
|
|
if [ -n "$VERSION_ID" ]; then
|
|
log_info "Creating consent for version: $VERSION_ID"
|
|
|
|
test_endpoint \
|
|
"Create Consent" \
|
|
"POST" \
|
|
"$CONSENT_SERVICE_URL/api/v1/consent" \
|
|
"201" \
|
|
"-H 'Authorization: Bearer $ACCESS_TOKEN' -H 'Content-Type: application/json'" \
|
|
"{\"document_type\":\"terms\",\"version_id\":\"$VERSION_ID\",\"consented\":true}"
|
|
|
|
test_endpoint \
|
|
"Check Consent Status" \
|
|
"GET" \
|
|
"$CONSENT_SERVICE_URL/api/v1/consent/check/terms" \
|
|
"200" \
|
|
"-H 'Authorization: Bearer $ACCESS_TOKEN'"
|
|
else
|
|
log_error "No published document version found for consent test"
|
|
fi
|
|
else
|
|
log_error "Skipping consent tests - no access token"
|
|
fi
|
|
|
|
echo ""
|
|
|
|
# 6. GDPR Tests
|
|
log_info "=== 6. GDPR Tests ==="
|
|
|
|
if [ -n "$ACCESS_TOKEN" ]; then
|
|
test_endpoint \
|
|
"Request Data Export" \
|
|
"POST" \
|
|
"$CONSENT_SERVICE_URL/api/v1/gdpr/export-request" \
|
|
"201" \
|
|
"-H 'Authorization: Bearer $ACCESS_TOKEN'"
|
|
|
|
test_endpoint \
|
|
"Get Export Status" \
|
|
"GET" \
|
|
"$CONSENT_SERVICE_URL/api/v1/gdpr/export-status" \
|
|
"200" \
|
|
"-H 'Authorization: Bearer $ACCESS_TOKEN'"
|
|
else
|
|
log_error "Skipping GDPR tests - no access token"
|
|
fi
|
|
|
|
echo ""
|
|
|
|
# 7. Mailpit Tests
|
|
log_info "=== 7. Email Tests ==="
|
|
|
|
# Check for emails in Mailpit
|
|
MAILPIT_MESSAGES=$(curl -s "$MAILPIT_URL/api/v1/messages")
|
|
MESSAGE_COUNT=$(echo "$MAILPIT_MESSAGES" | jq '.total // 0')
|
|
|
|
log_info "Emails in Mailpit: $MESSAGE_COUNT"
|
|
|
|
if [ "$MESSAGE_COUNT" -gt 0 ]; then
|
|
log_success "Emails received in Mailpit"
|
|
|
|
# Check for welcome email
|
|
WELCOME_EMAIL=$(echo "$MAILPIT_MESSAGES" | jq '.messages[] | select(.Subject | contains("Willkommen")) | .Subject')
|
|
if [ -n "$WELCOME_EMAIL" ]; then
|
|
log_success "Welcome email found: $WELCOME_EMAIL"
|
|
else
|
|
log_info "No welcome email found (may have been sent in previous run)"
|
|
fi
|
|
else
|
|
log_info "No emails in Mailpit (expected if user was already registered)"
|
|
fi
|
|
|
|
echo ""
|
|
|
|
# 8. DSMS Tests (optional - if DSMS is running)
|
|
log_info "=== 8. DSMS Tests (Optional) ==="
|
|
|
|
if curl -sf "$CONSENT_SERVICE_URL/api/v1/dsms/health" > /dev/null 2>&1; then
|
|
test_endpoint \
|
|
"DSMS Gateway Health" \
|
|
"GET" \
|
|
"$CONSENT_SERVICE_URL/api/v1/dsms/health" \
|
|
"200"
|
|
else
|
|
log_info "DSMS not available - skipping DSMS tests"
|
|
fi
|
|
|
|
echo ""
|
|
|
|
# Summary
|
|
echo "========================================="
|
|
echo "Test Results"
|
|
echo "========================================="
|
|
echo -e "${GREEN}Passed:${NC} $TESTS_PASSED"
|
|
echo -e "${RED}Failed:${NC} $TESTS_FAILED"
|
|
echo "========================================="
|
|
|
|
if [ $TESTS_FAILED -eq 0 ]; then
|
|
echo -e "${GREEN}All tests passed! ✓${NC}"
|
|
exit 0
|
|
else
|
|
echo -e "${RED}Some tests failed! ✗${NC}"
|
|
exit 1
|
|
fi
|