@@ -0,0 +1,38 @@
|
||||
import test from 'node:test';
|
||||
import assert from 'node:assert/strict';
|
||||
import { mkdtemp, readFile } from 'node:fs/promises';
|
||||
import { tmpdir } from 'node:os';
|
||||
import path from 'node:path';
|
||||
import net from 'node:net';
|
||||
import { PrivacyLog } from '../daemon/privacy-log.js';
|
||||
import { createEventSocket, sendEvent } from '../daemon/ipc.js';
|
||||
|
||||
test('privacy log allowlists metadata and excludes prompt contents', async () => {
|
||||
const dir = await mkdtemp(path.join(tmpdir(), 'jarvis-log-'));
|
||||
const log = new PrivacyLog({ file: path.join(dir, 'events.jsonl') });
|
||||
await log.record('reply', { state: 'SPEAKING', prompt: 'secret text', success: true });
|
||||
const line = JSON.parse(await readFile(path.join(dir, 'events.jsonl'), 'utf8'));
|
||||
assert.equal(line.state, 'SPEAKING');
|
||||
assert.equal(line.success, true);
|
||||
assert.equal('prompt' in line, false);
|
||||
});
|
||||
|
||||
test('event socket rejects bulk messages and transports small JSON events', async (t) => {
|
||||
const dir = await mkdtemp(path.join(tmpdir(), 'jarvis-ipc-'));
|
||||
const socketPath = path.join(dir, 'jarvis.sock');
|
||||
const received = [];
|
||||
assert.throws(() => sendEvent({ write() {} }, 'Frame', { data: 'x'.repeat(70 * 1024) }), /too large/);
|
||||
let ipc;
|
||||
try { ipc = await createEventSocket({ socketPath, onMessage: (message) => received.push(message) }); }
|
||||
catch (error) {
|
||||
if (error.code === 'EPERM') { t.skip('sandbox forbids binding Unix sockets'); return; }
|
||||
throw error;
|
||||
}
|
||||
await new Promise((resolve, reject) => {
|
||||
const socket = net.createConnection(socketPath, () => { sendEvent(socket, 'Token', { text: 'hello' }); socket.end(); resolve(); });
|
||||
socket.on('error', reject);
|
||||
});
|
||||
await new Promise((resolve) => setTimeout(resolve, 10));
|
||||
assert.deepEqual(received, [{ event: 'Token', text: 'hello' }]);
|
||||
await ipc.close();
|
||||
});
|
||||
Reference in New Issue
Block a user