mirror of
https://github.com/stablyai/orca.git
synced 2026-09-22 16:02:32 +00:00
39 lines
1.3 KiB
TypeScript
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()
|
|
})
|
|
})
|