mirror of
https://github.com/serverless/serverless.git
synced 2025-12-08 19:46:03 +00:00
142 lines
4.9 KiB
JavaScript
142 lines
4.9 KiB
JavaScript
'use strict';
|
|
|
|
const chai = require('chai');
|
|
chai.use(require('chai-as-promised'));
|
|
const expect = require('chai').expect;
|
|
const sinon = require('sinon');
|
|
const AwsInfo = require('../../../../../../lib/plugins/aws/info/index');
|
|
const AwsProvider = require('../../../../../../lib/plugins/aws/provider');
|
|
const Serverless = require('../../../../../../lib/Serverless');
|
|
|
|
describe('#getResourceCount()', () => {
|
|
let serverless;
|
|
let awsInfo;
|
|
let listStackResourcesStub;
|
|
|
|
beforeEach(() => {
|
|
const options = {
|
|
stage: 'dev',
|
|
region: 'us-east-1',
|
|
};
|
|
serverless = new Serverless();
|
|
serverless.setProvider('aws', new AwsProvider(serverless, options));
|
|
serverless.service.service = 'my-service';
|
|
serverless.service.functions = {
|
|
hello: {},
|
|
world: {},
|
|
};
|
|
awsInfo = new AwsInfo(serverless, options);
|
|
|
|
listStackResourcesStub = sinon.stub(awsInfo.provider, 'request');
|
|
});
|
|
|
|
afterEach(() => {
|
|
awsInfo.provider.request.restore();
|
|
});
|
|
|
|
it('attach resourceCount to this.gatheredData after listStackResources call', () => {
|
|
const listStackResourcesResponse = {
|
|
ResponseMetadata: { RequestId: '81386aed-258b-11e8-b3e8-a937105b7db3' },
|
|
StackResourceSummaries: [
|
|
{
|
|
LogicalResourceId: 'ApiGatewayDeployment1520814106863',
|
|
PhysicalResourceId: 'eoa2a2',
|
|
ResourceType: 'AWS::ApiGateway::Deployment',
|
|
LastUpdatedTimestamp: '2018-03-12T00:22:40.680Z',
|
|
ResourceStatus: 'CREATE_COMPLETE',
|
|
},
|
|
{
|
|
LogicalResourceId: 'ApiGatewayMethodHelloGet',
|
|
PhysicalResourceId: 'hello-ApiGa-11R27BUE48W38',
|
|
ResourceType: 'AWS::ApiGateway::Method',
|
|
LastUpdatedTimestamp: '2018-03-12T00:22:37.478Z',
|
|
ResourceStatus: 'CREATE_COMPLETE',
|
|
},
|
|
{
|
|
LogicalResourceId: 'ApiGatewayResourceHello',
|
|
PhysicalResourceId: 'az5f7l',
|
|
ResourceType: 'AWS::ApiGateway::Resource',
|
|
LastUpdatedTimestamp: '2018-03-12T00:22:22.916Z',
|
|
ResourceStatus: 'CREATE_COMPLETE',
|
|
},
|
|
{
|
|
LogicalResourceId: 'ApiGatewayRestApi',
|
|
PhysicalResourceId: 'n1uk4p7kl0',
|
|
ResourceType: 'AWS::ApiGateway::RestApi',
|
|
LastUpdatedTimestamp: '2018-03-12T00:22:19.768Z',
|
|
ResourceStatus: 'CREATE_COMPLETE',
|
|
},
|
|
{
|
|
LogicalResourceId: 'HelloLambdaFunction',
|
|
PhysicalResourceId: 'hello-world-2-dev-hello',
|
|
ResourceType: 'AWS::Lambda::Function',
|
|
LastUpdatedTimestamp: '2018-03-12T00:22:34.095Z',
|
|
ResourceStatus: 'CREATE_COMPLETE',
|
|
},
|
|
{
|
|
LogicalResourceId: 'HelloLambdaPermissionApiGateway',
|
|
PhysicalResourceId: 'hello-world-2-dev-HelloLambdaPermissionApiGateway-18KKZXJG1DPF5',
|
|
ResourceType: 'AWS::Lambda::Permission',
|
|
LastUpdatedTimestamp: '2018-03-12T00:22:46.950Z',
|
|
ResourceStatus: 'CREATE_COMPLETE',
|
|
},
|
|
{
|
|
LogicalResourceId: 'HelloLambdaVersiongZDaMtQjEhvXacHdpTLnQ61zDCdI2IWVYCbuE50pj8',
|
|
PhysicalResourceId:
|
|
'arn:aws:lambda:us-east-1:111111111:function:hello-world-2-dev-hello:2',
|
|
ResourceType: 'AWS::Lambda::Version',
|
|
LastUpdatedTimestamp: '2018-03-12T00:22:37.256Z',
|
|
ResourceStatus: 'CREATE_COMPLETE',
|
|
},
|
|
{
|
|
LogicalResourceId: 'HelloLogGroup',
|
|
PhysicalResourceId: '/aws/lambda/hello-world-2-dev-hello',
|
|
ResourceType: 'AWS::Logs::LogGroup',
|
|
LastUpdatedTimestamp: '2018-03-12T00:22:20.095Z',
|
|
ResourceStatus: 'CREATE_COMPLETE',
|
|
},
|
|
{
|
|
LogicalResourceId: 'IamRoleLambdaExecution',
|
|
PhysicalResourceId: 'hello-world-2-dev-us-east-1-lambdaRole',
|
|
ResourceType: 'AWS::IAM::Role',
|
|
LastUpdatedTimestamp: '2018-03-12T00:22:30.995Z',
|
|
ResourceStatus: 'CREATE_COMPLETE',
|
|
},
|
|
{
|
|
LogicalResourceId: 'ServerlessDeploymentBucket',
|
|
PhysicalResourceId: 'hello-world-2-dev-serverlessdeploymentbucket-1e3l68m8zaz7i',
|
|
ResourceType: 'AWS::S3::Bucket',
|
|
LastUpdatedTimestamp: '2018-03-12T00:22:11.380Z',
|
|
ResourceStatus: 'CREATE_COMPLETE',
|
|
},
|
|
],
|
|
};
|
|
|
|
listStackResourcesStub.resolves(listStackResourcesResponse);
|
|
|
|
awsInfo.gatheredData = {
|
|
info: {
|
|
functions: [],
|
|
endpoints: [],
|
|
service: '',
|
|
stage: '',
|
|
region: '',
|
|
stack: '',
|
|
},
|
|
outputs: [],
|
|
};
|
|
|
|
return expect(awsInfo.getResourceCount()).to.be.fulfilled.then(() => {
|
|
expect(listStackResourcesStub.calledOnce).to.equal(true);
|
|
expect(
|
|
listStackResourcesStub.calledWithExactly('CloudFormation', 'listStackResources', {
|
|
StackName: awsInfo.provider.naming.getStackName(),
|
|
NextToken: undefined,
|
|
})
|
|
).to.equal(true);
|
|
|
|
expect(awsInfo.gatheredData.info.resourceCount).to.equal(10);
|
|
});
|
|
});
|
|
});
|