# retoor 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