mirror of
https://github.com/stablyai/orca.git
synced 2026-09-22 16:02:32 +00:00
43 lines
1.4 KiB
TypeScript
43 lines
1.4 KiB
TypeScript
import type { EventEmitter } from 'node:events'
|
|
import { describe, expect, it, vi } from 'vitest'
|
|
import { generateKeyPair, publicKeyToBase64 } from './e2ee-crypto'
|
|
import { openRemoteRuntimeWebSocket } from './remote-runtime-request-websocket'
|
|
|
|
describe('openRemoteRuntimeWebSocket', () => {
|
|
it('detaches Orca callback listeners when cleaned up', () => {
|
|
const keyPair = generateKeyPair()
|
|
const opened = openRemoteRuntimeWebSocket(
|
|
{
|
|
v: 2,
|
|
endpoint: 'ws://127.0.0.1:1',
|
|
deviceToken: 'device-token',
|
|
publicKeyB64: publicKeyToBase64(keyPair.publicKey)
|
|
},
|
|
{
|
|
onClose: vi.fn(),
|
|
onError: vi.fn(),
|
|
onTextFrame: vi.fn()
|
|
}
|
|
)
|
|
if (!opened.ok) {
|
|
throw opened.error
|
|
}
|
|
|
|
const socketEvents = opened.socket.ws as unknown as EventEmitter
|
|
expect(socketEvents.listenerCount('open')).toBe(1)
|
|
expect(socketEvents.listenerCount('close')).toBe(1)
|
|
expect(socketEvents.listenerCount('message')).toBe(1)
|
|
expect(socketEvents.listenerCount('error')).toBe(1)
|
|
|
|
opened.socket.cleanup()
|
|
opened.socket.cleanup()
|
|
|
|
expect(socketEvents.listenerCount('open')).toBe(0)
|
|
expect(socketEvents.listenerCount('close')).toBe(0)
|
|
expect(socketEvents.listenerCount('message')).toBe(0)
|
|
expect(socketEvents.listenerCount('error')).toBe(1)
|
|
expect(() => socketEvents.emit('error', new Error('late socket error'))).not.toThrow()
|
|
opened.socket.ws.terminate()
|
|
})
|
|
})
|