Modern ERP Reports Application with microservices architecture Tech Stack: - Backend: FastAPI + python-oracledb (Oracle DB integration) - Frontend: Vue.js 3 + PrimeVue + Vite - Telegram Bot: python-telegram-bot + SQLite - Infrastructure: Shared database pool, JWT authentication, SSH tunnel Features: - FastAPI backend with async Oracle connection pool - Vue.js 3 responsive frontend with PrimeVue components - Telegram bot alternative interface - Microservices architecture with shared components - Complete deployment support (Linux Docker + Windows IIS) - Comprehensive testing (Playwright E2E + pytest) Repository Structure: - reports-app/ - Main application (backend, frontend, telegram-bot) - shared/ - Shared components (database pool, auth, utils) - deployment/ - Deployment scripts (Linux & Windows) - docs/ - Project documentation - security/ - Security scanning and git hooks
121 lines
3.5 KiB
Bash
121 lines
3.5 KiB
Bash
#!/bin/bash
|
|
# ROA2WEB Integration Test Suite
|
|
# Tests all critical system components
|
|
|
|
set -e
|
|
|
|
# Colors for output
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m' # No Color
|
|
|
|
log() {
|
|
echo -e "[$(date +'%Y-%m-%d %H:%M:%S')] $1"
|
|
}
|
|
|
|
test_passed() {
|
|
log "${GREEN}✅ $1${NC}"
|
|
}
|
|
|
|
test_failed() {
|
|
log "${RED}❌ $1${NC}"
|
|
exit 1
|
|
}
|
|
|
|
test_warning() {
|
|
log "${YELLOW}⚠️ $1${NC}"
|
|
}
|
|
|
|
log "${BLUE}🚀 Starting ROA2WEB Integration Tests${NC}"
|
|
|
|
# Test 1: Check if all containers are running
|
|
log "${BLUE}Testing container status...${NC}"
|
|
if docker compose ps | grep -q "roa-ssh-tunnel.*Up.*healthy"; then
|
|
test_passed "SSH tunnel container healthy"
|
|
else
|
|
test_failed "SSH tunnel container not healthy"
|
|
fi
|
|
|
|
if docker compose ps | grep -q "roa-frontend.*Up.*healthy"; then
|
|
test_passed "Frontend container healthy"
|
|
else
|
|
test_failed "Frontend container not healthy"
|
|
fi
|
|
|
|
if docker compose ps | grep -q "roa-redis.*Up.*healthy"; then
|
|
test_passed "Redis container healthy"
|
|
else
|
|
test_failed "Redis container not healthy"
|
|
fi
|
|
|
|
# Test 2: SSH Tunnel Connectivity
|
|
log "${BLUE}Testing SSH tunnel connectivity...${NC}"
|
|
if docker exec roa-ssh-tunnel nc -z localhost 1521 >/dev/null 2>&1; then
|
|
test_passed "SSH tunnel port 1521 accessible"
|
|
else
|
|
test_failed "SSH tunnel port 1521 not accessible"
|
|
fi
|
|
|
|
# Test 3: Backend API Endpoints
|
|
log "${BLUE}Testing backend API endpoints...${NC}"
|
|
if curl -s http://localhost:8000/health | grep -q "api.*healthy"; then
|
|
test_passed "Backend health endpoint responds"
|
|
else
|
|
test_failed "Backend health endpoint not responding"
|
|
fi
|
|
|
|
# Test 4: Frontend Access
|
|
log "${BLUE}Testing frontend access...${NC}"
|
|
if curl -s http://localhost:3000 | grep -q "ROA Reports"; then
|
|
test_passed "Frontend serves application"
|
|
else
|
|
test_failed "Frontend not serving application"
|
|
fi
|
|
|
|
# Test 5: Nginx Gateway Routing
|
|
log "${BLUE}Testing nginx gateway routing...${NC}"
|
|
if curl -s http://localhost:8080/health | grep -q "healthy"; then
|
|
test_passed "Gateway routes to backend health endpoint"
|
|
else
|
|
test_failed "Gateway not routing to backend"
|
|
fi
|
|
|
|
if curl -s http://localhost:8080/ | grep -q "ROA Reports"; then
|
|
test_passed "Gateway routes to frontend"
|
|
else
|
|
test_failed "Gateway not routing to frontend"
|
|
fi
|
|
|
|
# Test 6: Redis Connectivity
|
|
log "${BLUE}Testing Redis connectivity...${NC}"
|
|
if echo "PING" | nc localhost 6379 | grep -q "PONG"; then
|
|
test_passed "Redis responds to PING"
|
|
else
|
|
test_failed "Redis not responding to PING"
|
|
fi
|
|
|
|
# Test 7: Oracle Database Connection (Expected to fail with auth error)
|
|
log "${BLUE}Testing Oracle database connection...${NC}"
|
|
if curl -s http://localhost:8000/health | grep -q "ORA-01017"; then
|
|
test_warning "Oracle connection reaches database but auth failed (expected - need valid password)"
|
|
elif curl -s http://localhost:8000/health | grep -q "database.*healthy"; then
|
|
test_passed "Oracle database connection successful"
|
|
else
|
|
test_warning "Oracle connection issue - check SSH tunnel and credentials"
|
|
fi
|
|
|
|
# Summary
|
|
log "${GREEN}🎉 Integration tests completed successfully!${NC}"
|
|
log "${BLUE}System Status Summary:${NC}"
|
|
log "✅ SSH Tunnel: Working"
|
|
log "✅ Frontend: Working"
|
|
log "✅ Redis: Working"
|
|
log "✅ Nginx Gateway: Working (port 8080)"
|
|
log "⚠️ Backend: API functional, Oracle auth needs password verification"
|
|
log ""
|
|
log "${YELLOW}Next Steps:${NC}"
|
|
log "1. Verify Oracle password for CONTAFIN_ORACLE user"
|
|
log "2. Test application functionality through gateway (http://localhost:8080)"
|
|
log "3. Monitor logs for any issues: docker compose logs -f" |