fh-fhc
Version:
A Command Line Interface for FeedHenry
517 lines (510 loc) • 17.3 kB
JavaScript
var assert = require('assert');
var genericCommand = require('genericCommand');
var commands = {
create: genericCommand(require('cmd/fh3/admin/users/create')),
delete : genericCommand(require('cmd/fh3/admin/users/delete')),
update : genericCommand(require('cmd/fh3/admin/users/update')),
changeroles : genericCommand(require('cmd/fh3/admin/users/changeroles')),
changeauthpolicies : genericCommand(require('cmd/fh3/admin/users/changeauthpolicies')),
disable : genericCommand(require('cmd/fh3/admin/users/disable')),
enable : genericCommand(require('cmd/fh3/admin/users/enable')),
list: genericCommand(require('cmd/fh3/admin/users/list')),
read: genericCommand(require('cmd/fh3/admin/users/read')),
listinstallapps: genericCommand(require('cmd/fh3/admin/users/listinstallapps')),
listdevices: genericCommand(require('cmd/fh3/admin/users/listdevices'))
};
var dataList = {
"count": 2,
"list": [
{
"fields": {
"activated": true,
"blacklisted": false,
"businessObject": "cluster/reseller/user",
"defaultDomain": "",
"email": "feedhenry-qa.radm@example.com",
"enabled": true,
"lastLogin": "2017-08-14 15:36:52",
"name": "FeedHenry QA Reseller Administrator",
"parentEntity": "ResellerImpl:t-ub7fDklyz-gwe3oL5DPupH:FeedHenry QA",
"prefs": {
"accountType": "enterprise",
"studio.version": "beta",
"viewType": "table"
},
"reseller": "t-ub7fDklyz-gwe3oL5DPupH",
"subscriber": "qY3_MkX4dT4iCtZ3lz4BSpVD",
"sysCreated": "2014-10-22 12:10:30:015",
"sysGroupFlags": 65567,
"sysGroupList": "",
"sysModified": "2017-08-14 15:36:52:417",
"sysShardPoint": 1738610918,
"sysVersion": 946,
"tenant": "",
"username": "feedhenry-qa.radm@example.com"
},
"guid": "Ou3Nt_FRP9cw1ATChbvz57Qv",
"type": "ten_User"
},
{
"fields": {
"activated": true,
"blacklisted": false,
"businessObject": "cluster/reseller/user",
"defaultDomain": "",
"email": "conor.oneill@feedhenry.com",
"enabled": true,
"lastLogin": "2015-02-12 15:26:37",
"name": "Conor O'Neill",
"parentEntity": "ResellerImpl:t-ub7fDklyz-gwe3oL5DPupH:FeedHenry QA",
"prefs": {
"accountType": "enterprise",
"studio.version": "beta",
"viewType": "grid"
},
"reseller": "t-ub7fDklyz-gwe3oL5DPupH",
"subscriber": "VWsAeCoROuZreClLXKar-fcZ",
"sysCreated": "2014-11-13 12:18:45:073",
"sysGroupFlags": 65759,
"sysGroupList": "",
"sysModified": "2017-08-01 09:57:53:058",
"sysShardPoint": 1930711925,
"sysVersion": 599,
"tenant": "",
"username": "conor.oneill@feedhenry.com"
},
"guid": "RlGISR7slmW_xZ5iR4D1Y1di",
"type": "ten_User"
}
],
"status": "ok"
};
var data = {
"fhaaa.authorisation.enabled": "true",
"fields": {
"activated": true,
"authpolicies": [
"bpkyt5cq63xd3pzrqgeaebzj",
"6i2gzbdgba34e4lzjit2kxsm"
],
"blacklisted": false,
"businessObject": "cluster/reseller/customer/user",
"customerRoles": [
"sub"
],
"defaultDomain": "",
"email": "ndonnell@redhat.com",
"enabled": true,
"fhaaa.authorisation.enabled": true,
"groups": [],
"hierarchy": {
"cluster": "sam1-core",
"cluster/reseller": "t-ub7fDklyz-gwe3oL5DPupH",
"cluster/reseller/customer": "44WKNggefW9N0ggTtqN2SFuF",
"cluster/reseller/customer/user": "25zmxbt3ky2oytmda6uqcuql"
},
"lastLogin": "2017-05-18 11:28:35",
"name": "ndonnell@redhat.com",
"parentEntity": "TenantImpl:44WKNggefW9N0ggTtqN2SFuF:FeedHenry Support~support",
"permissions": [
"cluster/reseller/customer/domain/project/cloud-apps/endpoint:write",
],
"prefs": {
"accountType": "enterprise",
"studio.version": "beta",
"viewType": "grid"
},
"reseller": "t-ub7fDklyz-gwe3oL5DPupH",
"resellerRoles": [
"sub"
],
"roles": [
"sub"
],
"storeItemGroups": [],
"sub": "pwnqxudinlfdauwnzusa22r2",
"subscriber": "pwnqxudinlfdauwnzusa22r2",
"sysCreated": "2017-05-18 11:19:05:966",
"sysGroupFlags": 65567,
"sysGroupList": "",
"sysModified": "2017-08-20 09:19:25:578",
"sysShardPoint": 3614624646,
"sysVersion": 16,
"teams": [
{
"_id": "54eefb18faca1f0f7e58b031",
"business-objects": {
"cluster": [
"sam1-core"
],
"cluster/reseller": [
"t-ub7fDklyz-gwe3oL5DPupH"
],
"cluster/reseller/customer": [
"44WKNggefW9N0ggTtqN2SFuF"
],
"cluster/reseller/customer/domain": [
"FoaFm98S9y_7NpNPuNjLVc-3"
]
},
"code": "default-support-write",
"defaultTeam": true,
"desc": null,
"explain": "",
"name": "Write Team (support domain)",
"perms": {
"cluster/reseller/customer/domain": "write",
"cluster/reseller/customer/domain/admin/environment": "write"
},
"users": [
"lqd6q6lyo4y4yxc7qrjdpoye",
"byvdubqw5vn54g5jxglnci5n",
"47ut4zmkuzqbcx3wdcw4soai",
"77ismzv4ktidytj777irdawv",
"npmuu3huf6nmo6q6ylr33qex",
"6fdbo2qvuojjwbzgegy5f4y6",
"6yagczdkhyq5ghn5nwymn7r5",
"uvszze4b55mpju5l5vk7vkuf",
"efztzkmbuynwdd6ekfkt4ruh",
"5gyq2xy3nz74fbxty46fioaw",
"5zvpw7wjrcf2yem2byxztald",
"pst5mgv47z66dupz6x2y3zpb",
"tosnjfxfuvqf5t4dqk7gzrlo",
"tz6m2zan4nl5rlw5m4hmo4fp",
"25zmxbt3ky2oytmda6uqcuql"
]
},
{
"_id": "54eefb175afd8f2a5b44bf25",
"business-objects": {
"cluster": [
"sam1-core"
],
"cluster/reseller": [
"t-ub7fDklyz-gwe3oL5DPupH"
],
"cluster/reseller/customer": [
"44WKNggefW9N0ggTtqN2SFuF"
]
},
"code": "default-44WKNggefW9N0ggTtqN2SFuF-write",
"defaultTeam": true,
"desc": null,
"explain": "",
"name": "Write Team (FeedHenry Support customer)",
"perms": {
"cluster/reseller/customer": "write",
"cluster/reseller/customer/domain/admin/environment": "write"
},
"users": [
"kGMJwxOu3bLTlytwL2psiT7P",
"lqd6q6lyo4y4yxc7qrjdpoye",
"77ismzv4ktidytj777irdawv",
"wk63pwuys7bsf6vy6lieavb2",
"gel5oxoafjy5l4r5yc2hf3nk",
"uvszze4b55mpju5l5vk7vkuf",
"5gyq2xy3nz74fbxty46fioaw",
"tz6m2zan4nl5rlw5m4hmo4fp",
"25zmxbt3ky2oytmda6uqcuql"
]
}
],
"tenant": "44WKNggefW9N0ggTtqN2SFuF",
"username": "ndonnell@redhat.com"
},
"guid": "25zmxbt3ky2oytmda6uqcuql",
"status": "ok",
"teams": [
{
"_id": "54eefb18faca1f0f7e58b031",
"business-objects": {
"cluster": [
"sam1-core"
],
"cluster/reseller": [
"t-ub7fDklyz-gwe3oL5DPupH"
],
"cluster/reseller/customer": [
"44WKNggefW9N0ggTtqN2SFuF"
],
"cluster/reseller/customer/domain": [
"FoaFm98S9y_7NpNPuNjLVc-3"
]
},
"code": "default-support-write",
"defaultTeam": true,
"desc": null,
"explain": "",
"name": "Write Team (support domain)",
"perms": {
"cluster/reseller/customer/domain": "write",
"cluster/reseller/customer/domain/admin/environment": "write"
},
"users": [
"lqd6q6lyo4y4yxc7qrjdpoye",
"byvdubqw5vn54g5jxglnci5n",
"47ut4zmkuzqbcx3wdcw4soai",
"77ismzv4ktidytj777irdawv",
"npmuu3huf6nmo6q6ylr33qex",
"6fdbo2qvuojjwbzgegy5f4y6",
"6yagczdkhyq5ghn5nwymn7r5",
"uvszze4b55mpju5l5vk7vkuf",
"efztzkmbuynwdd6ekfkt4ruh",
"5gyq2xy3nz74fbxty46fioaw",
"5zvpw7wjrcf2yem2byxztald",
"pst5mgv47z66dupz6x2y3zpb",
"tosnjfxfuvqf5t4dqk7gzrlo",
"tz6m2zan4nl5rlw5m4hmo4fp",
"25zmxbt3ky2oytmda6uqcuql"
]
},
{
"_id": "54eefb175afd8f2a5b44bf25",
"business-objects": {
"cluster": [
"sam1-core"
],
"cluster/reseller": [
"t-ub7fDklyz-gwe3oL5DPupH"
],
"cluster/reseller/customer": [
"44WKNggefW9N0ggTtqN2SFuF"
]
},
"code": "default-44WKNggefW9N0ggTtqN2SFuF-write",
"defaultTeam": true,
"desc": null,
"explain": "",
"name": "Write Team (FeedHenry Support customer)",
"perms": {
"cluster/reseller/customer": "write",
"cluster/reseller/customer/domain/admin/environment": "write"
},
"users": [
"kGMJwxOu3bLTlytwL2psiT7P",
"lqd6q6lyo4y4yxc7qrjdpoye",
"77ismzv4ktidytj777irdawv",
"wk63pwuys7bsf6vy6lieavb2",
"gel5oxoafjy5l4r5yc2hf3nk",
"uvszze4b55mpju5l5vk7vkuf",
"5gyq2xy3nz74fbxty46fioaw",
"tz6m2zan4nl5rlw5m4hmo4fp",
"25zmxbt3ky2oytmda6uqcuql"
]
}
],
"type": "ten_User"
};
var nock = require('nock');
module.exports = nock('https://apps.feedhenry.com')
.get('/box/srv/1.1/admin/user/list')
.times(2)
.reply(200, dataList)
.post('/box/srv/1.1/admin/user/create')
.reply(200, {
"status": "ok",
"username": "newuser"
})
.post('/box/srv/1.1/admin/user/delete')
.reply(200, data)
.post('/box/srv/1.1/admin/user/listdevices')
.reply(200, {})
.post('/box/srv/1.1/admin/user/liststoreitems')
.reply(200, {})
.post('/box/srv/1.1/admin/user/update')
.times(10)
.reply(200, data)
.post('/box/srv/1.1/admin/user/read')
.times(2)
.reply(200, data)
.post('/box/srv/1.1/admin/user/import')
.reply(200, {"cachekey":"9efe2a98a56eb8e05a5ad09d7bd5213c","status":"ok"});
module.exports = {
'test admin users list': function(cb) {
commands.list({}, function(err, data) {
assert.equal(err, null);
assert(data);
var table = data._table;
assert.equal(table['0'][0], 'Ou3Nt_FRP9cw1ATChbvz57Qv');
assert.equal(table['0'][1], 'feedhenry-qa.radm@example.com');
assert.equal(table['0'][2], 'feedhenry-qa.radm@example.com');
assert.equal(table['0'][3], 'Yes');
assert.equal(table['0'][4], 'Yes');
assert.equal(table['0'][5], 'No');
return cb();
});
},
'test admin users list --json': function(cb) {
commands.list({json:true}, function(err, data) {
assert.equal(err, null);
assert(data);
assert(!data._table, "Data table is not Expected");
return cb();
});
},
'test admin users read --json': function(cb) {
commands.read({json:true}, function(err, data) {
assert.equal(err, null);
assert(data);
assert(!data._table, "Data table is not Expected");
return cb();
});
},
'test admin users read': function(cb) {
commands.read({}, function(err, data) {
assert.equal(err, null);
assert(data);
var table = data._table;
assert.equal(table['0'][0], '25zmxbt3ky2oytmda6uqcuql');
assert.equal(table['0'][1], 'ndonnell@redhat.com');
assert.equal(table['0'][2], 'ndonnell@redhat.com');
assert.equal(table['0'][3], 'Yes');
assert.equal(table['0'][4], 'Yes');
assert.equal(table['0'][5], 'No');
return cb();
});
},
'test admin users create --username --email --json': function(cb) {
commands.create({username:'newuser', email:'newuser@redhat.com',json:true}, function(err, data) {
assert.equal(err, null);
assert(data);
assert.equal(data.status, 'ok');
assert(!data._table, "Data table is not Expected");
return cb();
});
},
'test admin users delete --username --json': function(cb) {
commands.delete({username:'ndonnell@redhat.com',json:true}, function(err, data) {
assert.equal(err, null);
assert(!data._table, "Data table is not Expected");
return cb();
});
},
'test admin users update --username --email': function(cb) {
commands.update({username:'ndonnell@redhat.com', email:'ndonnell@redhat.com'}, function(err, data) {
assert.equal(err, null);
assert(data);
var table = data._table;
assert.equal(table['0'][0], '25zmxbt3ky2oytmda6uqcuql');
assert.equal(table['0'][1], 'ndonnell@redhat.com');
assert.equal(table['0'][2], 'ndonnell@redhat.com');
assert.equal(table['0'][3], 'Yes');
assert.equal(table['0'][4], 'Yes');
assert.equal(table['0'][5], 'No');
return cb();
});
},
'test admin users update --username --email --json': function(cb) {
commands.update({username:'ndonnell@redhat.com', email:'ndonnell@redhat.com', json:true}, function(err, data) {
assert.equal(err, null);
assert(data);
assert.equal(data.status, 'ok');
assert(!data._table, "Data table is not Expected");
return cb();
});
},
'test admin users changeroles --username --roles': function(cb) {
commands.changeroles({username:'ndonnell@redhat.com', roles:'sub'}, function(err, data) {
assert.equal(err, null);
assert(data);
var table = data._table;
assert.equal(table['0'][0], '25zmxbt3ky2oytmda6uqcuql');
assert.equal(table['0'][1], 'ndonnell@redhat.com');
assert.equal(table['0'][2], 'ndonnell@redhat.com');
assert.equal(table['0'][3], 'Yes');
assert.equal(table['0'][4], 'Yes');
assert.equal(table['0'][5], 'No');
return cb();
});
},
'test admin users changeroles --username --roles --json': function(cb) {
commands.changeroles({username:'ndonnell@redhat.com', roles:'sub',json:true}, function(err, data) {
assert.equal(err, null);
assert(data);
assert.equal(data.status, 'ok');
assert(!data._table, "Data table is not Expected");
return cb();
});
},
'test admin users changeauthpolicies --username --authpolicies': function(cb) {
commands.changeauthpolicies({username:'ndonnell@redhat.com', authpolicies:'authpolicies'}, function(err, data) {
assert.equal(err, null);
assert(data);
var table = data._table;
assert.equal(table['0'][0], '25zmxbt3ky2oytmda6uqcuql');
assert.equal(table['0'][1], 'ndonnell@redhat.com');
assert.equal(table['0'][2], 'ndonnell@redhat.com');
assert.equal(table['0'][3], 'Yes');
assert.equal(table['0'][4], 'Yes');
assert.equal(table['0'][5], 'No');
return cb();
});
},
'test admin users changeauthpolicies --username --authpolicies --json': function(cb) {
commands.changeauthpolicies({username:'ndonnell@redhat.com', authpolicies:'authpolicies',json:true}, function(err, data) {
assert.equal(err, null);
assert(data);
assert.equal(data.status, 'ok');
assert(!data._table, "Data table is not Expected");
return cb();
});
},
'test admin users enable --username ': function(cb) {
commands.enable({username:'ndonnell@redhat.com'}, function(err, data) {
assert.equal(err, null);
assert(data);
var table = data._table;
assert.equal(table['0'][0], '25zmxbt3ky2oytmda6uqcuql');
assert.equal(table['0'][1], 'ndonnell@redhat.com');
assert.equal(table['0'][2], 'ndonnell@redhat.com');
assert.equal(table['0'][3], 'Yes');
assert.equal(table['0'][4], 'Yes');
assert.equal(table['0'][5], 'No');
return cb();
});
},
'test admin users enable --username --json': function(cb) {
commands.enable({username:'ndonnell@redhat.com',json:true}, function(err, data) {
assert.equal(err, null);
assert(data);
assert.equal(data.status, 'ok');
assert(!data._table, "Data table is not Expected");
return cb();
});
},
'test admin users disable --username ': function(cb) {
commands.enable({username:'ndonnell@redhat.com'}, function(err, data) {
assert.equal(err, null);
assert(data);
var table = data._table;
assert.equal(table['0'][0], '25zmxbt3ky2oytmda6uqcuql');
assert.equal(table['0'][1], 'ndonnell@redhat.com');
assert.equal(table['0'][2], 'ndonnell@redhat.com');
assert.equal(table['0'][3], 'Yes');
assert.equal(table['0'][4], 'Yes');
assert.equal(table['0'][5], 'No');
return cb();
});
},
'test admin users disable --username --json': function(cb) {
commands.enable({username:'ndonnell@redhat.com',json:true}, function(err, data) {
assert.equal(err, null);
assert(data);
assert.equal(data.status, 'ok');
assert(!data._table, "Data table is not Expected");
return cb();
});
},
'test admin users listinstallapps --username ': function(cb) {
commands.listinstallapps({username:'ndonnell@redhat.com'}, function(err) {
assert.equal(err, null);
return cb();
});
},
'test admin users listdevices --username ': function(cb) {
commands.listdevices({username:'ndonnell@redhat.com'}, function(err) {
assert.equal(err, null);
return cb();
});
}
};