This repository has been archived on 2020-01-20. You can view files and clone it, but cannot push or open issues or pull requests.
node-spearhead/test/integration/cli-subcommands.test.js

127 lines
3.5 KiB
JavaScript

/*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
/*
* Copyright (c) 2015, Joyent, Inc.
*/
/*
* Test subcommands existence and usage
*/
var f = require('util').format;
var h = require('./helpers');
var test = require('tape');
var common = require('../../lib/common');
var subs = [
['info'],
['profile'],
['profile list', 'profile ls', 'profiles'],
['profile get'],
['profile set-current'],
['profile create'],
['profile edit'],
['profile delete', 'profile rm'],
['account', 'whoami'],
['services'],
['datacenters'],
['instance', 'inst'],
['instance list', 'instance ls', 'instances', 'insts', 'ls'],
['instance get'],
['instance create', 'create'],
['instance audit'],
['start-instance', 'start'],
['stop-instance', 'stop'],
['reboot-instance', 'reboot'],
['delete-instance', 'delete'],
['wait-instance', 'wait'],
['ssh'],
['networks'],
['network'],
['key'],
['key add'],
['key list', 'key ls', 'keys'],
['key get'],
['key delete', 'key rm'],
['image', 'img'],
['image get'],
['image list', 'images', 'imgs'],
['package', 'pkg'],
['package get'],
['package list', 'packages', 'pkgs'],
['rbac'],
['rbac info'],
['rbac apply'],
['rbac users'],
['rbac user'],
['rbac keys'],
['rbac key'],
['rbac policies'],
['rbac policy'],
['rbac roles'],
['rbac role'],
['rbac instance-role-tags'],
['rbac image-role-tags'],
['rbac network-role-tags'],
['rbac package-role-tags'],
['rbac role-tags']
];
// --- Tests
test('triton subcommands', function (ttt) {
// loop each sub command group
subs.forEach(function (subcmds) {
ttt.test(f(' [%s]', subcmds), function (tt) {
var out = [];
// loop each individual subcommand to test
// triton help <subcmd>
// triton <subcmd> -h
subcmds.forEach(function (subcmd) {
var helpArgs = subcmd.split(' ');
helpArgs.splice(helpArgs.length - 1, 0, 'help');
tt.test(f(' triton %s', helpArgs.join(' ')), function (t) {
h.triton(helpArgs, function (err, stdout, stderr) {
if (h.ifErr(t, err, 'no error'))
return t.end();
t.equal(stderr, '', 'stderr produced');
t.notEqual(stdout, '', 'stdout empty');
out.push(stdout);
t.end();
});
});
var flagArgs = subcmd.split(' ').concat('-h');
tt.test(f(' triton %s', flagArgs.join(' ')), function (t) {
h.triton(flagArgs, function (err, stdout, stderr) {
if (h.ifErr(t, err, 'no error'))
return t.end();
t.equal(stderr, '', 'stderr produced');
t.notEqual(stdout, '', 'stdout empty');
out.push(stdout);
t.end();
});
});
});
// ensure all stdout output is the same
out.forEach(function (stdout) {
tt.equal(stdout, out[0], 'stdout mismatch');
});
tt.end();
});
});
ttt.end();
});