@@ -44,11 +44,6 @@ describe(`${RPCServer.name}`, () => {
4444 maxLength : 10 ,
4545 } ,
4646 ) ;
47- const errorArb = fc . oneof (
48- fc . constant ( new rpcErrors . ErrorRpcParse ( ) ) ,
49- fc . constant ( new rpcErrors . ErrorRpcMessageLength ( ) ) ,
50- fc . constant ( new rpcErrors . ErrorRpcRemoteError ( ) ) ,
51- ) ;
5247 const validToken = 'VALIDTOKEN' ;
5348 const invalidTokenMessageArb = rpcTestUtils . jsonRpcRequestMessageArb (
5449 fc . constant ( 'testMethod' ) ,
@@ -377,7 +372,47 @@ describe(`${RPCServer.name}`, () => {
377372 } ) ;
378373 testProp (
379374 'should send error message' ,
380- [ specificMessageArb , errorArb ] ,
375+ [ specificMessageArb , rpcTestUtils . errorArb ( rpcTestUtils . errorArb ( ) ) ] ,
376+ async ( messages , error ) => {
377+ const stream = rpcTestUtils . messagesToReadableStream ( messages ) ;
378+ class TestMethod extends DuplexHandler {
379+ public async * handle ( ) : AsyncIterable < JSONValue > {
380+ throw error ;
381+ }
382+ }
383+ const rpcServer = await RPCServer . createRPCServer ( {
384+ manifest : {
385+ testMethod : new TestMethod ( { } ) ,
386+ } ,
387+ logger,
388+ } ) ;
389+ let resolve , reject ;
390+ const errorProm = new Promise ( ( resolve_ , reject_ ) => {
391+ resolve = resolve_ ;
392+ reject = reject_ ;
393+ } ) ;
394+ rpcServer . addEventListener ( 'error' , ( thing ) => {
395+ resolve ( thing ) ;
396+ } ) ;
397+ const [ outputResult , outputStream ] = rpcTestUtils . streamToArray ( ) ;
398+ const readWriteStream : ReadableWritablePair = {
399+ readable : stream ,
400+ writable : outputStream ,
401+ } ;
402+ rpcServer . handleStream ( readWriteStream , { } as ConnectionInfo ) ;
403+ const rawErrorMessage = ( await outputResult ) [ 0 ] ! . toString ( ) ;
404+ expect ( rawErrorMessage ) . toInclude ( 'stack' ) ;
405+ const errorMessage = JSON . parse ( rawErrorMessage ) ;
406+ expect ( errorMessage . error . code ) . toEqual ( error . exitCode ) ;
407+ expect ( errorMessage . error . message ) . toEqual ( error . description ) ;
408+ reject ( ) ;
409+ await expect ( errorProm ) . toReject ( ) ;
410+ await rpcServer . destroy ( ) ;
411+ } ,
412+ ) ;
413+ testProp (
414+ 'should send error message with sensitive' ,
415+ [ specificMessageArb , rpcTestUtils . errorArb ( rpcTestUtils . errorArb ( ) ) ] ,
381416 async ( messages , error ) => {
382417 const stream = rpcTestUtils . messagesToReadableStream ( messages ) ;
383418 class TestMethod extends DuplexHandler {
@@ -389,6 +424,7 @@ describe(`${RPCServer.name}`, () => {
389424 manifest : {
390425 testMethod : new TestMethod ( { } ) ,
391426 } ,
427+ sensitive : true ,
392428 logger,
393429 } ) ;
394430 let resolve , reject ;
@@ -405,7 +441,9 @@ describe(`${RPCServer.name}`, () => {
405441 writable : outputStream ,
406442 } ;
407443 rpcServer . handleStream ( readWriteStream , { } as ConnectionInfo ) ;
408- const errorMessage = JSON . parse ( ( await outputResult ) [ 0 ] ! . toString ( ) ) ;
444+ const rawErrorMessage = ( await outputResult ) [ 0 ] ! . toString ( ) ;
445+ expect ( rawErrorMessage ) . not . toInclude ( 'stack' ) ;
446+ const errorMessage = JSON . parse ( rawErrorMessage ) ;
409447 expect ( errorMessage . error . code ) . toEqual ( error . exitCode ) ;
410448 expect ( errorMessage . error . message ) . toEqual ( error . description ) ;
411449 reject ( ) ;
0 commit comments