Spaces:
Sleeping
Sleeping
File size: 1,135 Bytes
ce8f04a | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | """Generator SSE tickets must survive reconnect (not one-shot burn)."""
from __future__ import annotations
def test_validate_ticket_reusable_until_ttl():
from core.ticket_store import mint_ticket, validate_ticket, consume_ticket
tid = mint_ticket("user_abc", "proj-1", ttl_seconds=60)
u1 = validate_ticket(tid, "proj-1", consume=False)
u2 = validate_ticket(tid, "proj-1", consume=False)
assert u1 == "user_abc"
assert u2 == "user_abc"
# still consumable
u3 = consume_ticket(tid, "proj-1")
assert u3 == "user_abc"
# gone after consume
try:
validate_ticket(tid, "proj-1", consume=False)
assert False, "expected invalid after consume"
except ValueError as e:
assert "invalid" in str(e) or "expired" in str(e)
def test_validate_ticket_project_mismatch():
from core.ticket_store import mint_ticket, validate_ticket
tid = mint_ticket("user_x", "proj-a", ttl_seconds=30)
try:
validate_ticket(tid, "proj-b", consume=False)
assert False, "expected project_mismatch"
except ValueError as e:
assert str(e) == "project_mismatch"
|