41b5c506ce
Reviewed by: Brian Bennett <brian.bennett@joyent.com>
101 lines
3.0 KiB
JavaScript
101 lines
3.0 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.
|
|
*/
|
|
|
|
/*
|
|
* Integration tests for `triton key ...`
|
|
*/
|
|
|
|
var h = require('./helpers');
|
|
var test = require('tape');
|
|
var backoff = require('backoff');
|
|
|
|
|
|
|
|
// --- Globals
|
|
|
|
var KEY_PATH = __dirname + '/data/id_rsa.pub';
|
|
var KEY_SIG = '66:ca:1c:09:75:99:35:69:be:91:08:25:03:c0:17:c0';
|
|
var KEY_EMAIL = 'test@localhost.local';
|
|
var KEY_NAME = 'nodetritontest-key1';
|
|
var MAX_CHECK_KEY_TRIES = 10;
|
|
|
|
// --- Tests
|
|
|
|
test('triton key', function (tt) {
|
|
tt.test(' triton key add', function (t) {
|
|
var cmd = 'key add -n ' + KEY_NAME + ' ' + KEY_PATH;
|
|
h.triton(cmd, function (err, stdout, stderr) {
|
|
if (h.ifErr(t, err, 'triton key add'))
|
|
return t.end();
|
|
|
|
t.equal(stdout, 'Added key "' + KEY_NAME + '" (' + KEY_SIG + ')\n');
|
|
t.end();
|
|
});
|
|
});
|
|
|
|
tt.test(' triton key get', function (t) {
|
|
h.triton('key get ' + KEY_SIG, function (err, stdout, stderr) {
|
|
if (h.ifErr(t, err, 'triton key get'))
|
|
return t.end();
|
|
|
|
t.ok(stdout.match(KEY_EMAIL), 'test key email present');
|
|
t.end();
|
|
});
|
|
});
|
|
|
|
tt.test(' triton key list', function (t) {
|
|
h.triton('key list', function (err, stdout, stderr) {
|
|
if (h.ifErr(t, err, 'triton key list'))
|
|
return t.end();
|
|
|
|
var keys = stdout.split('\n');
|
|
t.ok(keys[0].match('FINGERPRINT'));
|
|
keys.shift();
|
|
|
|
// there should always be at least two keys -- the original
|
|
// account's key, and the test key these tests added
|
|
t.ok(keys.length > 2, 'triton key list expected key num');
|
|
|
|
var testKeys = keys.filter(function (key) {
|
|
return key.match(KEY_NAME);
|
|
});
|
|
|
|
// this test is a tad dodgy, since it's plausible that there might
|
|
// be other test keys with different signatures lying around
|
|
t.equal(testKeys.length, 1, 'triton key list test key found');
|
|
|
|
t.end();
|
|
});
|
|
});
|
|
|
|
tt.test(' triton key delete', function (t) {
|
|
var cmd = 'key delete ' + KEY_SIG + ' --yes';
|
|
h.triton(cmd, function (err, stdout, stderr) {
|
|
if (h.ifErr(t, err, 'triton key delete'))
|
|
return t.end();
|
|
|
|
t.ok(stdout.match('Deleted key "' + KEY_SIG + '"'), 'key deleted');
|
|
|
|
// verify key is gone, which sometimes takes a while
|
|
var call = backoff.call(function checkKey(next) {
|
|
h.triton('key get ' + KEY_SIG, function (err2) {
|
|
next(!err2);
|
|
});
|
|
}, function (err3) {
|
|
h.ifErr(t, err3, 'triton key delete did not remove key');
|
|
t.end();
|
|
});
|
|
|
|
call.failAfter(MAX_CHECK_KEY_TRIES);
|
|
call.start();
|
|
});
|
|
});
|
|
});
|