@@ -127,6 +127,50 @@ class MockContext {
127127 }
128128}
129129
130+ describe ( 'forwardConnectionErrorResponseToApiGateway' , ( ) => {
131+ test ( 'responds with 502 status' , ( ) => {
132+ return new Promise (
133+ ( resolve , reject ) => {
134+ const context = new MockContext ( resolve )
135+ const contextResolver = {
136+ succeed : ( p ) => context . succeed ( p . response )
137+ }
138+ awsServerlessExpress . forwardConnectionErrorResponseToApiGateway ( 'ERROR' , contextResolver )
139+ }
140+ ) . then ( successResponse => expect ( successResponse ) . toEqual ( {
141+ statusCode : 502 ,
142+ body : '' ,
143+ headers : { }
144+ } ) )
145+ } )
146+ } )
147+
148+ describe ( 'forwardLibraryErrorResponseToApiGateway' , ( ) => {
149+ test ( 'responds with 500 status' , ( ) => {
150+ return new Promise (
151+ ( resolve , reject ) => {
152+ const context = new MockContext ( resolve )
153+ const contextResolver = {
154+ succeed : ( p ) => context . succeed ( p . response )
155+ }
156+ awsServerlessExpress . forwardLibraryErrorResponseToApiGateway ( 'ERROR' , contextResolver )
157+ }
158+ ) . then ( successResponse => expect ( successResponse ) . toEqual ( {
159+ statusCode : 500 ,
160+ body : '' ,
161+ headers : { }
162+ } ) )
163+ } )
164+ } )
165+
166+ function getContextResolver ( resolve ) {
167+ const context = new MockContext ( resolve )
168+ const contextResolver = {
169+ succeed : ( p ) => context . succeed ( p . response )
170+ }
171+
172+ return contextResolver
173+ }
130174describe ( 'forwardResponseToApiGateway: header handling' , ( ) => {
131175 test ( 'multiple headers with the same name get transformed' , ( ) => {
132176 const server = new MockServer ( )
@@ -135,9 +179,8 @@ describe('forwardResponseToApiGateway: header handling', () => {
135179 const response = new MockResponse ( 200 , headers , body )
136180 return new Promise (
137181 ( resolve , reject ) => {
138- const context = new MockContext ( resolve )
139- awsServerlessExpress . forwardResponseToApiGateway (
140- server , response , context )
182+ const contextResolver = getContextResolver ( resolve )
183+ awsServerlessExpress . forwardResponseToApiGateway ( server , response , contextResolver )
141184 }
142185 ) . then ( successResponse => expect ( successResponse ) . toEqual ( {
143186 statusCode : 200 ,
@@ -156,9 +199,8 @@ describe('forwardResponseToApiGateway: content-type encoding', () => {
156199 const response = new MockResponse ( 200 , headers , body )
157200 return new Promise (
158201 ( resolve , reject ) => {
159- const context = new MockContext ( resolve )
160- awsServerlessExpress . forwardResponseToApiGateway (
161- server , response , context )
202+ const contextResolver = getContextResolver ( resolve )
203+ awsServerlessExpress . forwardResponseToApiGateway ( server , response , contextResolver )
162204 }
163205 ) . then ( successResponse => expect ( successResponse ) . toEqual ( {
164206 statusCode : 200 ,
@@ -175,9 +217,8 @@ describe('forwardResponseToApiGateway: content-type encoding', () => {
175217 const response = new MockResponse ( 200 , headers , body )
176218 return new Promise (
177219 ( resolve , reject ) => {
178- const context = new MockContext ( resolve )
179- awsServerlessExpress . forwardResponseToApiGateway (
180- server , response , context )
220+ const contextResolver = getContextResolver ( resolve )
221+ awsServerlessExpress . forwardResponseToApiGateway ( server , response , contextResolver )
181222 }
182223 ) . then ( successResponse => expect ( successResponse ) . toEqual ( {
183224 statusCode : 200 ,
@@ -194,9 +235,8 @@ describe('forwardResponseToApiGateway: content-type encoding', () => {
194235 const response = new MockResponse ( 200 , headers , body )
195236 return new Promise (
196237 ( resolve , reject ) => {
197- const context = new MockContext ( resolve )
198- awsServerlessExpress . forwardResponseToApiGateway (
199- server , response , context )
238+ const contextResolver = getContextResolver ( resolve )
239+ awsServerlessExpress . forwardResponseToApiGateway ( server , response , contextResolver )
200240 }
201241 ) . then ( successResponse => expect ( successResponse ) . toEqual ( {
202242 statusCode : 200 ,
@@ -213,9 +253,8 @@ describe('forwardResponseToApiGateway: content-type encoding', () => {
213253 const response = new MockResponse ( 200 , headers , body )
214254 return new Promise (
215255 ( resolve , reject ) => {
216- const context = new MockContext ( resolve )
217- awsServerlessExpress . forwardResponseToApiGateway (
218- server , response , context )
256+ const contextResolver = getContextResolver ( resolve )
257+ awsServerlessExpress . forwardResponseToApiGateway ( server , response , contextResolver )
219258 }
220259 ) . then ( successResponse => expect ( successResponse ) . toEqual ( {
221260 statusCode : 200 ,
@@ -232,9 +271,8 @@ describe('forwardResponseToApiGateway: content-type encoding', () => {
232271 const response = new MockResponse ( 200 , headers , body )
233272 return new Promise (
234273 ( resolve , reject ) => {
235- const context = new MockContext ( resolve )
236- awsServerlessExpress . forwardResponseToApiGateway (
237- server , response , context )
274+ const contextResolver = getContextResolver ( resolve )
275+ awsServerlessExpress . forwardResponseToApiGateway ( server , response , contextResolver )
238276 }
239277 ) . then ( successResponse => expect ( successResponse ) . toEqual ( {
240278 statusCode : 200 ,
@@ -244,3 +282,52 @@ describe('forwardResponseToApiGateway: content-type encoding', () => {
244282 } ) )
245283 } )
246284} )
285+
286+ describe ( 'makeResolver' , ( ) => {
287+ test ( 'CONTEXT_SUCCEED (specified)' , ( ) => {
288+ return new Promise (
289+ ( resolve , reject ) => {
290+ const context = new MockContext ( resolve )
291+ const contextResolver = awsServerlessExpress . makeResolver ( {
292+ context,
293+ resolutionMode : 'CONTEXT_SUCCEED'
294+ } )
295+
296+ return contextResolver . succeed ( {
297+ response : 'success'
298+ } )
299+ } ) . then ( successResponse => expect ( successResponse ) . toEqual ( 'success' ) )
300+ } )
301+
302+ test ( 'CALLBACK' , ( ) => {
303+ const callback = ( e , response ) => response
304+ const callbackResolver = awsServerlessExpress . makeResolver ( {
305+ callback,
306+ resolutionMode : 'CALLBACK'
307+ } )
308+ const successResponse = callbackResolver . succeed ( {
309+ response : 'success'
310+ } )
311+
312+ expect ( successResponse ) . toEqual ( 'success' )
313+ } )
314+
315+ test ( 'PROMISE' , ( ) => {
316+ return new Promise ( ( resolve , reject ) => {
317+ const promise = {
318+ resolve,
319+ reject
320+ }
321+ const promiseResolver = awsServerlessExpress . makeResolver ( {
322+ promise,
323+ resolutionMode : 'PROMISE'
324+ } )
325+
326+ return promiseResolver . succeed ( {
327+ response : 'success'
328+ } )
329+ } ) . then ( successResponse => {
330+ expect ( successResponse ) . toEqual ( 'success' )
331+ } )
332+ } )
333+ } )
0 commit comments