mirror of
https://github.com/jambonz/jambonz-feature-server.git
synced 2025-12-19 04:17:44 +00:00
* fix say verb does not close streaming when finish say * wip * wip * ttsStreamingBuffer reset eventHandlerCount after remove listeners * only send tokens to module if connected * wip * sent stream_open when successfully connected to vendor
101 lines
2.5 KiB
JavaScript
101 lines
2.5 KiB
JavaScript
const test = require('tape');
|
|
const { sippUac } = require('./sipp')('test_fs');
|
|
const clearModule = require('clear-module');
|
|
const {provisionCallHook} = require('./utils')
|
|
const {
|
|
JAMBONES_LOGLEVEL,
|
|
JAMBONES_TIME_SERIES_HOST
|
|
} = require('../lib/config');
|
|
const opts = {
|
|
timestamp: () => {return `, "time": "${new Date().toISOString()}"`;},
|
|
level: JAMBONES_LOGLEVEL
|
|
};
|
|
const logger = require('pino')(opts);
|
|
const { queryAlerts } = require('@jambonz/time-series')(
|
|
logger, JAMBONES_TIME_SERIES_HOST
|
|
);
|
|
|
|
process.on('unhandledRejection', (reason, p) => {
|
|
console.log('Unhandled Rejection at: Promise', p, 'reason:', reason);
|
|
});
|
|
|
|
function connect(connectable) {
|
|
return new Promise((resolve, reject) => {
|
|
connectable.on('connect', () => {
|
|
return resolve();
|
|
});
|
|
});
|
|
}
|
|
|
|
test('basic webhook tests', async(t) => {
|
|
clearModule.all();
|
|
const {srf, disconnect} = require('../app');
|
|
|
|
try {
|
|
await connect(srf);
|
|
const verbs = [
|
|
{
|
|
verb: 'sip:decline',
|
|
status: 603,
|
|
reason: 'Gone Fishin',
|
|
headers: {
|
|
'Retry-After': 300
|
|
}
|
|
}
|
|
];
|
|
|
|
const from = 'sip_decline_test_success';
|
|
await provisionCallHook(from, verbs)
|
|
|
|
await sippUac('uac-expect-603.xml', '172.38.0.10', from);
|
|
t.pass('webhook successfully declines call');
|
|
|
|
disconnect();
|
|
} catch (err) {
|
|
console.log(`error received: ${err}`);
|
|
disconnect();
|
|
t.error(err);
|
|
}
|
|
});
|
|
|
|
test('invalid jambonz json create alert tests', async(t) => {
|
|
clearModule.all();
|
|
const {srf, disconnect} = require('../app');
|
|
|
|
try {
|
|
await connect(srf);
|
|
|
|
// GIVEN
|
|
// Invalid json array
|
|
const verbs = {
|
|
verb: 'say',
|
|
text: 'hello'
|
|
};
|
|
|
|
const from = 'invalid_json_create_alert';
|
|
await provisionCallHook(from, verbs)
|
|
|
|
// THEN
|
|
await sippUac('uac-invite-expect-480.xml', '172.38.0.10', from);
|
|
// sleep testcase for more than 7 second to wait alert pushed to database.
|
|
await sleep(8000);
|
|
const data = await queryAlerts(
|
|
{account_sid: 'bb845d4b-83a9-4cde-a6e9-50f3743bab3f', page: 1, page_size: 25, days: 7});
|
|
let checked = false;
|
|
for (let i = 0; i < data.total; i++) {
|
|
checked = data.data[i].message === 'malformed jambonz payload: must be array';
|
|
if (checked) break;
|
|
}
|
|
t.ok(checked, 'alert is raised as expected');
|
|
disconnect();
|
|
} catch (err) {
|
|
console.log(`error received: ${err}`);
|
|
disconnect();
|
|
t.error(err);
|
|
}
|
|
});
|
|
|
|
function sleep(ms) {
|
|
return new Promise(resolve => setTimeout(resolve, ms));
|
|
}
|