diff --git a/__tests__/integration-alb.js b/__tests__/integration-alb.js new file mode 100644 index 00000000..836a0fad --- /dev/null +++ b/__tests__/integration-alb.js @@ -0,0 +1,37 @@ +const express = require('express') +const serverlessExpress = require('../src/index') +const { + makeEvent, + makeResponse +} = require('../jest-helpers') + +describe('alb:express integration tests', () => { + test('reasponse headers are of type string', async () => { + const app = express() + const router = express.Router() + app.use('/', router) + const serverlessExpressInstance = serverlessExpress({ app }) + router.get('/foo', (req, res) => { + res.send('123') + }) + const event = makeEvent({ + eventSourceName: 'alb', + path: '/foo', + httpMethod: 'GET', + headers: {} + }) + const response = await serverlessExpressInstance(event) + const expectedResponse = makeResponse({ + eventSourceName: 'alb', + body: '123', + headers: { + 'content-length': '3', + 'content-type': 'text/html; charset=utf-8', + 'x-powered-by': 'Express', + etag: 'W/"3-QL0AFWMIX8NRZTKeof9cXsvbvu8"' + }, + multiValueHeaders: undefined + }) + expect(response).toMatchObject(expectedResponse) + }) +}) diff --git a/src/event-sources/aws/alb.js b/src/event-sources/aws/alb.js index 569ba742..05c2109d 100644 --- a/src/event-sources/aws/alb.js +++ b/src/event-sources/aws/alb.js @@ -52,7 +52,7 @@ const getResponseToAlb = ({ const multiValueHeaders = !event.headers ? getMultiValueHeaders({ headers: responseHeaders }) : undefined const headers = event.headers ? Object.entries(responseHeaders).reduce((acc, [k, v]) => { - acc[k] = Array.isArray(v) ? v[0] : v + acc[k] = Array.isArray(v) ? String(v[0]) : String(v) return acc }, {}) : undefined