@@ -19,13 +19,18 @@ const unmarshalJSON = (obj: unknown) => {
1919 return obj
2020}
2121
22- const makeValidFetchResponse = (
23- contentType = 'application/json' ,
22+ const makeValidJSONResponse = (
2423 value : JSON | null = SIMPLE_REQ_BODY ,
2524 status = 200 ,
2625) =>
2726 new Response ( value !== null ? convertObjToBuffer ( value ) : value , {
28- headers : { 'Content-Type' : contentType } ,
27+ headers : { 'Content-Type' : 'application/json' } ,
28+ status,
29+ } )
30+
31+ const makeValidTextResponse = ( value : string | null , status = 200 ) =>
32+ new Response ( value , {
33+ headers : { 'Content-Type' : 'plain/text' } ,
2934 status,
3035 } )
3136
@@ -82,7 +87,7 @@ describe(`responseParser`, () => {
8287 } )
8388
8489 it ( `triggers an error for unsuccessful unmarshalling` , async ( ) => {
85- const validResponse = makeValidFetchResponse ( )
90+ const validResponse = makeValidJSONResponse ( )
8691
8792 await expect (
8893 responseParser ( ( ) => {
@@ -91,7 +96,7 @@ describe(`responseParser`, () => {
9196 ) . rejects . toThrow (
9297 new ScalewayError (
9398 validResponse . status ,
94- `could not parse application/json response: couldn't unwrap response value` ,
99+ `could not parse ' application/json' response: couldn't unwrap response value` ,
95100 ) ,
96101 )
97102
@@ -103,42 +108,25 @@ describe(`responseParser`, () => {
103108 ) . rejects . toThrow (
104109 new ScalewayError (
105110 validResponse . status ,
106- `could not parse application/json response` ,
107- ) ,
108- )
109- } )
110-
111- it ( `triggers an error for invalid content type` , async ( ) => {
112- const cType = 'plain/text'
113- const invalidResponse = makeValidFetchResponse ( cType )
114-
115- return expect ( parseJson ( invalidResponse ) ) . rejects . toThrow (
116- new ScalewayError (
117- invalidResponse . status ,
118- `invalid content type ${ cType } ` ,
111+ `could not parse 'application/json' response` ,
119112 ) ,
120113 )
121114 } )
122115
123- it ( `triggers an error for undefined content type` , async ( ) => {
124- const invalidResponse = new Response ( convertObjToBuffer ( SIMPLE_REQ_BODY ) , {
125- headers : { } ,
126- status : 200 ,
127- } )
116+ it ( `returns the response as-if for unknown content type` , async ( ) => {
117+ const textResponse = makeValidTextResponse ( 'text-body' )
128118
129- return expect ( parseJson ( invalidResponse ) ) . rejects . toThrow (
130- new ScalewayError ( invalidResponse . status , `invalid content type` ) ,
131- )
119+ return expect ( parseAsIs ( textResponse ) ) . resolves . toBe ( 'text-body' )
132120 } )
133121
134122 it ( `returns a simple object for a valid 'Response' object` , async ( ) =>
135- expect ( parseJson ( makeValidFetchResponse ( ) ) ) . resolves . toMatchObject (
123+ expect ( parseJson ( makeValidJSONResponse ( ) ) ) . resolves . toMatchObject (
136124 SIMPLE_REQ_BODY ,
137125 ) )
138126
139127 it ( `returns undefined for a 204 status code, even if content-type is json` , async ( ) =>
140128 expect (
141- parseAsIs ( makeValidFetchResponse ( 'application/json' , null , 204 ) ) ,
129+ parseAsIs ( makeValidJSONResponse ( null , 204 ) ) ,
142130 ) . resolves . toBeUndefined ( ) )
143131} )
144132
0 commit comments