diff --git a/setup_fingerprint_logging/tests/test_core.py b/setup_fingerprint_logging/tests/test_core.py new file mode 100644 index 0000000..a70bc81 --- /dev/null +++ b/setup_fingerprint_logging/tests/test_core.py @@ -0,0 +1,39 @@ +import pytest +from setup_fingerprint_logging import core + + +def test_generate_setup_fingerprint_deterministic(): + params = { + 'policy_hash': 'abc123', + 'runner_image': 'ubuntu22', + 'kernel': '6.8.12', + 'python_version': '3.11.4', + 'gate_version': 'v2.3.1' + } + result1 = core.generate_setup_fingerprint(**params) + result2 = core.generate_setup_fingerprint(**params) + assert isinstance(result1, str) + assert result1 == result2, "Fingerprint should be deterministic for identical input" + assert len(result1) >= 32, "Fingerprint should have expected hash length" + + +def test_generate_setup_fingerprint_unique_for_different_inputs(): + base_params = { + 'policy_hash': 'abc123', + 'runner_image': 'ubuntu22', + 'kernel': '6.8.12', + 'python_version': '3.11.4', + 'gate_version': 'v2.3.1' + } + modified_params = base_params.copy() + modified_params['policy_hash'] = 'xyz789' + result_base = core.generate_setup_fingerprint(**base_params) + result_modified = core.generate_setup_fingerprint(**modified_params) + assert result_base != result_modified, "Different inputs should yield different fingerprints" + + +def test_generate_setup_fingerprint_input_validation(): + with pytest.raises((TypeError, ValueError)): + core.generate_setup_fingerprint(None, 'runner', 'kernel', 'python', 'gate') + with pytest.raises((TypeError, ValueError)): + core.generate_setup_fingerprint('policy', '', 'kernel', 'python', 'gate')