@@ -140,7 +140,7 @@ function mockHttp2SendRequestError(
140
140
} as mocks . MockHttp2Response
141
141
}
142
142
143
- function mockHttp2Error ( streamError ? : any , sessionError ?:any ) : mocks . MockHttp2Response {
143
+ function mockHttp2Error ( streamError : any , sessionError ?:any ) : mocks . MockHttp2Response {
144
144
return {
145
145
streamError : streamError ,
146
146
sessionError : sessionError
@@ -2506,10 +2506,10 @@ describe('Http2Client', () => {
2506
2506
it ( 'should fail on session and stream errors' , async ( ) => {
2507
2507
const reqData = { request : 'data' } ;
2508
2508
const streamError = 'Error while making request: test stream error. Error code: AWFUL_STREAM_ERROR' ;
2509
- const sessionError = 'Session error while making requests: Error: AWFUL_SESSION_ERROR'
2509
+ const sessionError = 'Session error while making requests: AWFUL_SESSION_ERROR - test session error '
2510
2510
mockedHttp2Responses . push ( mockHttp2Error (
2511
2511
{ message : 'test stream error' , code : 'AWFUL_STREAM_ERROR' } ,
2512
- new Error ( ' AWFUL_SESSION_ERROR')
2512
+ { message : 'test session error' , code : ' AWFUL_SESSION_ERROR' }
2513
2513
) ) ;
2514
2514
http2Mocker . http2Stub ( mockedHttp2Responses ) ;
2515
2515
@@ -2540,6 +2540,52 @@ describe('Http2Client', () => {
2540
2540
await http2SessionHandler . invoke ( ) . should . eventually . be . rejectedWith ( sessionError )
2541
2541
. and . have . property ( 'code' , 'app/network-error' )
2542
2542
} ) ;
2543
+
2544
+ it ( 'should unwrap aggregate session errors' , async ( ) => {
2545
+ const reqData = { request : 'data' } ;
2546
+ const streamError = { message : 'test stream error' , code : 'AWFUL_STREAM_ERROR' }
2547
+ const expectedStreamErrorMessage = 'Error while making request: test stream error. Error code: AWFUL_STREAM_ERROR' ;
2548
+ const aggregateSessionError = {
2549
+ name : 'AggregateError' ,
2550
+ code : 'AWFUL_SESSION_ERROR' ,
2551
+ errors : [
2552
+ { message : 'Error message 1' } ,
2553
+ { message : 'Error message 2' } ,
2554
+ ]
2555
+ }
2556
+ const expectedAggregateErrorMessage = 'Session error while making requests: AWFUL_SESSION_ERROR - ' +
2557
+ 'AggregateError: [Error message 1, Error message 2]'
2558
+
2559
+ mockedHttp2Responses . push ( mockHttp2Error ( streamError , aggregateSessionError ) ) ;
2560
+ http2Mocker . http2Stub ( mockedHttp2Responses ) ;
2561
+
2562
+ const client = new Http2Client ( ) ;
2563
+ http2SessionHandler = new Http2SessionHandler ( mockHostUrl )
2564
+
2565
+ await client . send ( {
2566
+ method : 'POST' ,
2567
+ url : mockUrl ,
2568
+ headers : {
2569
+ 'authorization' : 'Bearer token' ,
2570
+ 'My-Custom-Header' : 'CustomValue' ,
2571
+ } ,
2572
+ data : reqData ,
2573
+ http2SessionHandler : http2SessionHandler ,
2574
+ } ) . should . eventually . be . rejectedWith ( expectedStreamErrorMessage ) . and . have . property ( 'code' , 'app/network-error' )
2575
+ . then ( ( ) => {
2576
+ expect ( http2Mocker . requests . length ) . to . equal ( 1 ) ;
2577
+ expect ( http2Mocker . requests [ 0 ] . headers [ ':method' ] ) . to . equal ( 'POST' ) ;
2578
+ expect ( http2Mocker . requests [ 0 ] . headers [ ':scheme' ] ) . to . equal ( 'https:' ) ;
2579
+ expect ( http2Mocker . requests [ 0 ] . headers [ ':path' ] ) . to . equal ( mockPath ) ;
2580
+ expect ( JSON . parse ( http2Mocker . requests [ 0 ] . data ) ) . to . deep . equal ( reqData ) ;
2581
+ expect ( http2Mocker . requests [ 0 ] . headers . authorization ) . to . equal ( 'Bearer token' ) ;
2582
+ expect ( http2Mocker . requests [ 0 ] . headers [ 'content-type' ] ) . to . contain ( 'application/json' ) ;
2583
+ expect ( http2Mocker . requests [ 0 ] . headers [ 'My-Custom-Header' ] ) . to . equal ( 'CustomValue' ) ;
2584
+ } ) ;
2585
+
2586
+ await http2SessionHandler . invoke ( ) . should . eventually . be . rejectedWith ( expectedAggregateErrorMessage )
2587
+ . and . have . property ( 'code' , 'app/network-error' )
2588
+ } ) ;
2543
2589
} ) ;
2544
2590
2545
2591
describe ( 'AuthorizedHttpClient' , ( ) => {
0 commit comments