Skip to content

Commit cdea6c9

Browse files
committed
wip support for albs #80
1 parent a878dd2 commit cdea6c9

File tree

4 files changed

+81
-3
lines changed

4 files changed

+81
-3
lines changed

test/requests.js

Lines changed: 33 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,13 @@ describe('Request Tests:', function() {
2525
describe('API Gateway Proxy Event', function() {
2626
it('Standard event', async function() {
2727
let _event = require('./sample-event-apigateway1.json')
28-
let result = await new Promise(r => api.run(_event,{},(e,res) => { r(res) }))
28+
let _context = require('./sample-context-apigateway1.json')
29+
let result = await new Promise(r => api.run(_event,_context,(e,res) => { r(res) }))
2930
let body = JSON.parse(result.body)
31+
// console.log(body);
3032
expect(result.headers).to.deep.equal({ 'content-type': 'application/json' })
3133
expect(body).to.have.property('request')
34+
expect(body.request.id).is.not.null
3235
expect(body.request.userAgent).to.equal('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36 OPR/39.0.2256.48')
3336
expect(body.request).to.have.property('requestContext')
3437
expect(body.request.ip).to.equal('192.168.100.1')
@@ -42,16 +45,17 @@ describe('Request Tests:', function() {
4245
expect(body.request.query.qs2).to.equal('bar')
4346
expect(body.request.multiValueQuery.qs2).to.deep.equal(['foo','bar'])
4447
expect(body.request.multiValueQuery.qs3).to.deep.equal(['bat','baz'])
45-
4648
})
4749

4850
it('Missing X-Forwarded-For (sourceIp fallback)', async function() {
4951
let _event = require('./sample-event-apigateway1.json')
52+
let _context = require('./sample-context-apigateway1.json')
5053
delete _event.headers['X-Forwarded-For'] // remove the header
51-
let result = await new Promise(r => api.run(_event,{},(e,res) => { r(res) }))
54+
let result = await new Promise(r => api.run(_event,_context,(e,res) => { r(res) }))
5255
let body = JSON.parse(result.body)
5356
expect(result.headers).to.deep.equal({ 'content-type': 'application/json' })
5457
expect(body).to.have.property('request')
58+
expect(body.request.id).is.not.null
5559
expect(body.request.userAgent).to.equal('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36 OPR/39.0.2256.48')
5660
expect(body.request).to.have.property('requestContext')
5761
expect(body.request.ip).to.equal('192.168.100.12')
@@ -69,4 +73,30 @@ describe('Request Tests:', function() {
6973
})
7074
})
7175

76+
describe('ALB Event', function() {
77+
it('Standard event', async function() {
78+
let _event = require('./sample-event-alb1.json')
79+
let _context = require('./sample-context-alb1.json')
80+
let result = await new Promise(r => api.run(_event,_context,(e,res) => { r(res) }))
81+
let body = JSON.parse(result.body)
82+
//console.log(body);
83+
expect(result.headers).to.deep.equal({ 'content-type': 'application/json' })
84+
expect(body).to.have.property('request')
85+
expect(body.request.id).is.not.null
86+
expect(body.request.userAgent).to.equal('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36 OPR/39.0.2256.48')
87+
expect(body.request).to.have.property('requestContext')
88+
expect(body.request.ip).to.equal('192.168.100.1')
89+
expect(body.request.isBase64Encoded).to.equal(true)
90+
expect(body.request.clientType).to.equal('unknown')
91+
expect(body.request.clientCountry).to.equal('unknown')
92+
expect(body.request.route).to.equal('/test/hello')
93+
expect(body.request.query.qs1).to.equal('foo')
94+
// expect(body.request.query.qs2).to.equal('bar')
95+
// expect(body.request.multiValueQuery.qs2).to.deep.equal(['foo','bar'])
96+
// expect(body.request.multiValueQuery.qs3).to.deep.equal(['bat','baz'])
97+
98+
})
99+
100+
})
101+
72102
}) // end Request tests

test/sample-context-alb1.json

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"callbackWaitsForEmptyEventLoop": true,
3+
"logGroupName": "/aws/lambda/test-alb",
4+
"logStreamName": "2018/12/22/[$LATEST]21a094d27de15adeaceaf073140d5aca",
5+
"functionName": "test-alb",
6+
"memoryLimitInMB": "1024",
7+
"functionVersion": "$LATEST",
8+
"invokeid": "59327015-07f1-11e9-a63e-9f9eb869059e",
9+
"awsRequestId": "59327015-07f1-11e9-a63e-9f9eb869059e",
10+
"invokedFunctionArn": "arn:aws:lambda:us-east-1:XXXXXXXXXX:function:test-alb"
11+
}

test/sample-context-apigateway1.json

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"callbackWaitsForEmptyEventLoop": false,
3+
"logGroupName": "/aws/lambda/test-apigateway",
4+
"logStreamName": "2018/12/22/[$LATEST]21a094d27de15adeaceaf073140d5aca",
5+
"functionName": "test-alb",
6+
"memoryLimitInMB": "1024",
7+
"functionVersion": "$LATEST",
8+
"invokeid": "59327015-07f1-11e9-a63e-9f9eb869059e",
9+
"awsRequestId": "59327015-07f1-11e9-a63e-9f9eb869059e",
10+
"invokedFunctionArn": "arn:aws:lambda:us-east-1:XXXXXXXXXX:function:test-apigateway"
11+
}

test/sample-event-alb1.json

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
{
2+
"requestContext": {
3+
"elb": {
4+
"targetGroupArn": "arn:aws:elasticloadbalancing:us-east-1:XXXXXXXXXX:targetgroup/Test-ALB-Lambda/XXXXXXX"
5+
}
6+
},
7+
"httpMethod": "GET",
8+
"path": "/test/hello",
9+
"queryStringParameters": {
10+
"qs1": "foo"
11+
},
12+
"headers": {
13+
"accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
14+
"accept-encoding": "br, gzip, deflate",
15+
"accept-language": "en-us",
16+
"cookie": "",
17+
"host": "wt6mne2s9k.execute-api.us-west-2.amazonaws.com",
18+
"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36 OPR/39.0.2256.48",
19+
"x-amzn-trace-id": "Root=1-5c1db69f-XXXXXXXXXXX",
20+
"x-forwarded-for": "192.168.100.1",
21+
"x-forwarded-port": "443",
22+
"x-forwarded-proto": "https"
23+
},
24+
"body": "",
25+
"isBase64Encoded": true
26+
}

0 commit comments

Comments
 (0)