serverless-docker
Version:
This is a proof of concept to see if we can replicate Amazon API Gateway using docker images to run lambda
106 lines (93 loc) • 3.01 kB
JavaScript
const context = require('./context')
describe('context', () => {
describe('escapeJavaScript', () => {
it('should escape string', () => {
const actual = context.escapeJavaScript('"Hello World!"')
expect(actual).toEqual('\\"Hello World!\\"')
})
it('should escape object', () => {
const actual = context.escapeJavaScript({
message: '"Hello World!"',
})
expect(actual).toEqual('{"message":"\\\\\\"Hello World!\\\\\\""}')
})
it('should escape function', () => {
const func = () => 1 + 1
const actual = context.escapeJavaScript(func)
expect(actual).toEqual('() => 1 + 1')
})
it('should escape number', () => {
const actual = context.escapeJavaScript(1)
expect(actual).toEqual('1')
})
it('should escape bool', () => {
const actual = context.escapeJavaScript(true)
expect(actual).toEqual('true')
})
it('should escape null', () => {
const actual = context.escapeJavaScript(null)
expect(actual).toEqual(null)
})
it('should escape undefined', () => {
const actual = context.escapeJavaScript(undefined)
expect(actual).toEqual(undefined)
})
})
describe('createFromRequest', () => {
const req = {
url: '/',
method: 'GET',
headers: {
'user-agent': 'test-user-agent',
},
params: {},
query: {},
context: {
stage: 'dev',
},
connection: {
remoteAddress: '127.0.0.1',
},
body: {
hello: 'world',
},
user: {
principalId: '12345',
},
}
it('should create context', () => {
const expected = {
context: {
apiId: 'offlineContext_apiId',
authorizer: {
principalId: req.user.principalId,
},
httpMethod: req.method.toUpperCase(),
stage: req.context.stage,
identity: {
cognitoIdentityPoolId: 'offlineContext_cognitoIdentityPoolId',
accountId: 'offlineContext_accountId',
cognitoIdentityId: 'offlineContext_cognitoIdentityId',
caller: 'offlineContext_caller',
apiKey: 'offlineContext_apiKey',
sourceIp: req.headers['x-forwarded-for'] || req.connection.remoteAddress,
cognitoAuthenticationProvider: 'offlineContext_cognitoAuthenticationProvider',
cognitoAuthenticationType: 'offlineContext_cognitoAuthenticationType',
userArn: 'offlineContext_userArn',
userAgent: req.headers['user-agent'] || '',
user: 'offlineContext_user',
},
resourceId: 'offlineContext_resourceId',
resourcePath: req.url,
},
stageVariables: req.context.stageVariables || {},
}
const actual = context.createFromRequest(req)
delete actual.context.requestId
delete actual.util
delete actual.input
expect(actual).toEqual(expected)
})
})
})