Files
Final-Year-Project/Backend/tests/sfu-registry.test.ts

50 lines
1.4 KiB
TypeScript

import { describe, expect, test } from 'bun:test';
import { SfuSessionRegistry } from '../media/sfu/registry';
const buildSession = (streamSessionId: string) => ({
streamSessionId,
ownerUserId: 'user-1',
cameraDeviceId: 'camera-1',
requesterDeviceId: 'client-1',
state: 'starting' as const,
createdAt: '2026-04-16T12:00:00.000Z',
});
describe('SFU session registry', () => {
test('stores and retrieves a session descriptor without internal metadata', () => {
const registry = new SfuSessionRegistry();
registry.set(buildSession('stream-1'));
expect(registry.get('stream-1')).toEqual(buildSession('stream-1'));
});
test('returns null when updating a missing session state', () => {
const registry = new SfuSessionRegistry();
expect(registry.updateState('missing-stream', 'live')).toBeNull();
});
test('updates state and lists all registered sessions', () => {
const registry = new SfuSessionRegistry();
registry.set(buildSession('stream-1'));
registry.set({ ...buildSession('stream-2'), cameraDeviceId: 'camera-2' });
expect(registry.updateState('stream-1', 'live')).toEqual({
...buildSession('stream-1'),
state: 'live',
});
expect(registry.list()).toEqual([
{
...buildSession('stream-1'),
state: 'live',
},
{
...buildSession('stream-2'),
cameraDeviceId: 'camera-2',
},
]);
});
});