feat: add auth server package

This commit is contained in:
Karol Sójko
2022-06-22 12:33:00 +02:00
parent 143b215ddc
commit 8e5012009b
684 changed files with 33080 additions and 172 deletions
@@ -0,0 +1,26 @@
import 'reflect-metadata'
import { Logger } from 'winston'
import { WebSocketsConnectionRepositoryInterface } from '../../WebSockets/WebSocketsConnectionRepositoryInterface'
import { AddWebSocketsConnection } from './AddWebSocketsConnection'
describe('AddWebSocketsConnection', () => {
let webSocketsConnectionRepository: WebSocketsConnectionRepositoryInterface
let logger: Logger
const createUseCase = () => new AddWebSocketsConnection(webSocketsConnectionRepository, logger)
beforeEach(() => {
webSocketsConnectionRepository = {} as jest.Mocked<WebSocketsConnectionRepositoryInterface>
webSocketsConnectionRepository.saveConnection = jest.fn()
logger = {} as jest.Mocked<Logger>
logger.debug = jest.fn()
})
it('should save a web sockets connection for a user for further communication', async () => {
await createUseCase().execute({ userUuid: '1-2-3', connectionId: '2-3-4' })
expect(webSocketsConnectionRepository.saveConnection).toHaveBeenCalledWith('1-2-3', '2-3-4')
})
})
@@ -0,0 +1,26 @@
import { inject, injectable } from 'inversify'
import { Logger } from 'winston'
import TYPES from '../../../Bootstrap/Types'
import { WebSocketsConnectionRepositoryInterface } from '../../WebSockets/WebSocketsConnectionRepositoryInterface'
import { UseCaseInterface } from '../UseCaseInterface'
import { AddWebSocketsConnectionDTO } from './AddWebSocketsConnectionDTO'
import { AddWebSocketsConnectionResponse } from './AddWebSocketsConnectionResponse'
@injectable()
export class AddWebSocketsConnection implements UseCaseInterface {
constructor(
@inject(TYPES.WebSocketsConnectionRepository)
private webSocketsConnectionRepository: WebSocketsConnectionRepositoryInterface,
@inject(TYPES.Logger) private logger: Logger,
) {}
async execute(dto: AddWebSocketsConnectionDTO): Promise<AddWebSocketsConnectionResponse> {
this.logger.debug(`Persisting connection ${dto.connectionId} for user ${dto.userUuid}`)
await this.webSocketsConnectionRepository.saveConnection(dto.userUuid, dto.connectionId)
return {
success: true,
}
}
}
@@ -0,0 +1,4 @@
export type AddWebSocketsConnectionDTO = {
userUuid: string
connectionId: string
}
@@ -0,0 +1,3 @@
export type AddWebSocketsConnectionResponse = {
success: boolean
}