mirror of
https://github.com/serverless/serverless.git
synced 2025-12-08 19:46:03 +00:00
126 lines
2.9 KiB
JavaScript
126 lines
2.9 KiB
JavaScript
'use strict';
|
|
|
|
const expect = require('chai').expect;
|
|
const sinon = require('sinon');
|
|
const AwsInfo = require('./index');
|
|
const AwsProvider = require('../provider/awsProvider');
|
|
const Serverless = require('../../../Serverless');
|
|
|
|
describe('#getApiKeyValues()', () => {
|
|
let serverless;
|
|
let awsInfo;
|
|
let requestStub;
|
|
|
|
beforeEach(() => {
|
|
serverless = new Serverless();
|
|
serverless.setProvider('aws', new AwsProvider(serverless));
|
|
serverless.service.service = 'my-service';
|
|
const options = {
|
|
stage: 'dev',
|
|
region: 'us-east-1',
|
|
};
|
|
awsInfo = new AwsInfo(serverless, options);
|
|
requestStub = sinon.stub(awsInfo.provider, 'request');
|
|
});
|
|
|
|
afterEach(() => {
|
|
awsInfo.provider.request.restore();
|
|
});
|
|
|
|
it('should add API Key values to this.gatheredData if API key names are available', () => {
|
|
// set the API Keys for the service
|
|
awsInfo.serverless.service.provider.apiKeys = ['foo', 'bar'];
|
|
|
|
awsInfo.gatheredData = {
|
|
info: {},
|
|
};
|
|
|
|
const apiKeyItems = {
|
|
items: [
|
|
{
|
|
id: '4711',
|
|
name: 'SomeRandomIdInUsersAccount',
|
|
value: 'ShouldNotBeConsidered',
|
|
},
|
|
{
|
|
id: '1234',
|
|
name: 'foo',
|
|
value: 'valueForKeyFoo',
|
|
},
|
|
{
|
|
id: '5678',
|
|
name: 'bar',
|
|
value: 'valueForKeyBar',
|
|
},
|
|
],
|
|
};
|
|
|
|
requestStub.resolves(apiKeyItems);
|
|
|
|
const expectedGatheredDataObj = {
|
|
info: {
|
|
apiKeys: [
|
|
{
|
|
name: 'foo',
|
|
value: 'valueForKeyFoo',
|
|
},
|
|
{
|
|
name: 'bar',
|
|
value: 'valueForKeyBar',
|
|
},
|
|
],
|
|
},
|
|
};
|
|
|
|
return awsInfo.getApiKeyValues().then(() => {
|
|
expect(requestStub.calledOnce).to.equal(true);
|
|
expect(awsInfo.gatheredData).to.deep.equal(expectedGatheredDataObj);
|
|
});
|
|
});
|
|
|
|
it('should resolve if AWS does not return API key values', () => {
|
|
// set the API Keys for the service
|
|
awsInfo.serverless.service.provider.apiKeys = ['foo', 'bar'];
|
|
|
|
awsInfo.gatheredData = {
|
|
info: {},
|
|
};
|
|
|
|
const apiKeyItems = {
|
|
items: [],
|
|
};
|
|
|
|
requestStub.resolves(apiKeyItems);
|
|
|
|
const expectedGatheredDataObj = {
|
|
info: {
|
|
apiKeys: [],
|
|
},
|
|
};
|
|
|
|
return awsInfo.getApiKeyValues().then(() => {
|
|
expect(requestStub.calledOnce).to.equal(true);
|
|
expect(awsInfo.gatheredData).to.deep.equal(expectedGatheredDataObj);
|
|
});
|
|
});
|
|
|
|
it('should resolve if API key names are not available', () => {
|
|
awsInfo.serverless.service.provider.apiKeys = null;
|
|
|
|
awsInfo.gatheredData = {
|
|
info: {},
|
|
};
|
|
|
|
const expectedGatheredDataObj = {
|
|
info: {
|
|
apiKeys: [],
|
|
},
|
|
};
|
|
|
|
return awsInfo.getApiKeyValues().then(() => {
|
|
expect(requestStub.calledOnce).to.equal(false);
|
|
expect(awsInfo.gatheredData).to.deep.equal(expectedGatheredDataObj);
|
|
});
|
|
});
|
|
});
|