#!/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