mirror of
https://github.com/serverless/serverless.git
synced 2026-01-18 14:58:43 +00:00
94 lines
3.9 KiB
JavaScript
94 lines
3.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 { ServerlessError } = require('../../classes/Error');
|
|
const runServerless = require('../../../tests/utils/run-serverless');
|
|
const isTabCompletionSupported = require('../../utils/tabCompletion/isSupported');
|
|
|
|
BbPromise.promisifyAll(fs);
|
|
|
|
const unexpected = () => {
|
|
throw new Error('Unexpected');
|
|
};
|
|
|
|
describe('Config', () => {
|
|
it('should support "config credentials" command', () =>
|
|
runServerless({
|
|
config: { service: 'foo', provider: 'aws' },
|
|
cliArgs: ['config', 'credentials', '--provider', 'aws', '-k', 'foo', '-s', 'bar'],
|
|
pluginPathsWhitelist: ['./lib/plugins/config/config'],
|
|
lifecycleHookNamesWhitelist: ['before:config:credentials:config'],
|
|
}));
|
|
|
|
it('should have a required option "provider" for the "credentials" sub-command', () =>
|
|
runServerless({
|
|
config: { service: 'foo', provider: 'aws' },
|
|
cliArgs: ['config', 'credentials', '-k', 'foo', '-s', 'bar'],
|
|
pluginPathsWhitelist: ['./lib/plugins/config/config'],
|
|
lifecycleHookNamesWhitelist: ['before:config:credentials:config'],
|
|
}).then(unexpected, error => expect(error).to.be.instanceof(ServerlessError)));
|
|
|
|
it('should throw an error if user passed unsupported "provider" option', () =>
|
|
runServerless({
|
|
config: { service: 'foo', provider: 'aws' },
|
|
cliArgs: ['config', 'credentials', '--provider', 'not-supported', '-k', 'foo', '-s', 'bar'],
|
|
pluginPathsWhitelist: ['./lib/plugins/config/config'],
|
|
lifecycleHookNamesWhitelist: ['before:config:credentials:config'],
|
|
}).then(unexpected, error => expect(error).to.be.instanceof(ServerlessError)));
|
|
|
|
if (isTabCompletionSupported) {
|
|
it('should support "config tabcompletion install" command', () =>
|
|
runServerless({
|
|
cwd: os.homedir(),
|
|
env: { SHELL: 'bash' },
|
|
cliArgs: ['config', 'tabcompletion', 'install'],
|
|
pluginPathsWhitelist: ['./lib/plugins/config/config'],
|
|
lifecycleHookNamesWhitelist: ['config:tabcompletion:install: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'),
|
|
fs.readFileAsync(path.resolve(os.homedir(), '.config/tabtab/slss.bash'), 'utf8'),
|
|
])
|
|
));
|
|
|
|
it('should support "config tabcompletion uninstall" command', () =>
|
|
runServerless({
|
|
cwd: os.homedir(),
|
|
env: { SHELL: 'bash' },
|
|
cliArgs: ['config', 'tabcompletion', 'install'],
|
|
pluginPathsWhitelist: ['./lib/plugins/config/config'],
|
|
lifecycleHookNamesWhitelist: ['config:tabcompletion:install:install'],
|
|
}).then(() =>
|
|
runServerless({
|
|
cwd: os.homedir(),
|
|
env: { SHELL: 'bash' },
|
|
cliArgs: ['config', 'tabcompletion', 'uninstall'],
|
|
pluginPathsWhitelist: ['./lib/plugins/config/config'],
|
|
lifecycleHookNamesWhitelist: ['config:tabcompletion:uninstall: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')),
|
|
fs
|
|
.readFileAsync(path.resolve(os.homedir(), '.config/tabtab/slss.bash'))
|
|
.then(unexpected, error => expect(error.code).to.equal('ENOENT')),
|
|
])
|
|
)
|
|
));
|
|
}
|
|
});
|