@@ -1578,4 +1578,76 @@ describe('Http', () => {
15781578 httpMiddleware ( next ) ( request , response )
15791579 } )
15801580 } )
1581+
1582+ test ( 'should handle error when parsing an invalid response object' , ( ) => {
1583+ expect ( true ) . toEqual ( true )
1584+ return new Promise ( ( resolve , reject ) => {
1585+
1586+ const response = { resolve, reject }
1587+ const request = createTestRequest ( { uri : '/foo/bar' } )
1588+
1589+ const next = ( req , res ) => {
1590+ expect ( res ) . toEqual ( {
1591+ ...response ,
1592+ error : expect . any ( Error ) ,
1593+ statusCode : 0
1594+ } )
1595+ resolve ( )
1596+ }
1597+
1598+ // Use default options
1599+ const httpMiddleware = createHttpMiddleware ( {
1600+ host : testHost ,
1601+ enableRetry : false ,
1602+ fetch : jest . fn ( ( ) =>
1603+ Promise . resolve ( {
1604+ ok : true ,
1605+ text : jest . fn ( ( ) =>
1606+ Promise . reject ( new Error ( 'malformed response' ) )
1607+ )
1608+ } ) )
1609+ } )
1610+
1611+ httpMiddleware ( next ) ( request , response )
1612+ } )
1613+ } )
1614+
1615+ test ( 'should handle error when parsing an invalid response object - retry' , ( ) => {
1616+ expect ( true ) . toEqual ( true )
1617+ return new Promise ( ( resolve , reject ) => {
1618+
1619+ const response = { resolve, reject }
1620+ const request = createTestRequest ( { uri : '/foo/bar' } )
1621+
1622+ const next = ( req , res ) => {
1623+ expect ( res ) . toEqual ( {
1624+ ...response ,
1625+ error : expect . any ( Error ) ,
1626+ statusCode : 0
1627+ } )
1628+ resolve ( )
1629+ }
1630+
1631+ // Use default options
1632+ const httpMiddleware = createHttpMiddleware ( {
1633+ host : testHost ,
1634+ enableRetry : true ,
1635+ credentialsMode : 'omit' ,
1636+ retryConfig : {
1637+ maxRetries : 2 ,
1638+ retryDelay : 100 ,
1639+ backoff : false ,
1640+ } ,
1641+ fetch : jest . fn ( ( ) =>
1642+ Promise . resolve ( {
1643+ ok : true ,
1644+ text : jest . fn ( ( ) =>
1645+ Promise . reject ( new Error ( 'malformed response' ) )
1646+ )
1647+ } ) )
1648+ } )
1649+
1650+ httpMiddleware ( next ) ( request , response )
1651+ } )
1652+ } )
15811653} )
0 commit comments