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.
240 lines
6.6 KiB
Bash
Executable File
240 lines
6.6 KiB
Bash
Executable File
#!/bin/bash
|
|
# ============================================
|
|
# BreakPilot Environment Setup Tests
|
|
# ============================================
|
|
# Tests for environment configuration and scripts
|
|
#
|
|
# Usage: ./scripts/test-environment-setup.sh
|
|
# ============================================
|
|
|
|
set -e
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
ROOT_DIR="$(dirname "$SCRIPT_DIR")"
|
|
|
|
# Colors
|
|
GREEN='\033[0;32m'
|
|
RED='\033[0;31m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m'
|
|
|
|
# Test counters
|
|
TESTS_RUN=0
|
|
TESTS_PASSED=0
|
|
TESTS_FAILED=0
|
|
|
|
# Test result function
|
|
test_result() {
|
|
local name=$1
|
|
local result=$2
|
|
TESTS_RUN=$((TESTS_RUN + 1))
|
|
|
|
if [ "$result" -eq 0 ]; then
|
|
echo -e "${GREEN}✓${NC} $name"
|
|
TESTS_PASSED=$((TESTS_PASSED + 1))
|
|
else
|
|
echo -e "${RED}✗${NC} $name"
|
|
TESTS_FAILED=$((TESTS_FAILED + 1))
|
|
fi
|
|
}
|
|
|
|
cd "$ROOT_DIR"
|
|
|
|
echo -e "${BLUE}========================================${NC}"
|
|
echo -e "${BLUE} Environment Setup Tests${NC}"
|
|
echo -e "${BLUE}========================================${NC}"
|
|
echo ""
|
|
|
|
# ==========================================
|
|
# File Existence Tests
|
|
# ==========================================
|
|
echo -e "${YELLOW}Testing: File Existence${NC}"
|
|
|
|
# Test .gitignore
|
|
test -f ".gitignore"
|
|
test_result ".gitignore exists" $?
|
|
|
|
# Test .env files
|
|
test -f ".env.dev"
|
|
test_result ".env.dev exists" $?
|
|
|
|
test -f ".env.staging"
|
|
test_result ".env.staging exists" $?
|
|
|
|
test -f ".env.example"
|
|
test_result ".env.example exists" $?
|
|
|
|
# Test Docker Compose files
|
|
test -f "docker-compose.yml"
|
|
test_result "docker-compose.yml exists" $?
|
|
|
|
test -f "docker-compose.override.yml"
|
|
test_result "docker-compose.override.yml exists" $?
|
|
|
|
test -f "docker-compose.staging.yml"
|
|
test_result "docker-compose.staging.yml exists" $?
|
|
|
|
# Test Scripts
|
|
test -x "scripts/env-switch.sh"
|
|
test_result "scripts/env-switch.sh is executable" $?
|
|
|
|
test -x "scripts/start.sh"
|
|
test_result "scripts/start.sh is executable" $?
|
|
|
|
test -x "scripts/stop.sh"
|
|
test_result "scripts/stop.sh is executable" $?
|
|
|
|
test -x "scripts/promote.sh"
|
|
test_result "scripts/promote.sh is executable" $?
|
|
|
|
test -x "scripts/status.sh"
|
|
test_result "scripts/status.sh is executable" $?
|
|
|
|
# Test Documentation
|
|
test -f "docs/architecture/environments.md"
|
|
test_result "docs/architecture/environments.md exists" $?
|
|
|
|
test -f "docs/guides/environment-setup.md"
|
|
test_result "docs/guides/environment-setup.md exists" $?
|
|
|
|
echo ""
|
|
|
|
# ==========================================
|
|
# Environment File Content Tests
|
|
# ==========================================
|
|
echo -e "${YELLOW}Testing: Environment File Content${NC}"
|
|
|
|
# Test .env.dev content
|
|
grep -q "ENVIRONMENT=development" .env.dev 2>/dev/null
|
|
test_result ".env.dev contains ENVIRONMENT=development" $?
|
|
|
|
grep -q "COMPOSE_PROJECT_NAME=breakpilot-dev" .env.dev 2>/dev/null
|
|
test_result ".env.dev contains correct COMPOSE_PROJECT_NAME" $?
|
|
|
|
grep -q "POSTGRES_DB=breakpilot_dev" .env.dev 2>/dev/null
|
|
test_result ".env.dev contains correct POSTGRES_DB" $?
|
|
|
|
# Test .env.staging content
|
|
grep -q "ENVIRONMENT=staging" .env.staging 2>/dev/null
|
|
test_result ".env.staging contains ENVIRONMENT=staging" $?
|
|
|
|
grep -q "COMPOSE_PROJECT_NAME=breakpilot-staging" .env.staging 2>/dev/null
|
|
test_result ".env.staging contains correct COMPOSE_PROJECT_NAME" $?
|
|
|
|
grep -q "POSTGRES_DB=breakpilot_staging" .env.staging 2>/dev/null
|
|
test_result ".env.staging contains correct POSTGRES_DB" $?
|
|
|
|
grep -q "DEBUG=false" .env.staging 2>/dev/null
|
|
test_result ".env.staging has DEBUG=false" $?
|
|
|
|
echo ""
|
|
|
|
# ==========================================
|
|
# Docker Compose Syntax Tests
|
|
# ==========================================
|
|
echo -e "${YELLOW}Testing: Docker Compose Syntax${NC}"
|
|
|
|
# Test docker-compose.override.yml syntax
|
|
docker compose -f docker-compose.yml -f docker-compose.override.yml config > /dev/null 2>&1
|
|
test_result "docker-compose.override.yml syntax valid" $?
|
|
|
|
# Test docker-compose.staging.yml syntax
|
|
docker compose -f docker-compose.yml -f docker-compose.staging.yml config > /dev/null 2>&1
|
|
test_result "docker-compose.staging.yml syntax valid" $?
|
|
|
|
echo ""
|
|
|
|
# ==========================================
|
|
# Git Repository Tests
|
|
# ==========================================
|
|
echo -e "${YELLOW}Testing: Git Repository${NC}"
|
|
|
|
# Test git repo exists
|
|
test -d ".git"
|
|
test_result "Git repository initialized" $?
|
|
|
|
# Test branches exist
|
|
git branch --list develop | grep -q develop
|
|
test_result "develop branch exists" $?
|
|
|
|
git branch --list staging | grep -q staging
|
|
test_result "staging branch exists" $?
|
|
|
|
git branch --list main | grep -q main
|
|
test_result "main branch exists" $?
|
|
|
|
# Test current branch
|
|
CURRENT_BRANCH=$(git branch --show-current)
|
|
[ "$CURRENT_BRANCH" = "develop" ]
|
|
test_result "Current branch is develop" $?
|
|
|
|
echo ""
|
|
|
|
# ==========================================
|
|
# .gitignore Tests
|
|
# ==========================================
|
|
echo -e "${YELLOW}Testing: .gitignore Content${NC}"
|
|
|
|
# Test that .env is ignored but .env.dev is not
|
|
grep -q "^\.env$" .gitignore 2>/dev/null
|
|
test_result ".gitignore excludes .env" $?
|
|
|
|
grep -q "!\.env\.dev" .gitignore 2>/dev/null
|
|
test_result ".gitignore includes .env.dev" $?
|
|
|
|
grep -q "!\.env\.staging" .gitignore 2>/dev/null
|
|
test_result ".gitignore includes .env.staging" $?
|
|
|
|
grep -q "__pycache__" .gitignore 2>/dev/null
|
|
test_result ".gitignore excludes __pycache__" $?
|
|
|
|
grep -q "node_modules" .gitignore 2>/dev/null
|
|
test_result ".gitignore excludes node_modules" $?
|
|
|
|
echo ""
|
|
|
|
# ==========================================
|
|
# Script Functionality Tests
|
|
# ==========================================
|
|
echo -e "${YELLOW}Testing: Script Functionality${NC}"
|
|
|
|
# Test env-switch.sh creates .env
|
|
./scripts/env-switch.sh dev > /dev/null 2>&1
|
|
test -f ".env"
|
|
test_result "env-switch.sh creates .env file" $?
|
|
|
|
# Verify .env content matches .env.dev
|
|
grep -q "ENVIRONMENT=development" .env 2>/dev/null
|
|
test_result "env-switch.sh sets correct environment" $?
|
|
|
|
# Test switching to staging
|
|
./scripts/env-switch.sh staging > /dev/null 2>&1
|
|
grep -q "ENVIRONMENT=staging" .env 2>/dev/null
|
|
test_result "env-switch.sh can switch to staging" $?
|
|
|
|
# Switch back to dev
|
|
./scripts/env-switch.sh dev > /dev/null 2>&1
|
|
|
|
echo ""
|
|
|
|
# ==========================================
|
|
# Summary
|
|
# ==========================================
|
|
echo -e "${BLUE}========================================${NC}"
|
|
echo -e "${BLUE} Test Summary${NC}"
|
|
echo -e "${BLUE}========================================${NC}"
|
|
echo ""
|
|
echo -e "Tests run: $TESTS_RUN"
|
|
echo -e "Tests passed: ${GREEN}$TESTS_PASSED${NC}"
|
|
echo -e "Tests failed: ${RED}$TESTS_FAILED${NC}"
|
|
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
|