-
Notifications
You must be signed in to change notification settings - Fork 1
/
index.test.js
55 lines (46 loc) · 2.12 KB
/
index.test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
const fs = require('fs');
const path = require('path');
const chai = require('chai');
const _ = require('lodash/fp');
const { getInstalledPathSync } = require('get-installed-path');
const ServerlessGradualTrafficShifting = require('./index-promise');
const serverlessPath = getInstalledPathSync('serverless', { local: true });
const AwsProvider = require(`${serverlessPath}/lib/plugins/aws/provider/awsProvider`);
const Serverless = require(`${serverlessPath}/lib/Serverless`);
const { expect } = chai;
const templatesPath = path.resolve(__dirname, 'templates');
chai.config.includeStack = true;
describe('ServerlessGradualTrafficShifting', () => {
const stage = 'dev';
const options = { stage };
describe('addLambdaTrafficShiftingResources', () => {
before(() => {
const testCaseFiles = fs.readdirSync(templatesPath);
const getTestCaseName = _.pipe(_.split('.'), _.head);
const testCaseFileType = _.pipe(_.split('.'), _.get('[1]'));
const testCaseContentsFromFiles = _.reduce((acc, fileName) => {
const contents = JSON.parse(fs.readFileSync(path.resolve(templatesPath, fileName)));
return _.set(testCaseFileType(fileName), contents, acc);
}, {});
const testCaseFilesByName = _.groupBy(getTestCaseName, testCaseFiles);
this.testCases = _.map(
caseName => testCaseContentsFromFiles(testCaseFilesByName[caseName]),
Object.keys(testCaseFilesByName)
);
});
it('generates the correct CloudFormation templates', () => {
this.testCases.forEach(({ input, output, service }) => {
const serverless = new Serverless(options);
serverless.cli = {
log: console.log
};
Object.assign(serverless.service, service);
serverless.service.provider.compiledCloudFormationTemplate = input;
serverless.setProvider('aws', new AwsProvider(serverless, options));
const plugin = new ServerlessGradualTrafficShifting(serverless, options);
plugin.addLambdaTrafficShiftingResources();
expect(serverless.service.provider.compiledCloudFormationTemplate).to.deep.equal(output);
});
});
});
});