serverless
Version:
Serverless Framework - Build web, mobile and IoT applications with serverless architectures using AWS Lambda, Azure Functions, Google CloudFunctions & more
114 lines (100 loc) • 4.15 kB
JavaScript
;
const expect = require('chai').expect;
const sinon = require('sinon');
const AwsProvider = require('../../../../provider/awsProvider');
const AwsCompileWebsocketsEvents = require('./index');
const Serverless = require('../../../../../../Serverless');
describe('AwsCompileWebsocketsEvents', () => {
let awsCompileWebsocketsEvents;
beforeEach(() => {
const serverless = new Serverless();
serverless.service.environment = {
vars: {},
stages: {
dev: {
vars: {},
regions: {
'us-east-1': {
vars: {},
},
},
},
},
};
const options = {
stage: 'dev',
region: 'us-east-1',
};
serverless.setProvider('aws', new AwsProvider(serverless, options));
awsCompileWebsocketsEvents = new AwsCompileWebsocketsEvents(serverless, options);
});
describe('#constructor()', () => {
let compileApiStub;
let compileIntegrationsStub;
let compileAuthorizersStub;
let compilePermissionsStub;
let compileRoutesStub;
let compileDeploymentStub;
let compileStageStub;
beforeEach(() => {
compileApiStub = sinon.stub(awsCompileWebsocketsEvents, 'compileApi').resolves();
compileIntegrationsStub = sinon
.stub(awsCompileWebsocketsEvents, 'compileIntegrations')
.resolves();
compileAuthorizersStub = sinon
.stub(awsCompileWebsocketsEvents, 'compileAuthorizers')
.resolves();
compilePermissionsStub = sinon
.stub(awsCompileWebsocketsEvents, 'compilePermissions')
.resolves();
compileRoutesStub = sinon.stub(awsCompileWebsocketsEvents, 'compileRoutes').resolves();
compileDeploymentStub = sinon
.stub(awsCompileWebsocketsEvents, 'compileDeployment')
.resolves();
compileStageStub = sinon.stub(awsCompileWebsocketsEvents, 'compileStage').resolves();
});
afterEach(() => {
awsCompileWebsocketsEvents.compileApi.restore();
awsCompileWebsocketsEvents.compileIntegrations.restore();
awsCompileWebsocketsEvents.compileAuthorizers.restore();
awsCompileWebsocketsEvents.compilePermissions.restore();
awsCompileWebsocketsEvents.compileRoutes.restore();
awsCompileWebsocketsEvents.compileDeployment.restore();
awsCompileWebsocketsEvents.compileStage.restore();
});
it('should have hooks', () => expect(awsCompileWebsocketsEvents.hooks).to.be.not.empty);
it('should set the provider variable to be an instanceof AwsProvider', () =>
expect(awsCompileWebsocketsEvents.provider).to.be.instanceof(AwsProvider));
describe('"package:compileEvents" promise chain', () => {
afterEach(() => {
awsCompileWebsocketsEvents.validate.restore();
});
it('should run the promise chain in order', () => {
const validateStub = sinon.stub(awsCompileWebsocketsEvents, 'validate').returns({
events: [
{
functionName: 'first',
websocket: {
route: 'echo',
},
},
],
});
return awsCompileWebsocketsEvents.hooks['package:compileEvents']().then(() => {
expect(validateStub.calledOnce).to.be.equal(true);
expect(compileApiStub.calledAfter(validateStub)).to.be.equal(true);
expect(compileIntegrationsStub.calledAfter(compileApiStub)).to.be.equal(true);
expect(compileAuthorizersStub.calledAfter(compileIntegrationsStub)).to.be.equal(true);
expect(compilePermissionsStub.calledAfter(compileAuthorizersStub)).to.be.equal(true);
expect(compileRoutesStub.calledAfter(compilePermissionsStub)).to.be.equal(true);
expect(compileStageStub.calledAfter(compileRoutesStub)).to.be.equal(true);
expect(compileDeploymentStub.calledAfter(compileStageStub)).to.be.equal(true);
});
});
});
it('should resolve if no functions are given', () => {
awsCompileWebsocketsEvents.serverless.service.functions = {};
return awsCompileWebsocketsEvents.hooks['package:compileEvents']();
});
});
});