109 lines
3.5 KiB
JavaScript

'use strict';
const chai = require('chai');
const proxyquire = require('proxyquire');
const { expect } = chai;
chai.use(require('chai-as-promised'));
describe('test/unit/lib/cli/interactive-setup/utils.test.js', () => {
describe('doesServiceInstanceHaveLinkedProvider', () => {
const configuration = {
app: 'someapp',
service: 'someservice',
org: 'someorg',
};
const options = {};
it('correctly resolves when credentials resolved', async () => {
const { doesServiceInstanceHaveLinkedProvider } = proxyquire(
'../../../../../lib/cli/interactive-setup/utils',
{
'@serverless/dashboard-plugin/lib/resolve-provider-credentials': () => {
return {
accessKeyId: 'someaccess',
secretAccessKey: 'somesecret',
sessionToken: 'sometoken',
};
},
}
);
expect(await doesServiceInstanceHaveLinkedProvider({ configuration, options })).to.be.true;
});
it('correctly resolves when credentials missing', async () => {
const { doesServiceInstanceHaveLinkedProvider } = proxyquire(
'../../../../../lib/cli/interactive-setup/utils',
{
'@serverless/dashboard-plugin/lib/resolve-provider-credentials': () => {
return null;
},
}
);
expect(await doesServiceInstanceHaveLinkedProvider({ configuration, options })).to.be.false;
});
it('throws when credentials resolution results in an error', async () => {
const { doesServiceInstanceHaveLinkedProvider } = proxyquire(
'../../../../../lib/cli/interactive-setup/utils',
{
'@serverless/dashboard-plugin/lib/resolve-provider-credentials': () => {
const err = new Error('Error');
err.statusCode = 500;
throw err;
},
}
);
expect(
doesServiceInstanceHaveLinkedProvider({ configuration, options })
).to.eventually.be.rejected.and.have.property('code', 'DASHBOARD_UNAVAILABLE');
});
});
describe('resolveInitialContext', () => {
it('correctly resolves for service context and dashboard enabled', async () => {
const configuration = {
app: 'someapp',
service: 'someservice',
org: 'someorg',
};
const serviceDir = '/path/to/service/dir';
const { resolveInitialContext } = proxyquire(
'../../../../../lib/cli/interactive-setup/utils',
{
'@serverless/dashboard-plugin/lib/is-authenticated': () => true,
'../../aws/has-local-credentials': () => true,
}
);
expect(resolveInitialContext({ configuration, serviceDir })).to.deep.equal({
hasLocalAwsCredentials: true,
isLoggedIntoDashboard: true,
isConsoleEnabled: false,
isDashboardEnabled: true,
isInServiceContext: true,
});
});
it('correctly resolves without service context', async () => {
const configuration = null;
const serviceDir = null;
const { resolveInitialContext } = proxyquire(
'../../../../../lib/cli/interactive-setup/utils',
{
'@serverless/dashboard-plugin/lib/is-authenticated': () => true,
'../../aws/has-local-credentials': () => true,
}
);
expect(resolveInitialContext({ configuration, serviceDir })).to.deep.equal({
hasLocalAwsCredentials: true,
isLoggedIntoDashboard: true,
isConsoleEnabled: false,
isDashboardEnabled: false,
isInServiceContext: false,
});
});
});
});