nostream/test/unit/factories/websocket-adapter-factory.spec.ts
Ricardo Arturo Cabral Mejía 45b08d8a21 chore: add RELAY_PRIVATE_KEY env var
Signed-off-by: Ricardo Arturo Cabral Mejía <me@ricardocabral.io>
2023-02-02 00:19:26 -05:00

54 lines
1.6 KiB
TypeScript

import { expect } from 'chai'
import { IncomingMessage } from 'http'
import Sinon from 'sinon'
import WebSocket from 'ws'
import { IEventRepository, IUserRepository } from '../../../src/@types/repositories'
import { IWebSocketServerAdapter } from '../../../src/@types/adapters'
import { SettingsStatic } from '../../../src/utils/settings'
import { WebSocketAdapter } from '../../../src/adapters/web-socket-adapter'
import { webSocketAdapterFactory } from '../../../src/factories/websocket-adapter-factory'
describe('webSocketAdapterFactory', () => {
let onStub: Sinon.SinonStub
let createSettingsStub: Sinon.SinonStub
beforeEach(() => {
onStub = Sinon.stub()
createSettingsStub = Sinon.stub(SettingsStatic, 'createSettings')
})
afterEach(() => {
createSettingsStub.restore()
onStub.reset()
})
it('returns a WebSocketAdapter', () => {
createSettingsStub.returns({
network: {
remoteIpHeader: 'remoteIpHeader',
},
})
const eventRepository: IEventRepository = {} as any
const userRepository: IUserRepository = {} as any
const client: WebSocket = {
on: onStub,
} as any
onStub.returns(client)
const request: IncomingMessage = {
headers: {
'sec-websocket-key': Buffer.from('key', 'utf8').toString('base64'),
},
socket: {
remoteAddress: '::1',
},
} as any
const webSocketServerAdapter: IWebSocketServerAdapter = {} as any
expect(
webSocketAdapterFactory(eventRepository, userRepository)([client, request, webSocketServerAdapter])
).to.be.an.instanceOf(WebSocketAdapter)
})
})