nostream/test/unit/factories/websocket-adapter-factory.spec.ts
Ricardo Arturo Cabral Mejía b36b62520e test: message/event rate limiting
2022-11-15 21:17:20 -05:00

44 lines
1.2 KiB
TypeScript

import { expect } from 'chai'
import { IncomingMessage } from 'http'
import Sinon from 'sinon'
import WebSocket from 'ws'
import { IEventRepository } from '../../../src/@types/repositories'
import { IWebSocketServerAdapter } from '../../../src/@types/adapters'
import { WebSocketAdapter } from '../../../src/adapters/web-socket-adapter'
import { webSocketAdapterFactory } from '../../../src/factories/websocket-adapter-factory'
describe('webSocketAdapterFactory', () => {
let onStub: Sinon.SinonStub
beforeEach(() => {
onStub = Sinon.stub()
})
afterEach(() => {
onStub.reset()
})
it('returns a WebSocketAdapter', () => {
const eventRepository: IEventRepository = {} 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)([client, request, webSocketServerAdapter])
).to.be.an.instanceOf(WebSocketAdapter)
})
})