From 640e533dca7e5c9bea96f073942d72db070baa92 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Sat, 1 Feb 2025 11:59:38 -0600 Subject: [PATCH] Add InternalRelay test --- src/controllers/nostr/relay.ts | 2 +- src/storages/InternalRelay.test.ts | 23 +++++++++++++++++++++++ src/storages/InternalRelay.ts | 2 +- 3 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 src/storages/InternalRelay.test.ts diff --git a/src/controllers/nostr/relay.ts b/src/controllers/nostr/relay.ts index c3bb2c8c..ac169adb 100644 --- a/src/controllers/nostr/relay.ts +++ b/src/controllers/nostr/relay.ts @@ -149,7 +149,7 @@ function connectStream(socket: WebSocket, ip: string | undefined) { send(['EVENT', subId, msg[2]]); } } - } catch (_e) { + } catch { controllers.delete(subId); } } diff --git a/src/storages/InternalRelay.test.ts b/src/storages/InternalRelay.test.ts new file mode 100644 index 00000000..c97dcd39 --- /dev/null +++ b/src/storages/InternalRelay.test.ts @@ -0,0 +1,23 @@ +import { assertEquals } from '@std/assert'; + +import { eventFixture } from '@/test.ts'; + +import { InternalRelay } from './InternalRelay.ts'; + +Deno.test('InternalRelay', async () => { + const relay = new InternalRelay(); + const event1 = await eventFixture('event-1'); + + const promise = new Promise((resolve) => setTimeout(() => resolve(relay.event(event1)), 0)); + + for await (const msg of relay.req([{}])) { + if (msg[0] === 'EVENT') { + assertEquals(relay.subs.size, 1); + assertEquals(msg[2], event1); + break; + } + } + + await promise; + assertEquals(relay.subs.size, 0); // cleanup +}); diff --git a/src/storages/InternalRelay.ts b/src/storages/InternalRelay.ts index 4400b562..4f38c863 100644 --- a/src/storages/InternalRelay.ts +++ b/src/storages/InternalRelay.ts @@ -24,7 +24,7 @@ interface InternalRelayOpts { * The pipeline should push events to it, then anything in the application can subscribe to it. */ export class InternalRelay implements NRelay { - private subs = new Map }>(); + readonly subs = new Map }>(); constructor(private opts: InternalRelayOpts = {}) {}