feat: add UDP NAT rendezvous

This commit is contained in:
Alexander Sellite 2026-08-10 19:49:47 -04:00
parent 6a7c7a676d
commit 804e19c51a
7 changed files with 370 additions and 27 deletions

View file

@ -64,6 +64,14 @@ class DiscoveryHTTPTests(unittest.TestCase):
assert isinstance(room, dict)
room_id = room["room_id"]
token = created["lease_token"]
traversal = created["traversal"]
assert isinstance(traversal, dict)
self.server.registry.verify_endpoint(
str(room_id),
str(traversal["verification_token"]),
"127.0.0.1",
7777,
)
self.assertIsInstance(room_id, str)
self.assertIsInstance(token, str)
@ -100,6 +108,14 @@ class DiscoveryHTTPTests(unittest.TestCase):
assert created is not None
room = created["room"]
assert isinstance(room, dict)
traversal = created["traversal"]
assert isinstance(traversal, dict)
self.server.registry.verify_endpoint(
str(room["room_id"]),
str(traversal["verification_token"]),
"127.0.0.1",
7777,
)
self.assertEqual(room["current_players"], 0)
self.request(
"DELETE",
@ -107,6 +123,41 @@ class DiscoveryHTTPTests(unittest.TestCase):
token=str(created["lease_token"]),
)
def test_join_attempt_reports_observed_endpoint_to_host(self) -> None:
status, created = self.request("POST", "/v1/rooms", VALID_ROOM)
self.assertEqual(status, 201)
assert created is not None
room = created["room"]
traversal = created["traversal"]
assert isinstance(room, dict)
assert isinstance(traversal, dict)
room_id = str(room["room_id"])
self.server.registry.verify_endpoint(
room_id,
str(traversal["verification_token"]),
"127.0.0.1",
7777,
)
status, join = self.request(
"POST", f"/v1/rooms/{room_id}/join-attempts"
)
self.assertEqual(status, 201)
assert join is not None
self.server.registry.register_join_endpoint(
str(join["join_token"]), "198.51.100.7", 49152
)
status, pending = self.request(
"GET",
f"/v1/rooms/{room_id}/join-attempts",
token=str(created["lease_token"]),
)
self.assertEqual(status, 200)
assert pending is not None
self.assertEqual(
pending["endpoints"],
[{"address": "198.51.100.7", "port": 49152}],
)
def test_health_endpoint(self) -> None:
status, body = self.request("GET", "/health")
self.assertEqual(status, 200)