api-gateway-policy-gen
Version:
A Policy Generator for API Gateway Custom Authorizers
84 lines (73 loc) • 2.07 kB
JavaScript
const expect = require('chai').expect;
const policyGenerator = require('../src/policy-generator');
describe('#utils()', () => {
describe('#generatePolicy()', () => {
it('should generate policy', () => {
const userId = 'foo-user';
const authInfo = {
accountId: '123456789012',
region: 'ap-southeast-2',
stage: 'dev',
restApiId: '4uv6m4qe3g',
method: 'POST'
};
const policy = policyGenerator.generatePolicy(userId, authInfo, [{
allow: true,
methods: [{
verb: '*',
resource: '*'
}]
}]);
expect(policy).to.deep.equal({
principalId: userId,
policyDocument: {
Version: '2012-10-17',
Statement: [{
Effect: 'Allow',
Action: 'execute-api:Invoke',
"Resource": [
`arn:aws:execute-api:${authInfo.region}:${authInfo.accountId}:${authInfo.restApiId}/${authInfo.stage}/*/*`
]
}]
}
});
});
it('should generate policy - with context', () => {
const userId = 'foo-user';
const authInfo = {
accountId: '123456789012',
region: 'ap-southeast-2',
stage: 'dev',
restApiId: '4uv6m4qe3g',
method: 'POST'
};
const context = {
stringKey: 'value',
numberKey: 1,
booleanKey: true
};
const policy = policyGenerator.generatePolicy(userId, authInfo, [{
allow: true,
methods: [{
verb: '*',
resource: '*'
}]
}], context);
expect(policy).to.deep.equal({
principalId: userId,
policyDocument: {
Version: '2012-10-17',
Statement: [{
Effect: 'Allow',
Action: 'execute-api:Invoke',
"Resource": [
`arn:aws:execute-api:${authInfo.region}:${authInfo.accountId}:${authInfo.restApiId}/${authInfo.stage}/*/*`
]
}]
},
context
});
});
});
});
;