158 lines
5.0 KiB
Bash
Executable File
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 "$@"
|