Normalize session code input in join and lookup flows
All checks were successful
CI / test-and-quality (push) Successful in 1m42s
CI / test-and-quality (pull_request) Successful in 1m42s

This commit is contained in:
2026-02-28 20:22:58 +00:00
parent 6fd57d1714
commit 046212d29a
2 changed files with 52 additions and 11 deletions

View File

@@ -60,6 +60,28 @@ class LobbyFlowTests(TestCase):
self.assertTrue(body["player"]["session_token"])
self.assertTrue(Player.objects.filter(session=session, nickname="Luna").exists())
def test_player_can_join_with_trimmed_code(self):
session = GameSession.objects.create(host=self.host, code="ABCD23")
response = self.client.post(
reverse("lobby:join_session"),
data={"code": " abcd23 ", "nickname": "Luna"},
content_type="application/json",
)
self.assertEqual(response.status_code, 201)
self.assertTrue(Player.objects.filter(session=session, nickname="Luna").exists())
def test_join_rejects_code_empty_after_trim(self):
response = self.client.post(
reverse("lobby:join_session"),
data={"code": " ", "nickname": "Luna"},
content_type="application/json",
)
self.assertEqual(response.status_code, 400)
self.assertEqual(response.json()["error"], "Session code is required")
def test_join_rejects_duplicate_nickname_case_insensitive(self):
session = GameSession.objects.create(host=self.host, code="QWER12")
Player.objects.create(session=session, nickname="Luna")
@@ -131,6 +153,21 @@ class StartRoundTests(TestCase):
round_config = RoundConfig.objects.get(session=self.session, number=1)
self.assertEqual(round_config.category, self.category)
def test_host_start_round_uses_normalized_session_code_from_path(self):
self.client.login(username="host", password="secret123")
response = self.client.post(
reverse("lobby:start_round", kwargs={"code": " abcd23 "}),
data={"category_slug": self.category.slug},
content_type="application/json",
)
self.assertEqual(response.status_code, 201)
self.session.refresh_from_db()
self.assertEqual(self.session.status, GameSession.Status.LIE)
round_config = RoundConfig.objects.get(session=self.session, number=1)
self.assertEqual(round_config.category, self.category)
def test_start_round_requires_host(self):
self.client.login(username="other", password="secret123")