@@ -13,7 +13,11 @@ import {
13
13
RelayToClientMessage ,
14
14
SubscriptionId ,
15
15
} from "../../core/protocol.d.ts" ;
16
- import { ConnectionClosed , Relay } from "../../core/relays.ts?nips=1" ;
16
+ import {
17
+ ConnectionClosed ,
18
+ EventRejected ,
19
+ Relay ,
20
+ } from "../../core/relays.ts?nips=1" ;
17
21
import { SubscriptionClosed } from "../../nips/01/relays.ts" ;
18
22
19
23
describe ( "NIP-01/Relay" , ( ) => {
@@ -42,11 +46,8 @@ describe("NIP-01/Relay", () => {
42
46
it ( "should receive text notes" , async ( ) => {
43
47
const reader = sub_1 . getReader ( ) ;
44
48
const read = reader . read ( ) ;
45
- const ws = MockWebSocket . instances [ 0 ] ;
46
- ws . dispatchEvent (
47
- new MessageEvent ( "message" , {
48
- data : JSON . stringify ( [ "EVENT" , "test-1" , { kind : 1 } ] ) ,
49
- } ) ,
49
+ MockWebSocket . instances [ 0 ] . remote . send (
50
+ JSON . stringify ( [ "EVENT" , "test-1" , { kind : 1 } ] ) ,
50
51
) ;
51
52
const { value, done } = await read ;
52
53
assert ( ! done ) ;
@@ -63,16 +64,8 @@ describe("NIP-01/Relay", () => {
63
64
const reader_0 = sub_0 . getReader ( ) ;
64
65
const reader_1 = sub_1 . getReader ( ) ;
65
66
const ws = MockWebSocket . instances [ 0 ] ;
66
- ws . dispatchEvent (
67
- new MessageEvent ( "message" , {
68
- data : JSON . stringify ( [ "EVENT" , "test-0" , { kind : 0 } ] ) ,
69
- } ) ,
70
- ) ;
71
- ws . dispatchEvent (
72
- new MessageEvent ( "message" , {
73
- data : JSON . stringify ( [ "EVENT" , "test-1" , { kind : 1 } ] ) ,
74
- } ) ,
75
- ) ;
67
+ ws . remote . send ( JSON . stringify ( [ "EVENT" , "test-0" , { kind : 0 } ] ) ) ;
68
+ ws . remote . send ( JSON . stringify ( [ "EVENT" , "test-1" , { kind : 1 } ] ) ) ;
76
69
const [ { value : value_0 } , { value : value_1 } ] = await Promise . all ( [
77
70
reader_0 . read ( ) ,
78
71
reader_1 . read ( ) ,
@@ -86,7 +79,6 @@ describe("NIP-01/Relay", () => {
86
79
} ) ;
87
80
it ( "should publish an event and recieve an accepting OK message" , async ( ) => {
88
81
const eid = "test-true" as EventId ;
89
- const ok = [ "OK" , eid , true , "" ] satisfies RelayToClientMessage < "OK" > ;
90
82
const ws = MockWebSocket . instances [ 0 ] ;
91
83
const arrived = new Promise < true > ( ( resolve ) => {
92
84
ws . remote . addEventListener (
@@ -96,15 +88,18 @@ describe("NIP-01/Relay", () => {
96
88
const [ , event ] = JSON . parse ( ev . data ) as ClientToRelayMessage < "EVENT" > ;
97
89
if ( event . id === eid ) {
98
90
assertEquals ( event . kind , 1 ) ;
91
+ ws . remote . send (
92
+ JSON . stringify (
93
+ [ "OK" , eid , true , "" ] satisfies RelayToClientMessage < "OK" > ,
94
+ ) ,
95
+ ) ;
99
96
resolve ( true ) ;
100
- ws . remote . send ( JSON . stringify ( ok ) ) ;
101
97
}
102
98
} ,
103
99
) ;
104
100
} ) ;
105
- const event = { id : eid , kind : 1 } ;
106
101
// deno-lint-ignore no-explicit-any
107
- await relay . publish ( event as any ) ;
102
+ await relay . publish ( { id : eid , kind : 1 } as any ) ;
108
103
assert ( await arrived ) ;
109
104
} ) ;
110
105
it ( "should receieve a rejecting OK message and throw EventRejected" , async ( ) => {
@@ -127,12 +122,14 @@ describe("NIP-01/Relay", () => {
127
122
) ;
128
123
} ) ;
129
124
const event = { id : eid , kind : 1 } ;
130
- // deno-lint-ignore no-explicit-any
131
- const result : unknown = await relay . publish ( event as any ) . catch ( ( e ) => e ) ;
132
- // FIXME: This should be an EventRejected instance.
133
- assertInstanceOf ( result , Error ) ;
134
- assertEquals ( result . message , "error: test" ) ;
135
- assertEquals ( result . cause , event ) ;
125
+ try {
126
+ // deno-lint-ignore no-explicit-any
127
+ await relay . publish ( event as any ) . catch ( ( e ) => e ) ;
128
+ } catch ( err ) {
129
+ assertInstanceOf ( err , EventRejected ) ;
130
+ assertEquals ( err . message , "error: test" ) ;
131
+ assertEquals ( err . cause , event ) ;
132
+ }
136
133
await arrived ;
137
134
} ) ;
138
135
it ( "should throw ConnectionClosed when connection is closed before recieving an OK message" , async ( ) => {
0 commit comments