import os
from pathlib import Path
from domin8.crypto import create_signing_key, get_signing_key, generate_signature, verify_signature, sign_approval, verify_approval_signature
def test_create_and_get_signing_key(tmp_path, monkeypatch):
# Use HOME to a temp directory to avoid touching real keys
monkeypatch.setenv("HOME", str(tmp_path))
approver = "alice"
key = create_signing_key(approver)
assert key is not None
fetched = get_signing_key(approver)
assert fetched == key
def test_signature_generation_and_verification(tmp_path, monkeypatch):
monkeypatch.setenv("HOME", str(tmp_path))
approver = "alice"
key = create_signing_key(approver)
data = {"approver_id": approver, "approved_at": "2026-01-01T00:00:00+00:00", "decision": "approved"}
sig = generate_signature(data, key)
assert isinstance(sig, str) and len(sig) == 64
assert verify_signature(data, sig, key)
def test_sign_and_verify_approval(tmp_path, monkeypatch):
monkeypatch.setenv("HOME", str(tmp_path))
approver = "bob"
create_signing_key(approver)
approval = {"approver_id": approver, "approved_at": "2026-01-02T00:00:00+00:00", "decision": "approved"}
signed = sign_approval(approval, approver)
assert "signature" in signed
assert verify_approval_signature(signed)