Files
HomeAudit/test_audit.sh
2025-08-24 11:13:39 -04:00

158 lines
5.0 KiB
Bash
Executable File

#!/bin/bash
# ===============================================================================
# HomeAudit Test Script
# Tests the enhanced audit system functionality
# ===============================================================================
# Colors
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'
print_status() {
echo -e "${BLUE}[TEST]${NC} $1"
}
print_success() {
echo -e "${GREEN}[PASS]${NC} $1"
}
print_warning() {
echo -e "${YELLOW}[WARN]${NC} $1"
}
print_error() {
echo -e "${RED}[FAIL]${NC} $1"
}
# Test counter
TESTS_PASSED=0
TESTS_FAILED=0
# Test function
run_test() {
local test_name="$1"
local test_command="$2"
print_status "Running: $test_name"
if eval "$test_command" >/dev/null 2>&1; then
print_success "$test_name"
((TESTS_PASSED++))
else
print_error "$test_name"
((TESTS_FAILED++))
fi
}
# Main test execution
main() {
echo "========================================"
echo "HomeAudit System Test Suite"
echo "Testing Version 2.0 Enhancements"
echo "========================================"
echo
# Test 1: Check if main audit script exists and is executable
run_test "Audit script exists and is executable" \
"[ -f linux_system_audit.sh ] && [ -x linux_system_audit.sh ]"
# Test 2: Check if deployment script exists and is executable
run_test "Deployment script exists and is executable" \
"[ -f deploy_audit.sh ] && [ -x deploy_audit.sh ]"
# Test 3: Check if Ansible playbook exists
run_test "Ansible playbook exists" \
"[ -f linux_audit_playbook.yml ]"
# Test 4: Check if inventory file exists
run_test "Inventory file exists" \
"[ -f inventory.ini ]"
# Test 5: Check if configuration file exists
run_test "Configuration file exists" \
"[ -f audit_config.yml ]"
# Test 6: Test audit script syntax
run_test "Audit script has valid bash syntax" \
"bash -n linux_system_audit.sh"
# Test 7: Test deployment script syntax
run_test "Deployment script has valid bash syntax" \
"bash -n deploy_audit.sh"
# Test 8: Test Ansible playbook syntax
run_test "Ansible playbook has valid YAML syntax" \
"ansible-playbook --syntax-check linux_audit_playbook.yml >/dev/null 2>&1"
# Test 9: Check for required functions in audit script
run_test "Audit script contains enhanced error handling" \
"grep -q 'error_handler' linux_system_audit.sh"
# Test 10: Check for enhanced logging
run_test "Audit script contains enhanced logging" \
"grep -q 'log_info\|log_warn\|log_error' linux_system_audit.sh"
# Test 11: Check for environment validation
run_test "Audit script contains environment validation" \
"grep -q 'validate_environment' linux_system_audit.sh"
# Test 12: Check for enhanced security features
run_test "Audit script contains enhanced security checks" \
"grep -q 'dangerous_suid\|sensitive_patterns' linux_system_audit.sh"
# Test 13: Check for JSON fallback functionality
run_test "Audit script contains JSON fallback logic" \
"grep -q 'jq not available' linux_system_audit.sh"
# Test 14: Check for retry logic in playbook
run_test "Ansible playbook contains retry logic" \
"grep -q 'retries:' linux_audit_playbook.yml"
# Test 15: Check for enhanced connectivity testing
run_test "Deployment script contains enhanced connectivity testing" \
"grep -q 'success_count.*total_hosts' deploy_audit.sh"
# Test 16: Check for configuration file validation
run_test "Configuration file has valid YAML structure" \
"python3 -c 'import yaml; yaml.safe_load(open(\"audit_config.yml\"))' >/dev/null 2>&1"
# Test 17: Check for version information
run_test "Scripts contain version 2.0 information" \
"grep -q 'Version.*2.0' linux_system_audit.sh deploy_audit.sh"
# Test 18: Check for enhanced summary generation
run_test "Audit script contains enhanced summary generation" \
"grep -q 'create_enhanced_summary' linux_system_audit.sh"
# Test 19: Check for archive verification
run_test "Audit script contains archive verification" \
"grep -q 'verify_integrity\|archive_size' linux_system_audit.sh"
# Test 20: Check for modular architecture
run_test "Audit script uses modular approach" \
"grep -q 'modules=(' linux_system_audit.sh"
echo
echo "========================================"
echo "Test Results Summary"
echo "========================================"
echo "Tests Passed: $TESTS_PASSED"
echo "Tests Failed: $TESTS_FAILED"
echo "Total Tests: $((TESTS_PASSED + TESTS_FAILED))"
echo
if [ $TESTS_FAILED -eq 0 ]; then
print_success "All tests passed! HomeAudit v2.0 is ready for deployment."
exit 0
else
print_error "Some tests failed. Please review the issues above."
exit 1
fi
}
# Run main function
main "$@"