diff --git a/jest.config.js b/jest.config.js index 8a4f30fac..d3b1b6f28 100644 --- a/jest.config.js +++ b/jest.config.js @@ -5,5 +5,6 @@ module.exports = { 'src/__tests__/manual/', 'src/__tests__/support/', 'src/__tests__/integration/handler/handlerPayload.js', + 'src/__tests__/integration/uncategorized/uncategorized.js', ], }; diff --git a/src/__tests__/integration/uncategorized/serverless.yml b/src/__tests__/integration/uncategorized/serverless.yml new file mode 100644 index 000000000..47912526c --- /dev/null +++ b/src/__tests__/integration/uncategorized/serverless.yml @@ -0,0 +1,34 @@ +service: uncategorized-tests + +provider: + name: aws + stage: dev + region: us-east-1 # default + runtime: nodejs10.x + memorySize: 128 + versionFunctions: false + +plugins: + - './../../../index' + +functions: + # https://github.com/serverless/serverless/issues/4218#issue-255617750 + # bug? + # - ${file(./handlerPayload.yml)} + + uncategorizedHandler1: + events: + - http: + integration: lambda + method: get + path: uncategorized-1 + responses: + default: + responseModels: + application/json;charset=UTF-8: Empty + responseParameters: + method.response.header.x-foo: 'integration.response.body.foo' + responseTemplates: + application/json;charset=UTF-8: '' + statusCode: 200 + handler: uncategorized.uncategorizedHandler1 diff --git a/src/__tests__/integration/uncategorized/uncategorized.js b/src/__tests__/integration/uncategorized/uncategorized.js new file mode 100644 index 000000000..c951ff425 --- /dev/null +++ b/src/__tests__/integration/uncategorized/uncategorized.js @@ -0,0 +1,7 @@ +'use strict'; + +module.exports.uncategorizedHandler1 = async () => { + return { + foo: 'bar', + }; +}; diff --git a/src/__tests__/integration/uncategorized/uncategorized.test.js b/src/__tests__/integration/uncategorized/uncategorized.test.js new file mode 100644 index 000000000..1bbcf5d5f --- /dev/null +++ b/src/__tests__/integration/uncategorized/uncategorized.test.js @@ -0,0 +1,39 @@ +'use strict'; + +const { resolve } = require('path'); +const { URL } = require('url'); +const fetch = require('node-fetch'); +const Serverless = require('serverless'); +const ServerlessOffline = require('../../../../src/ServerlessOffline.js'); + +jest.setTimeout(30000); + +describe('handler payload tests', () => { + let serverlessOffline; + + // init + beforeAll(async () => { + const serverless = new Serverless(); + serverless.config.servicePath = resolve(__dirname); + await serverless.init(); + serverlessOffline = new ServerlessOffline(serverless, {}); + + return serverlessOffline.start(); + }); + + // cleanup + afterAll(async () => { + return serverlessOffline.end(); + }); + + const url = new URL('http://localhost:3000'); + + // issue: https://github.com/dherault/serverless-offline/issues/756 + // PR: https://github.com/dherault/serverless-offline/pull/757 + test('Uncategorized 1', async () => { + url.pathname = 'uncategorized-1'; + const response = await fetch(url); + const json = await response.json(); + expect(json).toEqual({ foo: 'bar' }); + }); +});