mirror of
https://github.com/serverless/serverless.git
synced 2025-12-08 19:46:03 +00:00
109 lines
3.5 KiB
JavaScript
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,
|
|
});
|
|
});
|
|
});
|
|
});
|