Files
orca/src/main/runtime/runtime-binary-message-router.test.ts
T

39 lines
1.3 KiB
TypeScript

import { describe, expect, it, vi } from 'vitest'
import {
encodeTerminalStreamFrame,
TerminalStreamOpcode
} from '../../shared/terminal-stream-protocol'
import { RuntimeBinaryMessageRouter } from './runtime-binary-message-router'
describe('RuntimeBinaryMessageRouter', () => {
it('keeps terminal streams and raw browser messages on exclusive connections', () => {
const router = new RuntimeBinaryMessageRouter()
const terminalHandler = vi.fn()
const rawHandler = vi.fn()
router.registerTerminalStream('terminal-connection', 4, terminalHandler)
expect(() => router.registerRawMessage('terminal-connection', rawHandler)).toThrow(
'binary_handler_mode_conflict'
)
router.registerRawMessage('browser-connection', rawHandler)
expect(() => router.registerTerminalStream('browser-connection', 4, terminalHandler)).toThrow(
'binary_handler_mode_conflict'
)
router.dispatch(
'terminal-connection',
encodeTerminalStreamFrame({
opcode: TerminalStreamOpcode.Output,
streamId: 4,
seq: 1,
payload: new Uint8Array([1, 2, 3])
})
)
router.dispatch('browser-connection', new Uint8Array([7, 8, 9]))
expect(terminalHandler).toHaveBeenCalledOnce()
expect(rawHandler).toHaveBeenCalledOnce()
})
})