11'use strict'
2+
3+ const path = require ( 'path' )
4+
25const awsServerlessExpress = require ( '../src/index' )
36
47test ( 'getPathWithQueryStringParams: no params' , ( ) => {
@@ -92,7 +95,9 @@ test('mapApiGatewayEventToHttpRequest: without headers', () => {
9295
9396test ( 'getSocketPath' , ( ) => {
9497 const socketPath = awsServerlessExpress . getSocketPath ( '12345abcdef' )
95- expect ( socketPath ) . toEqual ( '/tmp/server-12345abcdef.sock' )
98+ const isWin = process . platform === 'win32'
99+ const expectedSocketPath = isWin ? path . join ( '\\\\?\\\\pipe\\\\' , process . cwd ( ) , 'server-12345abcdef' ) : '/tmp/server-12345abcdef.sock'
100+ expect ( socketPath ) . toBe ( expectedSocketPath )
96101} )
97102
98103const PassThrough = require ( 'stream' ) . PassThrough
@@ -122,6 +127,50 @@ class MockContext {
122127 }
123128}
124129
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+ }
125174describe ( 'forwardResponseToApiGateway: header handling' , ( ) => {
126175 test ( 'multiple headers with the same name get transformed' , ( ) => {
127176 const server = new MockServer ( )
@@ -130,9 +179,8 @@ describe('forwardResponseToApiGateway: header handling', () => {
130179 const response = new MockResponse ( 200 , headers , body )
131180 return new Promise (
132181 ( resolve , reject ) => {
133- const context = new MockContext ( resolve )
134- awsServerlessExpress . forwardResponseToApiGateway (
135- server , response , context )
182+ const contextResolver = getContextResolver ( resolve )
183+ awsServerlessExpress . forwardResponseToApiGateway ( server , response , contextResolver )
136184 }
137185 ) . then ( successResponse => expect ( successResponse ) . toEqual ( {
138186 statusCode : 200 ,
@@ -151,9 +199,8 @@ describe('forwardResponseToApiGateway: content-type encoding', () => {
151199 const response = new MockResponse ( 200 , headers , body )
152200 return new Promise (
153201 ( resolve , reject ) => {
154- const context = new MockContext ( resolve )
155- awsServerlessExpress . forwardResponseToApiGateway (
156- server , response , context )
202+ const contextResolver = getContextResolver ( resolve )
203+ awsServerlessExpress . forwardResponseToApiGateway ( server , response , contextResolver )
157204 }
158205 ) . then ( successResponse => expect ( successResponse ) . toEqual ( {
159206 statusCode : 200 ,
@@ -170,9 +217,8 @@ describe('forwardResponseToApiGateway: content-type encoding', () => {
170217 const response = new MockResponse ( 200 , headers , body )
171218 return new Promise (
172219 ( resolve , reject ) => {
173- const context = new MockContext ( resolve )
174- awsServerlessExpress . forwardResponseToApiGateway (
175- server , response , context )
220+ const contextResolver = getContextResolver ( resolve )
221+ awsServerlessExpress . forwardResponseToApiGateway ( server , response , contextResolver )
176222 }
177223 ) . then ( successResponse => expect ( successResponse ) . toEqual ( {
178224 statusCode : 200 ,
@@ -189,9 +235,8 @@ describe('forwardResponseToApiGateway: content-type encoding', () => {
189235 const response = new MockResponse ( 200 , headers , body )
190236 return new Promise (
191237 ( resolve , reject ) => {
192- const context = new MockContext ( resolve )
193- awsServerlessExpress . forwardResponseToApiGateway (
194- server , response , context )
238+ const contextResolver = getContextResolver ( resolve )
239+ awsServerlessExpress . forwardResponseToApiGateway ( server , response , contextResolver )
195240 }
196241 ) . then ( successResponse => expect ( successResponse ) . toEqual ( {
197242 statusCode : 200 ,
@@ -208,9 +253,8 @@ describe('forwardResponseToApiGateway: content-type encoding', () => {
208253 const response = new MockResponse ( 200 , headers , body )
209254 return new Promise (
210255 ( resolve , reject ) => {
211- const context = new MockContext ( resolve )
212- awsServerlessExpress . forwardResponseToApiGateway (
213- server , response , context )
256+ const contextResolver = getContextResolver ( resolve )
257+ awsServerlessExpress . forwardResponseToApiGateway ( server , response , contextResolver )
214258 }
215259 ) . then ( successResponse => expect ( successResponse ) . toEqual ( {
216260 statusCode : 200 ,
@@ -227,9 +271,8 @@ describe('forwardResponseToApiGateway: content-type encoding', () => {
227271 const response = new MockResponse ( 200 , headers , body )
228272 return new Promise (
229273 ( resolve , reject ) => {
230- const context = new MockContext ( resolve )
231- awsServerlessExpress . forwardResponseToApiGateway (
232- server , response , context )
274+ const contextResolver = getContextResolver ( resolve )
275+ awsServerlessExpress . forwardResponseToApiGateway ( server , response , contextResolver )
233276 }
234277 ) . then ( successResponse => expect ( successResponse ) . toEqual ( {
235278 statusCode : 200 ,
@@ -239,3 +282,52 @@ describe('forwardResponseToApiGateway: content-type encoding', () => {
239282 } ) )
240283 } )
241284} )
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