32 lines
1.2 KiB
JavaScript
32 lines
1.2 KiB
JavaScript
'use strict';
|
|
|
|
const test = require('node:test');
|
|
const assert = require('node:assert/strict');
|
|
const { extractUrls, auditAnswer } = require('../src/audit');
|
|
|
|
test('extractUrls: dedupes and strips punctuation', () => {
|
|
const urls = extractUrls('See https://a.test/x, and https://a.test/x. Also https://b.test/y');
|
|
assert.deepEqual(urls, ['https://a.test/x', 'https://b.test/y']);
|
|
});
|
|
|
|
test('auditAnswer: flags URLs not present in tool results', () => {
|
|
const audit = auditAnswer({
|
|
finalContent: 'Policy: https://kb.test/policy and https://fake.test/x',
|
|
toolResults: [{ results: [{ source_urls: ['https://kb.test/policy'] }] }],
|
|
toolCalls: [{ name: 'search_kb', ok: true }],
|
|
});
|
|
assert.deepEqual(audit.unverified_urls, ['https://fake.test/x']);
|
|
assert.equal(audit.has_unverified_urls, true);
|
|
assert.equal(audit.tool_errors, 0);
|
|
});
|
|
|
|
test('auditAnswer: counts tool errors and no unverified URLs', () => {
|
|
const audit = auditAnswer({
|
|
finalContent: 'See https://kb.test/policy',
|
|
toolResults: [{ source_urls: ['https://kb.test/policy'] }],
|
|
toolCalls: [{ name: 'search_kb', ok: true }, { name: 'search_orders', ok: false }],
|
|
});
|
|
assert.equal(audit.has_unverified_urls, false);
|
|
assert.equal(audit.tool_errors, 1);
|
|
});
|