diff --git a/extensions/voice-call/src/media-stream.test.ts b/extensions/voice-call/src/media-stream.test.ts index 18eaf5113c4..1a6a194a255 100644 --- a/extensions/voice-call/src/media-stream.test.ts +++ b/extensions/voice-call/src/media-stream.test.ts @@ -40,12 +40,15 @@ const createDeferred = (): { resolve: () => void; reject: (error: Error) => void; } => { - let resolve!: () => void; - let reject!: (error: Error) => void; + let resolve: (() => void) | undefined; + let reject: ((error: Error) => void) | undefined; const promise = new Promise((resolvePromise, rejectPromise) => { resolve = resolvePromise; reject = rejectPromise; }); + if (!resolve || !reject) { + throw new Error("Expected deferred callbacks to be initialized"); + } return { promise, resolve, reject }; }; @@ -80,10 +83,13 @@ describe("MediaStreamHandler TTS queue", () => { const started: number[] = []; const finished: number[] = []; - let resolveFirst!: () => void; + let resolveFirst: (() => void) | undefined; const firstGate = new Promise((resolve) => { resolveFirst = resolve; }); + if (!resolveFirst) { + throw new Error("Expected first TTS gate resolver to be initialized"); + } const first = handler.queueTts("stream-1", async () => { started.push(1); diff --git a/extensions/voice-call/src/webhook.test.ts b/extensions/voice-call/src/webhook.test.ts index 83254d182fd..6792d366829 100644 --- a/extensions/voice-call/src/webhook.test.ts +++ b/extensions/voice-call/src/webhook.test.ts @@ -1081,14 +1081,19 @@ describe("VoiceCallWebhookServer pre-auth webhook guards", () => { const server = new VoiceCallWebhookServer(config, manager, twilioProvider); let enteredReads = 0; - let releaseReads!: () => void; - let unblockReadBodies!: () => void; + let releaseReads: (() => void) | undefined; + let unblockReadBodies: (() => void) | undefined; const enteredEightReads = new Promise((resolve) => { releaseReads = resolve; }); const unblockReads = new Promise((resolve) => { unblockReadBodies = resolve; }); + if (!releaseReads || !unblockReadBodies) { + throw new Error("Expected webhook read gates to be initialized"); + } + const releaseEnteredReads = releaseReads; + const unblockStartedReads = unblockReadBodies; const readBodySpy = vi.spyOn( server as unknown as { readBody: (req: unknown, maxBytes: number, timeoutMs?: number) => Promise; @@ -1098,7 +1103,7 @@ describe("VoiceCallWebhookServer pre-auth webhook guards", () => { readBodySpy.mockImplementation(async () => { enteredReads += 1; if (enteredReads === 8) { - releaseReads(); + releaseEnteredReads(); } if (enteredReads <= 8) { await unblockReads; @@ -1118,12 +1123,12 @@ describe("VoiceCallWebhookServer pre-auth webhook guards", () => { expect(rejected.status).toBe(429); expect(await rejected.text()).toBe("Too Many Requests"); - unblockReadBodies(); + unblockStartedReads(); const settled = await Promise.all(inFlightRequests); expect(settled.map((response) => response.status)).toEqual(Array(8).fill(200)); } finally { - unblockReadBodies(); + unblockStartedReads(); readBodySpy.mockRestore(); await server.stop(); } @@ -1148,14 +1153,19 @@ describe("VoiceCallWebhookServer pre-auth webhook guards", () => { ).runWebhookPipeline.bind(server); let enteredReads = 0; - let releaseReads!: () => void; - let unblockReadBodies!: () => void; + let releaseReads: (() => void) | undefined; + let unblockReadBodies: (() => void) | undefined; const enteredEightReads = new Promise((resolve) => { releaseReads = resolve; }); const unblockReads = new Promise((resolve) => { unblockReadBodies = resolve; }); + if (!releaseReads || !unblockReadBodies) { + throw new Error("Expected webhook read gates to be initialized"); + } + const releaseEnteredReads = releaseReads; + const unblockStartedReads = unblockReadBodies; const readBodySpy = vi.spyOn( server as unknown as { readBody: (req: unknown, maxBytes: number, timeoutMs?: number) => Promise; @@ -1165,7 +1175,7 @@ describe("VoiceCallWebhookServer pre-auth webhook guards", () => { readBodySpy.mockImplementation(async () => { enteredReads += 1; if (enteredReads === 8) { - releaseReads(); + releaseEnteredReads(); } await unblockReads; return "CallSid=CA123&SpeechResult=hello"; @@ -1193,12 +1203,12 @@ describe("VoiceCallWebhookServer pre-auth webhook guards", () => { expect(rejected.body).toBe("Too Many Requests"); expect(readBodySpy).toHaveBeenCalledTimes(8); - unblockReadBodies(); + unblockStartedReads(); const settled = await Promise.all(inFlightRequests); expect(settled.map((response) => response.statusCode)).toEqual(Array(8).fill(200)); } finally { - unblockReadBodies(); + unblockStartedReads(); readBodySpy.mockRestore(); } });