serverless/test/unit/lib/plugins/config.test.js
2021-04-09 16:10:21 +02:00

88 lines
2.9 KiB
JavaScript

'use strict';
const fs = require('fs');
const path = require('path');
const os = require('os');
const BbPromise = require('bluebird');
const { expect } = require('chai');
const config = require('@serverless/utils/config');
const runServerless = require('../../../utils/run-serverless');
const isTabCompletionSupported = require('../../../../lib/utils/tabCompletion/isSupported');
BbPromise.promisifyAll(fs);
const unexpected = () => {
throw new Error('Unexpected');
};
describe('Config', () => {
it('should support "config credentials" command', () =>
runServerless({
noService: true,
command: 'config credentials',
options: { provider: 'aws', key: 'foo', secret: 'bar' },
}));
if (isTabCompletionSupported) {
it('should support "config tabcompletion install" command', () =>
runServerless({
cwd: os.homedir(),
env: { SHELL: 'bash' },
command: 'config tabcompletion install',
}).then(() =>
Promise.all([
fs
.readFileAsync(path.resolve(os.homedir(), '.bashrc'), 'utf8')
.then((bashRcContent) =>
expect(bashRcContent).to.include(' ~/.config/tabtab/__tabtab.bash')
),
fs.readFileAsync(path.resolve(os.homedir(), '.config/tabtab/serverless.bash'), 'utf8'),
fs.readFileAsync(path.resolve(os.homedir(), '.config/tabtab/sls.bash'), 'utf8'),
])
));
it('should support "config tabcompletion uninstall" command', () =>
runServerless({
cwd: os.homedir(),
env: { SHELL: 'bash' },
command: 'config tabcompletion install',
}).then(() =>
runServerless({
cwd: os.homedir(),
env: { SHELL: 'bash' },
command: 'config tabcompletion uninstall',
}).then(() =>
Promise.all([
fs
.readFileAsync(path.resolve(os.homedir(), '.config/tabtab/serverless.bash'))
.then(unexpected, (error) => expect(error.code).to.equal('ENOENT')),
fs
.readFileAsync(path.resolve(os.homedir(), '.config/tabtab/sls.bash'))
.then(unexpected, (error) => expect(error.code).to.equal('ENOENT')),
])
)
));
}
it('should turn on autoupdate with "--autoupdate"', async () => {
await runServerless({
cwd: require('os').homedir(),
command: 'config',
options: { autoupdate: true },
modulesCacheStub: {
'./lib/utils/npmPackage/isGlobal.js': async () => true,
'./lib/utils/npmPackage/isWritable.js': async () => true,
},
});
expect(config.get('autoUpdate.enabled')).to.be.true;
});
it('should turn off autoupdate with "--no-autoupdate"', async () => {
await runServerless({
cwd: __dirname,
command: 'config',
options: { autoupdate: false },
});
expect(config.get('autoUpdate.enabled')).to.be.false;
});
});