Checkpoint peering identity and opt-in discovery

This commit is contained in:
Codex committed 2026-10-13 22:00:54 +02:00
1 parent eba9b50e30
commit 47de081721
44 files changed
+1557 -55

No files matched your search

+34
View File
@@ -68,6 +68,40 @@ test('three services integrate collections, auth, custom covers and private heal
assert.equal((await (await request('/api/settings', { pageTone: 'sepia' })).json()).settings.pageTone, 'sepia');
assert.equal((await (await request('/api/settings', { pageTone: 'invalid' })).json()).settings.pageTone, 'sepia');
assert.equal((await (await anotherRequest('/api/me')).json()).settings.pageTone, 'original');
assert.equal((await fetch(base + '/api/discovery')).status, 401);
assert.equal((await anotherRequest('/api/admin/discovery/run', {})).status, 403);
assert.equal((await request('/api/settings', { discoveryEnabled: true })).status, 200);
assert.equal((await anotherRequest('/api/settings', { discoveryEnabled: true })).status, 200);
const beforeDiscoveryQueue = fs.readFileSync(path.join(data, 'scraper', 'queue.json'), 'utf8');
const firstRun = await request('/api/admin/discovery/run', {});
assert.equal(firstRun.status, 200);
const firstRunId = (await firstRun.json()).id;
let discoveryAdmin;
for (let n = 0; n < 50; n++) {
discoveryAdmin = await (await request('/api/admin/discovery')).json();
if (discoveryAdmin.currentRun?.id === firstRunId && discoveryAdmin.currentRun?.status === 'success') break;
await delay(100);
}
assert.equal(discoveryAdmin.currentRun?.status, 'success');
const discoveryMine = await (await request('/api/discovery')).json();
const discoveryOther = await (await anotherRequest('/api/discovery')).json();
assert.ok(discoveryMine.items.length > 0 && discoveryMine.items.length <= 20);
assert.ok(discoveryOther.items.length > 0 && discoveryOther.items.length <= 20);
assert.equal(discoveryMine.items[0].candidate.id, discoveryMine.items[0].candidateId);
const dismissed = discoveryMine.items[0].candidateId;
assert.equal((await request('/api/discovery/feedback', { candidateId: dismissed, value: 'dismissed' })).status, 200);
assert.equal((await anotherRequest('/api/discovery')).status, 200);
assert.equal((await anotherRequest('/api/discovery/feedback', { candidateId: 'nonexistent', value: 'interested' })).status, 404);
const secondRun = await request('/api/admin/discovery/run', {});
assert.equal(secondRun.status, 200);
const secondRunId = (await secondRun.json()).id;
for (let n = 0; n < 50; n++) {
discoveryAdmin = await (await request('/api/admin/discovery')).json();
if (discoveryAdmin.currentRun?.id === secondRunId && discoveryAdmin.currentRun?.status === 'success') break;
await delay(100);
}
assert.ok(!(await (await request('/api/discovery')).json()).items.some(item => item.candidateId === dismissed));
assert.equal(fs.readFileSync(path.join(data, 'scraper', 'queue.json'), 'utf8'), beforeDiscoveryQueue);
assert.equal((await (await anotherRequest('/api/greatest')).json()).entries[0].myRating, null);
assert.equal((await anotherRequest('/api/greatest/rating', { id: firstPick.id, rating: 'good' })).status, 200);
const communityPick = (await (await request('/api/greatest')).json()).entries[0];