fix: complete caller analytics reliability remediation
This commit is contained in:
@@ -45,6 +45,9 @@ try {
|
||||
}
|
||||
assert.equal(result.status,200,JSON.stringify(result.body));
|
||||
assert.deepEqual(Object.fromEntries(['totalCalls','connectedCalls','answeredCalls','failedCalls'].map(k=>[k,result.body.summary[k]])),{totalCalls:6,connectedCalls:4,answeredCalls:2,failedCalls:2});
|
||||
assert.equal(result.body.analysisRevision,'caller-analytics-r2');
|
||||
assert.equal(result.body.coverageStatus,'CONTINUOUS',JSON.stringify(result.body.health));
|
||||
assert.equal(result.body.summary.durationUnknownCalls,0);
|
||||
assert.equal((await get('/caller-analytics/overview',false)).status,401);
|
||||
assert.equal((await get('/caller-analytics/overview?view=invalid')).status,400);
|
||||
assert.equal(result.body.summary.connectedAnswerRate,50);
|
||||
@@ -73,11 +76,13 @@ try {
|
||||
assert.equal((await get('/caller-analytics/overview?customerId=another_customer',true,scopedToken)).status,403);
|
||||
const options=await get('/caller-analytics/options',true,scopedToken);
|
||||
assert.equal(options.status,200); assert.deepEqual(options.body.customers.map(c=>c.id),[fixture]);
|
||||
assert.deepEqual(options.body.vendors.map(v=>v.id),[fixture]);
|
||||
} finally {
|
||||
await db.$executeRaw`DELETE FROM caller_analysis_access WHERE user_id=${testUserId}`;
|
||||
await db.user.deleteMany({where:{id:testUserId}}); await db.role.deleteMany({where:{id:testUserId}});
|
||||
}
|
||||
const evidence={date:new Date().toISOString(),from,api:result,detail:detail.body,sip:JSON.parse(sip.stdout),bucketAudit:beforeReplay.body.summary,replayed:events.length,tests:['real SIP six scenarios','real API counts and three rates','real DB states and minute buckets','database replay idempotency','customer scope and 403 isolation','scoped filter options','unauthenticated 401','invalid query 400','positive subsecond duration']};
|
||||
const sipEvents=JSON.parse(sip.stdout); assert.equal(sipEvents.filter(e=>e.direction==='UAC'&&e.code===200&&e.sdp).length,2,'Two successful calls must negotiate SDP through RTPEngine');
|
||||
const evidence={date:new Date().toISOString(),from,api:result,detail:detail.body,sip:sipEvents,bucketAudit:beforeReplay.body.summary,replayed:events.length,tests:['real SIP six scenarios','two SDP offer/answer negotiations through RTPEngine','ACK-based positive duration including subsecond call','real API counts, completeness and three rates','real DB states and minute buckets','database replay idempotency','customer scope and 403 isolation','scoped customer/vendor filter options','unauthenticated 401','invalid query 400']};
|
||||
await writeFile(process.env.CRA_REPORT || '/tmp/caller-analytics-real-evidence.json',JSON.stringify(evidence,null,2));
|
||||
console.log(JSON.stringify({passed:true,summary:result.body.summary,shortMs:short.counts.talkMs,quality:result.body.qualityStatus}));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user