|
# retoor <retoor@molodetz.nl>
|
|
|
|
from devplacepy.services.tunnel.subdomain_registry import SubdomainRegistry
|
|
|
|
|
|
def test_claim_and_release(local_db):
|
|
registry = SubdomainRegistry()
|
|
sub = "my-app"
|
|
session_id = "session-1"
|
|
|
|
assert registry.claim(sub, session_id) is True
|
|
assert registry.claim(sub, "session-2") is False, "Duplicate claim must fail"
|
|
|
|
assert registry.resolve(sub) == session_id
|
|
assert registry.resolve("unknown") is None
|
|
|
|
released = registry.release(session_id)
|
|
assert released == sub
|
|
assert registry.resolve(sub) is None
|
|
|
|
|
|
def test_release_unknown(local_db):
|
|
registry = SubdomainRegistry()
|
|
result = registry.release("nonexistent-session")
|
|
assert result is None
|
|
|
|
|
|
def test_claim_twice_different_session(local_db):
|
|
registry = SubdomainRegistry()
|
|
sub = "shared-app"
|
|
|
|
assert registry.claim(sub, "session-a") is True
|
|
assert registry.claim(sub, "session-b") is False
|
|
|
|
registry.release("session-a")
|
|
assert registry.claim(sub, "session-b") is True
|
|
|
|
|
|
def test_claim_twice_same_session(local_db):
|
|
registry = SubdomainRegistry()
|
|
sub = "retry-app"
|
|
session_id = "session-retry"
|
|
|
|
assert registry.claim(sub, session_id) is True
|
|
result = registry.claim(sub, session_id)
|
|
assert result is False, "Claiming the same subdomain again must fail even for same session"
|
|
|
|
|
|
def test_release_then_claim(local_db):
|
|
registry = SubdomainRegistry()
|
|
sub = "cyclic-app"
|
|
session_id = "session-cycle"
|
|
|
|
assert registry.claim(sub, session_id) is True
|
|
registry.release(session_id)
|
|
|
|
assert registry.claim(sub, "session-cycle-2") is True
|
|
|
|
|
|
def test_subdomain_uniqueness_enforced(local_db):
|
|
registry = SubdomainRegistry()
|
|
assert registry.claim("alpha", "s1") is True
|
|
assert registry.claim("beta", "s2") is True
|
|
assert registry.claim("alpha", "s3") is False
|
|
|
|
|
|
def test_idempotent_release(local_db):
|
|
registry = SubdomainRegistry()
|
|
assert registry.claim("z-app", "sz1") is True
|
|
assert registry.release("sz1") == "z-app"
|
|
assert registry.release("sz1") is None
|
|
assert registry.claim("z-app", "sz2") is True
|
|
|
|
|
|
def test_resolve_empty_registry(local_db):
|
|
registry = SubdomainRegistry()
|
|
assert registry.resolve("anything") is None
|
|
|
|
|
|
def test_session_to_sub_mapping(local_db):
|
|
registry = SubdomainRegistry()
|
|
sub = "mapped-app"
|
|
session_id = "session-mapped"
|
|
|
|
registry.claim(sub, session_id)
|
|
assert registry.resolve(sub) == session_id
|
|
registry.release(session_id)
|
|
assert registry.resolve(sub) is None
|