Move Go reference implementation to refimpl/go-lang/ and add new Python reference implementation in refimpl/python/. Update build.sh with renamed draft and simplified tool paths. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
41 lines
920 B
Python
41 lines
920 B
Python
"""Tests for JTI replay cache."""
|
|
|
|
import time
|
|
|
|
import pytest
|
|
|
|
from ect import new_jti_cache
|
|
|
|
|
|
def test_jti_cache_seen_and_add():
|
|
cache = new_jti_cache(10, 60)
|
|
assert cache.seen("jti-1") is False
|
|
cache.add("jti-1")
|
|
assert cache.seen("jti-1") is True
|
|
assert cache.seen("jti-2") is False
|
|
cache.add("jti-2")
|
|
assert cache.seen("jti-2") is True
|
|
|
|
|
|
def test_jti_cache_expiry():
|
|
cache = new_jti_cache(10, 1) # 1 second TTL
|
|
cache.add("jti-1")
|
|
assert cache.seen("jti-1") is True
|
|
time.sleep(1.1)
|
|
assert cache.seen("jti-1") is False
|
|
|
|
|
|
def test_jti_cache_max_size_eviction():
|
|
cache = new_jti_cache(2, 60)
|
|
cache.add("jti-1")
|
|
cache.add("jti-2")
|
|
cache.add("jti-3")
|
|
assert cache.seen("jti-3") is True
|
|
|
|
|
|
def test_jti_cache_add_when_already_present():
|
|
cache = new_jti_cache(2, 60)
|
|
cache.add("jti-1")
|
|
cache.add("jti-1")
|
|
assert cache.seen("jti-1") is True
|