1- import { MessageForResultSender } from './message-sender.js' ;
21import { ChildProcess } from 'node:child_process' ;
32import { EventEmitter } from 'node:events' ;
43import { Readable } from 'stream' ;
54import { describe , expect , it } from 'vitest' ;
65import { returnMessageCmd } from './plugin-process.js' ;
76import { clearInterval , clearTimeout } from 'node:timers' ;
7+ import { sendIpcMessageForResult } from './message-sender' ;
8+ import { PluginMessage } from './plugin-message.js' ;
89
910describe ( 'Message sender tests' , async ( ) => {
1011 const mockChildProcess = ( ) => {
@@ -18,11 +19,12 @@ describe('Message sender tests', async () => {
1819
1920 it ( 'Is able to send a message and await a result' , async ( ) => {
2021 const cProcess = mockChildProcess ( ) ;
22+ const message = PluginMessage . create ( 'message1' , null )
2123
2224 const result = await Promise . all ( [
23- MessageForResultSender . send ( { cmd : 'message1' , data : null } , cProcess ) ,
25+ sendIpcMessageForResult ( message , cProcess ) ,
2426 setTimeout ( ( ) => {
25- cProcess . emit ( 'message' , { cmd : returnMessageCmd ( 'message1' ) , data : null } ) ;
27+ cProcess . emit ( 'message' , { cmd : returnMessageCmd ( 'message1' ) , data : null , requestId : message . requestId } ) ;
2628 } , 100 ) ,
2729 ] )
2830
@@ -33,11 +35,12 @@ describe('Message sender tests', async () => {
3335
3436 it ( 'Clears all listeners' , async ( ) => {
3537 const cProcess = mockChildProcess ( ) ;
38+ const message = PluginMessage . create ( 'message1' , null )
3639
3740 const result = await Promise . all ( [
38- MessageForResultSender . send ( { cmd : 'message1' , data : null } , cProcess ) ,
41+ sendIpcMessageForResult ( message , cProcess ) ,
3942 setTimeout ( ( ) => {
40- cProcess . emit ( 'message' , { cmd : returnMessageCmd ( 'message1' ) , data : null } ) ;
43+ cProcess . emit ( 'message' , { cmd : returnMessageCmd ( 'message1' ) , data : null , requestId : message . requestId } ) ;
4144 } , 100 ) ,
4245 ] )
4346
@@ -48,26 +51,28 @@ describe('Message sender tests', async () => {
4851
4952 it ( 'Is able to send a message and timeout if not received' , async ( ) => {
5053 const cProcess = mockChildProcess ( ) ;
54+ const message = PluginMessage . create ( 'message1' , null )
5155
5256 await expect ( ( ) => Promise . all ( [
53- MessageForResultSender . send ( { cmd : 'message1' , data : null } , cProcess , 100 ) ,
57+ sendIpcMessageForResult ( message , cProcess , 100 ) ,
5458 setTimeout ( ( ) => {
55- cProcess . emit ( 'message' , { cmd : returnMessageCmd ( 'message1' ) , data : null } ) ;
59+ cProcess . emit ( 'message' , { cmd : returnMessageCmd ( 'message1' ) , data : null , requestId : message . requestId } ) ;
5660 } , 200 ) ,
5761 ] ) ) . rejects . toThrowError ( ) ;
5862 } )
5963
6064 it ( 'Is able to send a message and not timeout if stdout is returned' , async ( ) => {
6165 const cProcess = mockChildProcess ( ) ;
66+ const message = PluginMessage . create ( 'message1' , null )
6267
6368 // Explanation:
6469 // 1. Send a message and set the timeout to be 100ms
6570 // 2. Make the return message come back in 200ms
6671 // 3. Periodically send a stdout every 50ms. This should not throw
6772 const [ result , timer , interval ] = await Promise . all ( [
68- MessageForResultSender . send ( { cmd : 'message1' , data : null } , cProcess , 100 ) ,
73+ sendIpcMessageForResult ( message , cProcess , 100 ) ,
6974 setTimeout ( ( ) => {
70- cProcess . emit ( 'message' , { cmd : returnMessageCmd ( 'message1' ) , data : null } ) ;
75+ cProcess . emit ( 'message' , { cmd : returnMessageCmd ( 'message1' ) , data : null , requestId : message . requestId } ) ;
7176 } , 200 ) ,
7277 setInterval ( ( ) => {
7378 cProcess . stdout ! . emit ( 'data' , 'message' ) ;
@@ -83,15 +88,16 @@ describe('Message sender tests', async () => {
8388
8489 it ( 'Is able to send a message and not timeout if stderr is returned' , async ( ) => {
8590 const cProcess = mockChildProcess ( ) ;
91+ const message = PluginMessage . create ( 'message1' , null )
8692
8793 // Explanation:
8894 // 1. Send a message and set the timeout to be 100ms
8995 // 2. Make the return message come back in 200ms
9096 // 3. Periodically send a stdout every 50ms. This should not throw
9197 const [ result , timer , interval ] = await Promise . all ( [
92- MessageForResultSender . send ( { cmd : 'message1' , data : null } , cProcess , 100 ) ,
98+ sendIpcMessageForResult ( message , cProcess , 100 ) ,
9399 setTimeout ( ( ) => {
94- cProcess . emit ( 'message' , { cmd : returnMessageCmd ( 'message1' ) , data : null } ) ;
100+ cProcess . emit ( 'message' , { cmd : returnMessageCmd ( 'message1' ) , data : null , requestId : message . requestId } ) ;
95101 } , 200 ) ,
96102 setInterval ( ( ) => {
97103 cProcess . stderr ! . emit ( 'data' , 'message' ) ;
@@ -107,18 +113,19 @@ describe('Message sender tests', async () => {
107113
108114 it ( 'Is able to send a message and not timeout if a non-resolving message is sent (like a sudo request)' , async ( ) => {
109115 const cProcess = mockChildProcess ( ) ;
116+ const message = PluginMessage . create ( 'message1' , null )
110117
111118 // Explanation:
112119 // 1. Send a message and set the timeout to be 100ms
113120 // 2. Make the return message come back in 200ms
114121 // 3. Periodically send a stdout every 50ms. This should not throw
115122 const [ result , timer , interval ] = await Promise . all ( [
116- MessageForResultSender . send ( { cmd : 'message1' , data : null } , cProcess , 100 ) ,
123+ sendIpcMessageForResult ( message , cProcess , 100 ) ,
117124 setTimeout ( ( ) => {
118- cProcess . emit ( 'message' , { cmd : returnMessageCmd ( 'message1' ) , data : null } ) ;
125+ cProcess . emit ( 'message' , { cmd : returnMessageCmd ( 'message1' ) , data : null , requestId : message . requestId } ) ;
119126 } , 200 ) ,
120127 setInterval ( ( ) => {
121- cProcess . emit ( 'message' , { cmd : 'non-resolving' , data : null } )
128+ cProcess . emit ( 'message' , { cmd : 'non-resolving' , data : null , requestId : 'dshghdjsag' } )
122129 } , 50 ) ,
123130 ] )
124131
0 commit comments