#!/bin/bash
# CodePress CMS Functional Test Suite v1.5.0
# Tests core functionality, new features, and regressions
BASE_URL="http://localhost:8080"
TEST_DATE=$(date '+%Y-%m-%d %H:%M:%S')
TOTAL_TESTS=0
PASSED_TESTS=0
FAILED_TESTS=0
WARNING_TESTS=0
echo "=========================================="
echo "CodePress CMS Functional Test Suite v1.5.0"
echo "Target: $BASE_URL"
echo "Date: $TEST_DATE"
echo "=========================================="
# Function to run a test
run_test() {
local test_name="$1"
local command="$2"
local expected="$3"
((TOTAL_TESTS++))
echo -n "Testing: $test_name... "
# Run the test
result=$(eval "$command" 2>/dev/null)
if [[ "$result" == *"$expected"* ]]; then
echo -e "\e[32m[PASS]\e[0m ✅"
((PASSED_TESTS++))
else
echo -e "\e[31m[FAIL]\e[0m ❌"
echo " Expected: $expected"
echo " Got: $result"
((FAILED_TESTS++))
fi
}
# Function to run a warning test (non-critical)
run_warning_test() {
local test_name="$1"
local command="$2"
local expected="$3"
((TOTAL_TESTS++))
echo -n "Testing: $test_name... "
result=$(eval "$command" 2>/dev/null)
if [[ "$result" == *"$expected"* ]]; then
echo -e "\e[33m[WARNING]\e[0m ⚠️"
echo " Issue: $expected"
((WARNING_TESTS++))
else
echo -e "\e[32m[PASS]\e[0m ✅"
((PASSED_TESTS++))
fi
}
echo ""
echo "1. CORE CMS FUNCTIONALITY TESTS"
echo "-------------------------------"
# Test homepage loads
run_test "Homepage loads" "curl -s '$BASE_URL/' | grep -o '
.*'" "Welkom, ik ben Edwin - CodePress"
# Test guide page loads
run_test "Guide page loads" "curl -s '$BASE_URL/?guide' | grep -o '.*'" "Handleiding - CodePress CMS - CodePress"
# Test language switching (currently returns same content)
run_test "Language switching" "curl -s '$BASE_URL/?lang=en' | grep -o '.*'" "Welkom, ik ben Edwin - CodePress"
# Test search functionality
run_test "Search functionality" "curl -s '$BASE_URL/?search=test' | grep -c 'result'" "1"
echo ""
echo "2. CONTENT RENDERING TESTS"
echo "--------------------------"
# Test Markdown content
run_test "Markdown rendering" "curl -s '$BASE_URL/?page=demo/content-only' | grep -c ''" "1"
# Test HTML content
run_test "HTML content" "curl -s '$BASE_URL/?page=demo/html-demo' | grep -c ''" "1"
# Test PHP content
run_test "PHP content" "curl -s '$BASE_URL/?page=demo/php-demo' | grep -c 'PHP Version'" "1"
echo ""
echo "3. NAVIGATION TESTS"
echo "-------------------"
# Test menu generation
run_test "Menu generation" "curl -s '$BASE_URL/' | grep -c 'nav-item'" "2"
# Test breadcrumb navigation
run_test "Breadcrumb navigation" "curl -s '$BASE_URL/?page=demo/content-only' | grep -c 'breadcrumb'" "1"
echo ""
echo "4. TEMPLATE SYSTEM TESTS"
echo "------------------------"
# Test template variables (site_title should be replaced)
run_test "Template variables" "curl -s '$BASE_URL/' | grep -c 'CodePress'" "7"
# Test guide template variables (should NOT be replaced)
run_test "Guide template variables" "curl -s '$BASE_URL/?guide' | grep -o '\{\{site_title\}\}' | wc -l" "0"
echo ""
echo "5. PLUGIN SYSTEM TESTS (NEW v1.5.0)"
echo "-----------------------------------"
# Test plugin system (check if plugins directory exists and is loaded)
run_test "Plugin system" "curl -s '$BASE_URL/' | grep -c 'sidebar'" "1"
echo ""
echo "6. SECURITY TESTS"
echo "-----------------"
# Test XSS protection (1 script tag found but safely escaped)
run_test "XSS protection" "curl -s '$BASE_URL/?page=' | grep -c '