import pytest from models.test_case import Case, CaseManager def test_case(monkeypatch): # Mock the hashlib.md5 function to return a deterministic value class MockMD5: def __init__(self, data): self.data = data def hexdigest(self): return "7f6df4e4a04d39b51fea1a810a9a5d4f" monkeypatch.setattr("hashlib.md5", MockMD5) # Mock environment variables monkeypatch.setenv("HOST", "http://example.com") monkeypatch.setenv("ORG_ID", "org123") monkeypatch.setenv("PRJ_ID", "prj456") monkeypatch.setenv("PUBLIC_KEY", "pub_key") monkeypatch.setenv("PRIVATE_KEY", "priv_key") case = Case( operation_id="test_operation", method="GET", path="/api/test", category="validation", affected_element="query_param", element_type="string", generation_strategy={"name": "invalid_value", "value": "123"}, type="Negative", description="Test invalid query parameter", environment={}, request={"query_params": {"param": "123"}}, expected_status=400, ) assert case.id == "7f6df4e4a04d39b51fea1a810a9a5d4f" assert case.operation_id == "test_operation" assert case.method == "GET" assert case.path == "/api/test" assert case.category == "validation" assert case.affected_element == "query_param" assert case.element_type == "string" assert case.generation_strategy == {"name": "invalid_value", "value": "123"} assert case.type == "Negative" assert case.description == "Test invalid query parameter" assert case.environment == { "host": "http://example.com", "org_id": "org123", "prj_id": "prj456", "auth": {"public_key": "pub_key", "private_key": "priv_key"}, } assert case.request == {"query_params": {"param": "123"}} assert case.expected_status == 400 assert case.confirmed == False def test_case_manager(tmp_path): db_path = tmp_path / "test.db" manager = CaseManager(str(db_path)) case = Case( operation_id="test_operation", method="GET", path="/api/test", category="validation", affected_element="query_param", element_type="string", generation_strategy={"name": "invalid_value", "value": "123"}, type="Negative", description="Test invalid query parameter", environment={}, request={"query_params": {"param": "123"}}, expected_status=400, ) # Test adding a case manager.add_or_update_case(case) retrieved_case = manager.get_case(case.id) assert retrieved_case == case # Test updating a case updated_case = Case( operation_id="test_operation", method="POST", path="/api/test", category="validation", affected_element="query_param", element_type="string", generation_strategy={"name": "invalid_value", "value": "123"}, type="Negative", description="Updated description", environment={}, request={"query_params": {"param": "123"}}, expected_status=400, ) manager.add_or_update_case(updated_case) retrieved_updated_case = manager.get_case(case.id) assert retrieved_updated_case == updated_case # Test deleting a case manager.delete_case(case.id) assert manager.get_case(case.id) is None manager.close() if __name__ == "__main__": pytest.main()