@@ -69,10 +69,43 @@ describe("InMemoryTransport", () => {
6969 } ) ;
7070
7171 test ( "should throw error when sending after close" , async ( ) => {
72- await clientTransport . close ( ) ;
72+ const [ client , server ] = InMemoryTransport . createLinkedPair ( ) ;
73+ let clientError : Error | undefined ;
74+ let serverError : Error | undefined ;
75+
76+ client . onerror = ( err ) => {
77+ clientError = err ;
78+ } ;
79+
80+ server . onerror = ( err ) => {
81+ serverError = err ;
82+ } ;
83+
84+ await client . close ( ) ;
85+
86+ // Attempt to send message from client
7387 await expect (
74- clientTransport . send ( { jsonrpc : "2.0" , method : "test" , id : 1 } ) ,
88+ client . send ( {
89+ jsonrpc : "2.0" ,
90+ method : "test" ,
91+ id : 1 ,
92+ } ) ,
7593 ) . rejects . toThrow ( "Not connected" ) ;
94+
95+ // Attempt to send message from server
96+ await expect (
97+ server . send ( {
98+ jsonrpc : "2.0" ,
99+ method : "test" ,
100+ id : 2 ,
101+ } ) ,
102+ ) . rejects . toThrow ( "Not connected" ) ;
103+
104+ // Verify that both sides received errors
105+ expect ( clientError ) . toBeDefined ( ) ;
106+ expect ( clientError ?. message ) . toBe ( "Not connected" ) ;
107+ expect ( serverError ) . toBeDefined ( ) ;
108+ expect ( serverError ?. message ) . toBe ( "Not connected" ) ;
76109 } ) ;
77110
78111 test ( "should queue messages sent before start" , async ( ) => {
@@ -91,4 +124,65 @@ describe("InMemoryTransport", () => {
91124 await serverTransport . start ( ) ;
92125 expect ( receivedMessage ) . toEqual ( message ) ;
93126 } ) ;
127+
128+ describe ( "error handling" , ( ) => {
129+ test ( "should trigger onerror when sending without connection" , async ( ) => {
130+ const transport = new InMemoryTransport ( ) ;
131+ let error : Error | undefined ;
132+
133+ transport . onerror = ( err ) => {
134+ error = err ;
135+ } ;
136+
137+ await expect (
138+ transport . send ( {
139+ jsonrpc : "2.0" ,
140+ method : "test" ,
141+ id : 1 ,
142+ } ) ,
143+ ) . rejects . toThrow ( "Not connected" ) ;
144+
145+ expect ( error ) . toBeDefined ( ) ;
146+ expect ( error ?. message ) . toBe ( "Not connected" ) ;
147+ } ) ;
148+
149+ test ( "should trigger onerror when sending after close" , async ( ) => {
150+ const [ client , server ] = InMemoryTransport . createLinkedPair ( ) ;
151+ let clientError : Error | undefined ;
152+ let serverError : Error | undefined ;
153+
154+ client . onerror = ( err ) => {
155+ clientError = err ;
156+ } ;
157+
158+ server . onerror = ( err ) => {
159+ serverError = err ;
160+ } ;
161+
162+ await client . close ( ) ;
163+
164+ // Attempt to send message from client
165+ await expect (
166+ client . send ( {
167+ jsonrpc : "2.0" ,
168+ method : "test" ,
169+ id : 1 ,
170+ } ) ,
171+ ) . rejects . toThrow ( "Not connected" ) ;
172+
173+ // Attempt to send message from server
174+ await expect (
175+ server . send ( {
176+ jsonrpc : "2.0" ,
177+ method : "test" ,
178+ id : 2 ,
179+ } ) ,
180+ ) . rejects . toThrow ( "Not connected" ) ;
181+
182+ // Verify that both sides received errors
183+ expect ( clientError ?. message ) . toBe ( "Not connected" ) ;
184+ expect ( serverError ) . toBeDefined ( ) ;
185+ expect ( serverError ?. message ) . toBe ( "Not connected" ) ;
186+ } ) ;
187+ } ) ;
94188} ) ;
0 commit comments