21 lines
1.1 KiB
JavaScript
21 lines
1.1 KiB
JavaScript
import test from 'node:test';
|
|
import assert from 'node:assert/strict';
|
|
import { dispatch } from '../channel/webui/index.mjs';
|
|
|
|
test('C2-10c webui permits exactly the three added room verbs and preserves core refusals', async () => {
|
|
for (const verb of ['room.open', 'room.read', 'room.send']) {
|
|
const calls = [], args = { project: 'p', body: 'typed @name' };
|
|
let receipt;
|
|
await assert.doesNotReject(async () => { receipt = await dispatch({ verb, args }, { call: async (...a) => { calls.push(a); return { ok: verb }; } }); });
|
|
assert.deepEqual(receipt, { ok: verb });
|
|
assert.deepEqual(calls, [[verb, args]]);
|
|
const refused = Object.assign(new Error('refused'), { code: 'unknown-addressee' });
|
|
await assert.rejects(dispatch({ verb, args }, { call: async () => { throw refused; } }), e => e === refused);
|
|
}
|
|
for (const verb of ['room.delete', 'room.members', 'message.send', 'role.claim', 'shell.exec']) {
|
|
let called = false;
|
|
await assert.rejects(dispatch({ verb, args: {} }, { call: async () => { called = true; } }), { code: 'channel-operation' });
|
|
assert.equal(called, false);
|
|
}
|
|
});
|