Feature/add users api (#77)

* initial changes for jwt auth

* return permissions as an array of string

* Add JWT expiration environment variable (#74)

* allow fromHost in createCall REST API

* add JWT_EXPIRES_IN=<mins> env variable, 60 mins by default

* add jwt expiration in register.js and signin.js

* fix tests - add permissions and scope to encoded obj in jwt

Co-authored-by: Dave Horton <daveh@beachdognet.com>
Co-authored-by: eglehelms <e.helms@cognigy.com>

* return only the jwt-token in the api response

* update swagger.yaml

* add /users api

* apply review comments

* add users test case

* added User model

* bugfix: admin user should be able to create a carrier for a service provider

Co-authored-by: EgleH <egle.helms@gmail.com>
Co-authored-by: eglehelms <e.helms@cognigy.com>
This commit is contained in:
Dave Horton
2022-11-07 13:47:18 -05:00
committed by GitHub
parent 46eee0cc60
commit 1b67d5f89d
8 changed files with 727 additions and 1100 deletions
+1
View File
@@ -12,6 +12,7 @@ require('./sbcs');
require('./ms-teams');
require('./speech-credentials');
require('./recent-calls');
require('./users');
require('./webapp_tests');
// require('./homer');
require('./call-test');
+54
View File
@@ -0,0 +1,54 @@
const test = require('tape') ;
const request = require('request-promise-native').defaults({
baseUrl: 'http://127.0.0.1:3000/v1'
});
const exec = require('child_process').exec ;
process.on('unhandledRejection', (reason, p) => {
console.log('Unhandled Rejection at: Promise', p, 'reason:', reason);
});
test('add an admin user', (t) => {
exec(`${__dirname}/../db/reset_admin_password.js`, (err, stdout, stderr) => {
console.log(stderr);
console.log(stdout);
if (err) return t.end(err);
t.pass('successfully added admin user');
t.end();
});
});
test('user tests', async(t) => {
const app = require('../app');
let sid;
try {
let result;
/* login as admin to get a jwt */
result = await request.post('/login', {
resolveWithFullResponse: true,
json: true,
body: {
username: 'admin',
password: 'admin',
}
});
t.ok(result.statusCode === 200 && result.body.token, 'successfully logged in as admin');
/* retrieve list of users */
const authAdmin = {bearer: result.body.token};
result = await request.get(`/Users`, {
resolveWithFullResponse: true,
json: true,
auth: authAdmin,
});
//console.log(result.body);
t.ok(result.statusCode === 200 && result.body.length === 1, 'successfully user list');
} catch (err) {
console.error(err);
t.end(err);
}
});