Files
stack/packages/plugins/tests/room-channel.test.mjs

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);
}
});