From b5d533d69e28c49a1a56ad83f9380d7f63398379 Mon Sep 17 00:00:00 2001 From: Nathan Flurry Date: Mon, 16 Sep 2024 18:41:23 -0700 Subject: [PATCH] chore(lobbies): fix tests with stricter validation --- modules/lobbies/scripts/list.ts | 8 ++++++-- modules/lobbies/tests/e2e.ts | 2 +- modules/tokens/scripts/create.ts | 4 ++-- modules/tokens/scripts/extend.ts | 4 ++-- modules/tokens/scripts/revoke.ts | 2 +- modules/tokens/tests/validate.ts | 5 +++-- modules/tokens/utils/types.ts | 15 +++++++++++++-- 7 files changed, 28 insertions(+), 12 deletions(-) diff --git a/modules/lobbies/scripts/list.ts b/modules/lobbies/scripts/list.ts index a10d6c2c..8c9b5e07 100644 --- a/modules/lobbies/scripts/list.ts +++ b/modules/lobbies/scripts/list.ts @@ -19,6 +19,10 @@ interface LobbyListEntry { id: string; version: string; tags: Record; + createdAt: string; + players: number; + maxPlayers: number; + maxPlayersDirect: number; } export async function run( @@ -46,11 +50,11 @@ export async function run( id: lobby.id, version: lobby.version, tags: lobby.tags, - createdAt: lobby.createdAt, + createdAt: new Date(lobby.createdAt).toISOString(), players: lobby.players, maxPlayers: lobby.maxPlayers, maxPlayersDirect: lobby.maxPlayersDirect, - })); + } satisfies LobbyListEntry)); return { lobbies: lobbyList }; } diff --git a/modules/lobbies/tests/e2e.ts b/modules/lobbies/tests/e2e.ts index d4d48e76..2b4076e3 100644 --- a/modules/lobbies/tests/e2e.ts +++ b/modules/lobbies/tests/e2e.ts @@ -82,7 +82,7 @@ test("lobby tags", async (ctx: TestContext) => { { version: VERSION, region: REGION, - tags: { gameMode: "a", region: "atl" }, + tags: { gameMode: "a" }, players: [{}], maxPlayers: 8, maxPlayersDirect: 8, diff --git a/modules/tokens/scripts/create.ts b/modules/tokens/scripts/create.ts index 6e5c2779..95075b25 100644 --- a/modules/tokens/scripts/create.ts +++ b/modules/tokens/scripts/create.ts @@ -1,5 +1,5 @@ import { ScriptContext, Database, Query } from "../module.gen.ts"; -import { TokenWithSecret, tokenFromRow } from "../utils/types.ts"; +import { TokenWithSecret, tokenFromRow, tokenWithSecretFromRow } from "../utils/types.ts"; export interface Request { type: string; @@ -28,7 +28,7 @@ export async function run( .returning(); return { - token: tokenFromRow(rows[0]!), + token: tokenWithSecretFromRow(rows[0]!), }; } diff --git a/modules/tokens/scripts/extend.ts b/modules/tokens/scripts/extend.ts index 14efcd2f..f7687a34 100644 --- a/modules/tokens/scripts/extend.ts +++ b/modules/tokens/scripts/extend.ts @@ -1,5 +1,5 @@ import { ScriptContext, Query, Database } from "../module.gen.ts"; -import { tokenFromRow, TokenWithSecret } from "../utils/types.ts"; +import { tokenFromRow, TokenWithSecret, tokenWithSecretFromRow } from "../utils/types.ts"; export interface Request { token: string; @@ -27,6 +27,6 @@ export async function run( // Return the updated token return { - token: tokenFromRow(rows[0]!), + token: tokenWithSecretFromRow(rows[0]!), }; } diff --git a/modules/tokens/scripts/revoke.ts b/modules/tokens/scripts/revoke.ts index 36e68727..90da5308 100644 --- a/modules/tokens/scripts/revoke.ts +++ b/modules/tokens/scripts/revoke.ts @@ -5,7 +5,7 @@ export interface Request { } export interface Response { - updates: { [key: string]: TokenUpdate }; + updates: Record; } export enum TokenUpdate { diff --git a/modules/tokens/tests/validate.ts b/modules/tokens/tests/validate.ts index cbcecbe6..0720061c 100644 --- a/modules/tokens/tests/validate.ts +++ b/modules/tokens/tests/validate.ts @@ -3,7 +3,8 @@ import { assertEquals, assertGreater, assertRejects, -} from "https://deno.land/std@0.217.0/assert/mod.ts"; +} from "jsr:@std/assert"; +import { omit } from "jsr:@std/collections"; test( "validate token not found", @@ -95,7 +96,7 @@ test( ...validateResAfterWait.token, expireAt: null, }, { - ...token, + ...omit(token, ["token"]), expireAt: null, }); }, diff --git a/modules/tokens/utils/types.ts b/modules/tokens/utils/types.ts index 49e025a4..f2785cf8 100644 --- a/modules/tokens/utils/types.ts +++ b/modules/tokens/utils/types.ts @@ -15,11 +15,22 @@ export interface TokenWithSecret extends Token { export function tokenFromRow( row: typeof Database.tokens.$inferSelect -): TokenWithSecret { +): Token { return { - ...row, + id: row.id, + type: row.type, + meta: row.meta, createdAt: row.createdAt.toISOString(), expireAt: row.expireAt?.toISOString() ?? null, revokedAt: row.revokedAt?.toISOString() ?? null, }; } + +export function tokenWithSecretFromRow( + row: typeof Database.tokens.$inferSelect +): TokenWithSecret { + return { + ...tokenFromRow(row), + token: row.token, + }; +}