Files
jambonz-api-server/test/service-providers.js
Hoan Luu Huu ffda2398f4 replace bent by native node fetch (#401)
* replace bent by native node fetch

* wip

* wip

* wip
2025-04-24 06:50:15 -04:00

208 lines
6.5 KiB
JavaScript

const test = require('tape') ;
const ADMIN_TOKEN = '38700987-c7a4-4685-a5bb-af378f9734de';
const authAdmin = {bearer: ADMIN_TOKEN};
const { createClient } = require('./http-client');
const request = createClient({
baseUrl: 'http://127.0.0.1:3000/v1'
});
const {deleteObjectBySid} = require('./utils');
process.on('unhandledRejection', (reason, p) => {
console.log('Unhandled Rejection at: Promise', p, 'reason:', reason);
});
test('service provider tests', async(t) => {
const app = require('../app');
try {
let result;
result = await request.post('/ServiceProviders', {
simple: false,
resolveWithFullResponse: true,
//auth: authAdmin,
json: true,
body: {
name: 'daveh'
}
});
t.ok(result.statusCode === 401, 'fails with 401 if Bearer token not supplied');
/* add a service provider */
result = await request.post('/ServiceProviders', {
resolveWithFullResponse: true,
auth: authAdmin,
json: true,
body: {
name: 'daveh',
ms_teams_fqdn: 'contoso.com'
}
});
t.ok(result.statusCode === 201, 'successfully created service provider');
const sid = result.body.sid;
/* add a second service provider */
result = await request.post('/ServiceProviders', {
resolveWithFullResponse: true,
auth: authAdmin,
json: true,
body: {
name: 'johndoe',
root_domain: 'example.com',
registration_hook: {
url: 'http://a.com'
}
}
});
t.ok(result.statusCode === 201, 'successfully created service provider with a root domain');
const sid2 = result.body.sid;
/* cannot add a service provider with same name*/
result = await request.post('/ServiceProviders', {
resolveWithFullResponse: true,
simple: false,
auth: authAdmin,
json: true,
body: {
name: 'daveh'
}
});
//console.log(`result: ${JSON.stringify(result)}`);
t.ok(result.statusCode === 422, 'cannot add two service providers with the same name');
/* cannot add a service provider with same root domain*/
result = await request.post('/ServiceProviders', {
resolveWithFullResponse: true,
simple: false,
auth: authAdmin,
json: true,
body: {
name: 'janedoe',
root_domain: 'example.com'
}
});
//console.log(`result: ${JSON.stringify(result)}`);
t.ok(result.statusCode === 422, 'cannot add two service providers with the same root domain');
/* query all service providers */
result = await request.get('/ServiceProviders', {
auth: authAdmin,
json: true,
});
//console.log(JSON.stringify(result));
t.ok(result.length === 2 , 'successfully queried all service providers');
/* query one service providers */
result = await request.get(`/ServiceProviders/${sid2}`, {
auth: authAdmin,
json: true,
});
t.ok(result.name === 'johndoe' && result.root_domain === 'example.com', 'successfully retrieved service provider by sid');
/* update service providers */
result = await request.put(`/ServiceProviders/${sid}`, {
auth: authAdmin,
json: true,
resolveWithFullResponse: true,
body: {
name: 'robb'
}
});
t.ok(result.statusCode === 204, 'successfully updated service provider');
/* try to update service providers with invalid sid format*/
try {
result = await request.put(`/ServiceProviders/123`, {
auth: authAdmin,
json: true,
resolveWithFullResponse: true,
body: {
name: 'robb'
}
});
} catch (err) {
t.ok(err.statusCode === 400, 'returns 400 bad request if service provider sid param is not a valid uuid');
}
/* add an api key for a service provider */
result = await request.post(`/ApiKeys`, {
auth: authAdmin,
json: true,
resolveWithFullResponse: true,
body: {
service_provider_sid: sid
}
});
t.ok(result.statusCode === 201, 'successfully added an api_key for a service provider');
const apiKeySid = result.body.sid;
/* query all api keys for a service provider */
result = await request.get(`/ServiceProviders/${sid}/ApiKeys`, {
auth: authAdmin,
json: true,
});
t.ok(result.length === 1 , 'successfully queried all service provider keys');
/* delete an api key */
result = await request.delete(`/ApiKeys/${apiKeySid}`, {
auth: authAdmin,
json: true,
resolveWithFullResponse: true,
});
t.ok(result.statusCode === 204, 'successfully deleted an api_key for a service provider');
/* add a predefined carrier for a service provider */
result = await request.post(`/ServiceProviders/${sid}/PredefinedCarriers/7d509a18-bbff-4c5d-b21e-b99bf8f8c49a`, {
auth: authAdmin,
json: true,
resolveWithFullResponse: true,
});
t.ok(result.statusCode === 201, 'successfully added predefined carrier to service provider');
await deleteObjectBySid(request, '/VoipCarriers', result.body.sid);
/* add a limit for a service provider */
result = await request.post(`/ServiceProviders/${sid}/Limits`, {
auth: authAdmin,
json: true,
resolveWithFullResponse: true,
body: {
category: 'voice_call_session',
quantity: 1000
}
});
t.ok(result.statusCode === 201, 'successfully added a call session limit to service provider');
/* query all limits for a service provider */
result = await request.get(`/ServiceProviders/${sid}/Limits`, {
auth: authAdmin,
json: true,
});
//console.log(result);
t.ok(result.length === 1 , 'successfully queried all limits');
/* delete call session limits for a service provider */
result = await request.delete(`/ServiceProviders/${sid}/Limits?category=voice_call_session`, {
auth: authAdmin,
resolveWithFullResponse: true
});
t.ok(result.statusCode === 204, 'successfully deleted a call session limit for a service provider');
/* delete service providers */
result = await request.delete(`/ServiceProviders/${sid}`, {
auth: authAdmin,
resolveWithFullResponse: true,
});
t.ok(result.statusCode === 204, 'successfully deleted service provider 1');
result = await request.delete(`/ServiceProviders/${sid2}`, {
auth: authAdmin,
resolveWithFullResponse: true,
});
t.ok(result.statusCode === 204, 'successfully deleted service provider 2');
//t.end();
}
catch (err) {
console.error(err);
t.end(err);
}
});