From 22e0160c298edd80d24da3d63f5e93781ab8bd71 Mon Sep 17 00:00:00 2001 From: Victor Elias Date: Wed, 17 Jan 2024 17:51:46 -0300 Subject: [PATCH] api: Fix tests (they were broken before!) --- packages/api/src/util.ts | 4 ++++ packages/api/src/webhooks/cannon.test.ts | 7 ++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/packages/api/src/util.ts b/packages/api/src/util.ts index 69ffacf8b0..666b0b5c54 100644 --- a/packages/api/src/util.ts +++ b/packages/api/src/util.ts @@ -62,6 +62,10 @@ export class Semaphore { } release() { + if (this.current <= 0) { + throw new Error("releasing semaphore that is not acquired"); + } + if (this.waitQueue.length === 0) { this.current--; } else { diff --git a/packages/api/src/webhooks/cannon.test.ts b/packages/api/src/webhooks/cannon.test.ts index 629b1345f5..e599bef126 100644 --- a/packages/api/src/webhooks/cannon.test.ts +++ b/packages/api/src/webhooks/cannon.test.ts @@ -286,7 +286,8 @@ describe("webhook cannon", () => { expect(callCount).toBe(1); expect(receivedEvent).toBe("stream.started"); - sem = semaphore(); + // at this point the semaphore is re-acquired cause we just waited (acquired) above + await server.queue.publishWebhook("events.stream.idle", { type: "webhook_event", id: "webhook_test_42", @@ -301,7 +302,6 @@ describe("webhook cannon", () => { expect(receivedEvent).toBe("stream.idle"); // does not receive some random event - sem = semaphore(); await server.queue.publishWebhook("events.stream.unknown" as any, { type: "webhook_event", id: "webhook_test_93", @@ -311,7 +311,8 @@ describe("webhook cannon", () => { userId: nonAdminUser.id, }); - await sem.wait(1000); + const err = await sem.wait(1000).catch((err) => err); + expect(err?.message).toBe("timeout"); expect(callCount).toBe(2); });