Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
[api][test] token managment needs account password as tokens are not …
…sufficient yet
  • Loading branch information
blakmatrix committed Feb 8, 2013
1 parent 49d8198 commit 968035b
Show file tree
Hide file tree
Showing 2 changed files with 70 additions and 38 deletions.
99 changes: 61 additions & 38 deletions lib/jitsu/commands/tokens.js
Expand Up @@ -51,13 +51,21 @@ tokens.destroy = function (username, tokenName, callback) {

jitsu.log.info('Deleting token '+ tokenName.yellow +' for ' + username.magenta);

jitsu.tokens.destroy(username, tokenName,function cb(err, result) {
if(err){
callback(err);
} else {
jitsu.log.info( 'Token '+ tokenName.yellow +' Destroyed!');
callback(null, tokenName);
jitsu.prompt.get([{name:'password', hidden:true}], function(err, result){
if (err) {
jitsu.log.error('Prompt error:');
return callback(err);
}
jitsu.config.set('password', result['password']);
jitsu.tokens.destroy(username, tokenName,function cb(err, result) {
if(err){
callback(err);
} else {
jitsu.config.clear('password');
jitsu.log.info( 'Token '+ tokenName.yellow +' Destroyed!');
callback(null, tokenName);
}
});
});
};

Expand Down Expand Up @@ -96,15 +104,23 @@ tokens.create = function (username, tokenName, callback) {

jitsu.log.info('Creating a token for ' + username.magenta);

jitsu.tokens.create(username, tokenName,function cb(err, result) {
if(err){
callback(err);
} else {
var token = Object.getOwnPropertyNames(result).filter(function(n){return n !== 'operation'}).pop();
jitsu.log.info( 'Token Created: ');
jitsu.log.data( token + ' : ' + result[token]);
callback(null, token, result[token]);
jitsu.prompt.get([{name:'password', hidden:true}], function(err, result){
if (err) {
jitsu.log.error('Prompt error:');
return callback(err);
}
jitsu.config.set('password', result['password']);
jitsu.tokens.create(username, tokenName,function cb(err, result) {
if(err){
callback(err);
} else {
jitsu.config.clear('password');
var token = Object.getOwnPropertyNames(result).filter(function(n){return n !== 'operation'}).pop();
jitsu.log.info( 'Token Created: ');
jitsu.log.data( token + ' : ' + result[token]);
callback(null, token, result[token]);
}
});
});
};

Expand Down Expand Up @@ -138,31 +154,38 @@ tokens.list = function (username, callback) {
}

jitsu.log.info('Listing all tokens for ' + username.magenta);

jitsu.tokens.list(username, function cb(err, result) {
if(err){
callback(err);
} else {
var tokens = result.apiTokens;
if (!tokens || Object.keys(tokens).length === 0) {
jitsu.log.warn('No tokens exist.');
jitsu.log.help('Try creating one with ' + 'jitsu tokens create'.magenta);
return callback();
}

var rows = [['name', 'token']],
colors = ['underline', 'underline'];
Object.getOwnPropertyNames(tokens).sort().forEach(function (tokenName) {

rows.push([
tokenName,
tokens[tokenName]
]);
});

jitsu.inspect.putRows('data', rows, colors);
callback();
jitsu.prompt.get([{name:'password', hidden:true}], function(err, result){
if (err) {
jitsu.log.error('Prompt error:');
return callback(err);
}
jitsu.config.set('password', result['password']);
jitsu.tokens.list(username, function cb(err, result) {
if(err){
callback(err);
} else {
jitsu.config.clear('password');
var tokens = result.apiTokens;
if (!tokens || Object.keys(tokens).length === 0) {
jitsu.log.warn('No tokens exist.');
jitsu.log.help('Try creating one with ' + 'jitsu tokens create'.magenta);
return callback();
}

var rows = [['name', 'token']],
colors = ['underline', 'underline'];
Object.getOwnPropertyNames(tokens).sort().forEach(function (tokenName) {

rows.push([
tokenName,
tokens[tokenName]
]);
});

jitsu.inspect.putRows('data', rows, colors);
callback();
}
});
});

};
Expand Down
9 changes: 9 additions & 0 deletions test/commands/tokens-test.js
Expand Up @@ -20,36 +20,42 @@ var mainDirectory = process.cwd();

vows.describe('jitsu/commands/tokens').addBatch({
'tokens list': shouldNodejitsuOk(function setup () {
jitsu.prompt.override.password = 'EXAMPLE-PASSWORD';
nock('http://api.mockjitsu.com')
.get('/users/tester/tokens')
.reply(200, {"apiTokens":{}}, { 'x-powered-by': 'Nodejitsu' })
})
}).addBatch({
'tokens list adam': shouldNodejitsuOk( function setup () {
jitsu.prompt.override.password = 'EXAMPLE-PASSWORD';
nock('http://api.mockjitsu.com')
.get('/users/adam/tokens')
.reply(200, {"apiTokens":{}}, { 'x-powered-by': 'Nodejitsu' });
})
}).addBatch({
'tokens create': shouldNodejitsuOk( function setup () {
jitsu.prompt.override.password = 'EXAMPLE-PASSWORD';
nock('http://api.mockjitsu.com')
.post('/users/tester/tokens', {})
.reply(201, {"operation":"insert"}, { 'x-powered-by': 'Nodejitsu' });
})
}).addBatch({
'tokens create test-token': shouldNodejitsuOk(function setup () {
jitsu.prompt.override.password = 'EXAMPLE-PASSWORD';
nock('http://api.mockjitsu.com')
.put('/users/tester/tokens/test-token', {})
.reply(201, {"operation":"insert"}, { 'x-powered-by': 'Nodejitsu' });
})
}).addBatch({
'tokens list': shouldNodejitsuOk( function setup () {
jitsu.prompt.override.password = 'EXAMPLE-PASSWORD';
nock('http://api.mockjitsu.com')
.get('/users/tester/tokens')
.reply(200, {"apiTokens":{"test-token":"bbe261ea-aa43-4f6d-a3cf-b971301d459b"}}, { 'x-powered-by': 'Nodejitsu' });
})
}).addBatch({
'tokens destroy test-token': shouldNodejitsuOk(function setup () {
jitsu.prompt.override.password = 'EXAMPLE-PASSWORD';
nock('http://api.mockjitsu.com')
.delete('/users/tester/tokens/test-token', {})
.reply(201, {"ok":true,"id":"test-token"}, { 'x-powered-by': 'Nodejitsu' });
Expand All @@ -62,18 +68,21 @@ vows.describe('jitsu/commands/tokens').addBatch({
})
})*/.addBatch({
'tokens create adam test-token': shouldNodejitsuOk(function setup () {
jitsu.prompt.override.password = 'EXAMPLE-PASSWORD';
nock('http://api.mockjitsu.com')
.put('/users/adam/tokens/test-token', {})
.reply(201, {"operation":"insert"}, { 'x-powered-by': 'Nodejitsu' });
})
}).addBatch({
'tokens list adam': shouldNodejitsuOk( function setup () {
jitsu.prompt.override.password = 'EXAMPLE-PASSWORD';
nock('http://api.mockjitsu.com')
.get('/users/adam/tokens')
.reply(200, {"apiTokens":{"test-token":"bbe261ea-aa43-4f6d-a3cf-b971301d459b"}}, { 'x-powered-by': 'Nodejitsu' });
})
}).addBatch({
'tokens destroy adam test-token': shouldNodejitsuOk(function setup () {
jitsu.prompt.override.password = 'EXAMPLE-PASSWORD';
nock('http://api.mockjitsu.com')
.delete('/users/adam/tokens/test-token', {})
.reply(201, {"ok":true,"id":"test-token"}, { 'x-powered-by': 'Nodejitsu' });
Expand Down

0 comments on commit 968035b

Please sign in to comment.