diff --git a/tests/test_compliance_monitor.py b/tests/test_compliance_monitor.py new file mode 100644 index 000000000..645212bb2 --- /dev/null +++ b/tests/test_compliance_monitor.py @@ -0,0 +1,66 @@ +import pytest +import sys +import os +import importlib.util + +spec = importlib.util.spec_from_file_location("compliance_monitor", "security/compliance-monitor.py") +compliance_monitor = importlib.util.module_from_spec(spec) +spec.loader.exec_module(compliance_monitor) + +def test_monitor_soc2_compliance_all_pass(): + monitor = compliance_monitor.ComplianceMonitor() + result = monitor.monitor_soc2_compliance() + + assert result["framework"] == "SOC2" + assert result["compliance_score"] == 100.0 + assert result["status"] == "compliant" + + checks = result["checks"] + assert checks["access_controls"] is True + assert checks["system_monitoring"] is True + assert checks["data_encryption"] is True + assert checks["backup_procedures"] is True + assert checks["incident_response"] is True + +def test_monitor_soc2_compliance_partial_fail(): + monitor = compliance_monitor.ComplianceMonitor() + + monitor.check_access_controls = lambda: False + monitor.check_data_encryption = lambda: False + + result = monitor.monitor_soc2_compliance() + + assert result["framework"] == "SOC2" + assert result["compliance_score"] == 60.0 + assert result["status"] == "non_compliant" + + checks = result["checks"] + assert checks["access_controls"] is False + assert checks["system_monitoring"] is True + assert checks["data_encryption"] is False + assert checks["backup_procedures"] is True + assert checks["incident_response"] is True + +def test_monitor_soc2_compliance_edge_cases(): + monitor = compliance_monitor.ComplianceMonitor() + + monitor.check_access_controls = lambda: False + monitor.check_system_monitoring = lambda: False + monitor.check_data_encryption = lambda: False + monitor.check_backup_procedures = lambda: False + monitor.check_incident_response = lambda: False + + result = monitor.monitor_soc2_compliance() + + assert result["compliance_score"] == 0.0 + assert result["status"] == "non_compliant" + +def test_monitor_soc2_compliance_just_below_threshold(): + monitor = compliance_monitor.ComplianceMonitor() + + monitor.check_access_controls = lambda: False + + result = monitor.monitor_soc2_compliance() + + assert result["compliance_score"] == 80.0 + assert result["status"] == "non_compliant"