Files
miracles_in_motion/scripts/test-deployment.sh

142 lines
4.5 KiB
Bash

#!/bin/bash
# Deployment Testing Script for Miracles in Motion
# Tests all endpoints and verifies deployment status
set -e
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# Configuration
STATIC_WEB_APP_URL="https://lemon-water-015cb3010.3.azurestaticapps.net"
FUNCTION_APP_URL="https://mim-prod-igiay4-func.azurewebsites.net"
RESOURCE_GROUP="rg-miraclesinmotion-prod"
echo -e "${GREEN}🧪 Starting Deployment Tests${NC}"
echo "=================================="
echo ""
# Test counter
TESTS_PASSED=0
TESTS_FAILED=0
# Function to test endpoint
test_endpoint() {
local url=$1
local name=$2
local expected_code=${3:-200}
echo -n "Testing $name... "
HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" --max-time 10 "$url" || echo "000")
if [ "$HTTP_CODE" = "$expected_code" ]; then
echo -e "${GREEN}✅ PASS${NC} (HTTP $HTTP_CODE)"
((TESTS_PASSED++))
return 0
else
echo -e "${RED}❌ FAIL${NC} (HTTP $HTTP_CODE, expected $expected_code)"
((TESTS_FAILED++))
return 1
fi
}
# Test Static Web App
echo -e "${YELLOW}📱 Testing Static Web App${NC}"
test_endpoint "$STATIC_WEB_APP_URL" "Static Web App Homepage"
test_endpoint "$STATIC_WEB_APP_URL/index.html" "Static Web App Index"
test_endpoint "$STATIC_WEB_APP_URL/manifest.webmanifest" "PWA Manifest" 200
# Test Function App
echo ""
echo -e "${YELLOW}⚡ Testing Function App${NC}"
test_endpoint "$FUNCTION_APP_URL" "Function App Homepage"
test_endpoint "$FUNCTION_APP_URL/api/health" "Function App Health Check" 200
# Test Azure Resources
echo ""
echo -e "${YELLOW}☁️ Testing Azure Resources${NC}"
# Check Static Web App status
echo -n "Checking Static Web App status... "
SWA_STATUS=$(az staticwebapp show --name mim-prod-igiay4-web --resource-group $RESOURCE_GROUP --query "properties.provisioningState" -o tsv 2>/dev/null || echo "Unknown")
if [ "$SWA_STATUS" = "Succeeded" ] || [ "$SWA_STATUS" = "Ready" ]; then
echo -e "${GREEN}✅ PASS${NC} (Status: $SWA_STATUS)"
((TESTS_PASSED++))
else
echo -e "${YELLOW}⚠️ WARNING${NC} (Status: $SWA_STATUS)"
fi
# Check Function App status
echo -n "Checking Function App status... "
FA_STATUS=$(az functionapp show --name mim-prod-igiay4-func --resource-group $RESOURCE_GROUP --query "state" -o tsv 2>/dev/null || echo "Unknown")
if [ "$FA_STATUS" = "Running" ]; then
echo -e "${GREEN}✅ PASS${NC} (Status: $FA_STATUS)"
((TESTS_PASSED++))
else
echo -e "${RED}❌ FAIL${NC} (Status: $FA_STATUS)"
((TESTS_FAILED++))
fi
# Check Key Vault
echo -n "Checking Key Vault... "
KV_EXISTS=$(az keyvault show --name mim-prod-igiay4-kv --resource-group $RESOURCE_GROUP --query "name" -o tsv 2>/dev/null || echo "")
if [ -n "$KV_EXISTS" ]; then
echo -e "${GREEN}✅ PASS${NC}"
((TESTS_PASSED++))
else
echo -e "${RED}❌ FAIL${NC}"
((TESTS_FAILED++))
fi
# Check Application Insights
echo -n "Checking Application Insights... "
AI_EXISTS=$(az monitor app-insights component show --app mim-prod-igiay4-appinsights --resource-group $RESOURCE_GROUP --query "name" -o tsv 2>/dev/null || echo "")
if [ -n "$AI_EXISTS" ]; then
echo -e "${GREEN}✅ PASS${NC}"
((TESTS_PASSED++))
else
echo -e "${RED}❌ FAIL${NC}"
((TESTS_FAILED++))
fi
# Test SSL/TLS
echo ""
echo -e "${YELLOW}🔒 Testing SSL/TLS${NC}"
echo -n "Testing HTTPS on Static Web App... "
if echo | openssl s_client -connect lemon-water-015cb3010.3.azurestaticapps.net:443 -servername lemon-water-015cb3010.3.azurestaticapps.net 2>/dev/null | grep -q "Verify return code: 0"; then
echo -e "${GREEN}✅ PASS${NC}"
((TESTS_PASSED++))
else
echo -e "${YELLOW}⚠️ WARNING${NC} (Could not verify SSL)"
fi
# Test Performance
echo ""
echo -e "${YELLOW}⚡ Testing Performance${NC}"
echo -n "Testing Static Web App response time... "
RESPONSE_TIME=$(curl -s -o /dev/null -w "%{time_total}" --max-time 10 "$STATIC_WEB_APP_URL" || echo "999")
if (( $(echo "$RESPONSE_TIME < 3.0" | bc -l) )); then
echo -e "${GREEN}✅ PASS${NC} (${RESPONSE_TIME}s)"
((TESTS_PASSED++))
else
echo -e "${YELLOW}⚠️ WARNING${NC} (${RESPONSE_TIME}s - may be slow)"
fi
# Summary
echo ""
echo "=================================="
echo -e "${GREEN}Tests Passed: $TESTS_PASSED${NC}"
if [ $TESTS_FAILED -gt 0 ]; then
echo -e "${RED}Tests Failed: $TESTS_FAILED${NC}"
exit 1
else
echo -e "${GREEN}Tests Failed: $TESTS_FAILED${NC}"
echo ""
echo -e "${GREEN}✅ All tests passed!${NC}"
exit 0
fi