Authorize direct file invitations within paired rooms and parties
This commit is contained in:
18
frontend/direct-protocol.test.js
Normal file
18
frontend/direct-protocol.test.js
Normal file
@@ -0,0 +1,18 @@
|
||||
const { test } = require('node:test');
|
||||
const assert = require('node:assert/strict');
|
||||
const p = require('./direct-protocol.js');
|
||||
test('direct protocol strips unexpected payload and validates file claims', () => {
|
||||
const m = p.parse({ type: 'direct', action: 'invite', to: 'peer', file: { id: 'video', title: 'Song', cid: 'a'.repeat(64), size: 10, bytes: 'secret' }, bytes: 'not relayed' });
|
||||
assert.equal(m.file.size, 10); assert.equal(m.bytes, undefined); assert.equal(m.file.bytes, undefined);
|
||||
assert.equal(p.parse({ ...m, file: { ...m.file, size: Infinity } }), null);
|
||||
assert.equal(p.parse(new Uint8Array(4)), null);
|
||||
});
|
||||
test('chunks retain exact resume offset and never exceed file end', () => {
|
||||
assert.deepEqual(p.nextChunk(17, 100000), { start: 17, end: 65553 });
|
||||
assert.deepEqual(p.nextChunk(99999, 100000), { start: 99999, end: 100000 });
|
||||
for (const n of [-1, 100001, 0.5, NaN]) assert.throws(() => p.offset(n, 100000));
|
||||
});
|
||||
test('signalling only admits bounded SDP or ICE, never byte frames', () => {
|
||||
assert.equal(p.parse({ type: 'direct', action: 'signal', token: 'abc', data: { kind: 'bytes', data: [1, 2] } }), null);
|
||||
assert.equal(p.parse({ type: 'direct', action: 'signal', token: 'abc', data: { kind: 'offer', sdp: 'x'.repeat(60001) } }), null);
|
||||
});
|
||||
Reference in New Issue
Block a user