const test = require("tape"); const { sippUac } = require("./sipp")("test_fs"); const bent = require("bent"); const clearModule = require("clear-module"); const { provisionCallHook } = require("./utils"); const getJSON = bent("json"); const waitFor = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); 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("test create-call timeout", async (t) => { clearModule.all(); const { srf, disconnect } = require("../app"); try { await connect(srf); // give UAS app time to come up const p = sippUac("uas-timeout-cancel.xml", "172.38.0.10"); await waitFor(1000); // GIVEN let account_sid = "622f62e4-303a-49f2-bbe0-eb1e1714e37a"; const post = bent("http://127.0.0.1:3000/", "POST", "json", 201); post("v1/createCall", { account_sid: account_sid, timeout: 1, call_hook: { url: "https://public-apps.jambonz.us/hello-world", method: "POST", }, from: "15083718299", to: { type: "phone", number: "15583084809", }, }); //THEN await p; disconnect(); } catch (err) { console.log(`error received: ${err}`); disconnect(); t.error(err); } }); test("test create-call call-hook basic authentication", async (t) => { clearModule.all(); const { srf, disconnect } = require("../app"); try { await connect(srf); // GIVEN let from = "call_hook_basic_authentication"; let account_sid = "622f62e4-303a-49f2-bbe0-eb1e1714e37a"; // Give UAS app time to come up const p = sippUac("uas.xml", "172.38.0.10", from); await waitFor(1000); const post = bent("http://127.0.0.1:3000/", "POST", "json", 201); post("v1/createCall", { account_sid: account_sid, call_hook: { url: "http://127.0.0.1:3100/", method: "POST", username: "username", password: "password", }, call_status_hook: { url: "http://127.0.0.1:3100/callStatus", method: "POST", }, from: from, to: { type: "phone", number: "15583084809", }, metadata: { customer: "acme", referenceId: "deadbeef", }, }); let verbs = [ { verb: "say", text: "hello", }, ]; provisionCallHook(from, verbs); //THEN await p; let obj = await getJSON(`http:127.0.0.1:3100/lastRequest/${from}`); console.log(obj); t.ok( obj.headers.Authorization === "Basic dXNlcm5hbWU6cGFzc3dvcmQ=", "create-call: call-hook contains basic authentication header" ); t.ok( obj.body.customerdata.customer === "acme", "create-call: metadata is working" ); obj = await getJSON(`http:127.0.0.1:3100/lastRequest/${from}_callStatus`); console.log(obj); t.ok( obj.body.customerData.customer === "acme", "create-call: metadata is working" ); disconnect(); } catch (err) { console.log(`error received: ${err}`); disconnect(); t.error(err); } });