uaa-client
Version:
REST support for UAA in cloud foundry using javascript.
127 lines (115 loc) • 4.08 kB
JavaScript
;
// For these tests to work there must be a UAA.
// Then do
// npm test -- --UAA_URL=<https://uaa-ip-address>--USERNAME=<username> --PASSWORD=<password>
var assert = require('assert');
var testEnv = require('./test-env');
var UaaClient = require('../../uaa-client');
describe('uaa-client-tests:', function(){
var uaaClient;
var token;
before(function(){
uaaClient = new UaaClient(testEnv.uaaUrl);
return uaaClient.login(testEnv.user, testEnv.password)
.then(result => {
// console.log('result:',result);
assert(result.access_token, 'no token');
token = result;
})
.catch(error => assert.fail(error));
});
it('getUsers:', function(){
return uaaClient.getUsers(token.access_token)
.then(result => {
assert(typeof result.resources[0].userName == 'string', 'No username or user');
})
.catch(error => assert.fail(error));
});
it('getClients:', function(){
return uaaClient.getClients(token.access_token)
.then(result => {
assert(result.resources[0].client_id, 'One client with client_id not found');
})
.catch(error => assert.fail(error));
});
it('createClient, getClients, then deleteClient:', function(){
var clientOptions = {
client_id: 'uaa-script-test-client-id-4',
client_secret: 'secret',
scope: [ 'clients.read', 'clients.write' ],
authorized_grant_types: [ 'client_credentials' ],
resource_ids: [ ],
authorities: [ 'clients.read', 'clients.write' ],
name: 'uaa-script-test-client',
};
return new Promise((resolve, reject) => {
uaaClient.createClient(clientOptions, token.access_token)
.then(result => {
// console.log('result:'+JSON.stringify(result));
assert(result.client_id === clientOptions.client_id,'incorrect client_id');
uaaClient.getClients(token.access_token)
.then(result => {
// console.log('getClients result:'+JSON.stringify(result,null,2));
var clientNames = result.resources.map( aClient => {
return aClient.client_id;
});
// console.log('clientNames:'+clientNames);
assert(clientNames.includes(clientOptions.client_id), 'clientNames does not include client created ' + clientNames);
uaaClient.deleteClient(clientOptions.client_id, token.access_token)
.then(result => {
// console.log('--------deleteClient result:'+JSON.stringify(result,null,2));
resolve();
})
.catch(reject);
})
.catch(reject);
})
.catch(reject);
});
});
it('addUser, getUsers, then removeUser:', function(){
var addUserOptions = {
userName: 'fooc@bar.org',
password: 'secret',
name: {
formatted: 'given name family name',
familyName: 'family name',
givenName: 'given name',
},
emails: [{
value: 'foo@bar.org',
primary: true,
}],
phoneNumbers: [ {
value: '5555555555',
}],
active: true,
verified: true,
origin: '',
};
return new Promise((resolve, reject) => {
uaaClient.addUser(addUserOptions, token.access_token)
.then(result => {
// console.log('result:'+JSON.stringify(result));
assert(result.userName === addUserOptions.userName, 'incorrect userName');
var userId = result.id;
uaaClient.getUsers(token.access_token)
.then(result => {
// console.log('getUsers result:'+JSON.stringify(result,null,2));
var userIds = result.resources.map(aUser => {
return aUser.id;
});
assert(userIds.includes(userId), 'userIds do not include user created ' + userIds);
uaaClient.removeUser(userId, token.access_token)
.then(result => {
// console.log('--------removeUser result:'+JSON.stringify(result,null,2));
resolve();
})
.catch(reject);
})
.catch(reject);
})
.catch(reject);
});
});
});