feat(auth): add session traces cleanup procedure

This commit is contained in:
Karol Sójko
2022-12-19 12:49:59 +01:00
parent c12d354900
commit 147d8fd9af
10 changed files with 95 additions and 0 deletions
@@ -0,0 +1,19 @@
import { SessionTraceRepositoryInterface } from '../../Session/SessionTraceRepositoryInterface'
import { CleanupSessionTraces } from './CleanupSessionTraces'
describe('CleanupSessionTraces', () => {
let sessionTracesRepository: SessionTraceRepositoryInterface
const createUseCase = () => new CleanupSessionTraces(sessionTracesRepository)
beforeEach(() => {
sessionTracesRepository = {} as jest.Mocked<SessionTraceRepositoryInterface>
sessionTracesRepository.removeExpiredBefore = jest.fn()
})
it('should remove stale session traces', async () => {
await createUseCase().execute({ date: new Date() })
expect(sessionTracesRepository.removeExpiredBefore).toHaveBeenCalled()
})
})
@@ -0,0 +1,14 @@
import { Result, UseCaseInterface } from '@standardnotes/domain-core'
import { SessionTraceRepositoryInterface } from '../../Session/SessionTraceRepositoryInterface'
import { CleanupSessionTracesDTO } from './CleanupSessionTracesDTO'
export class CleanupSessionTraces implements UseCaseInterface<string> {
constructor(private sessionTracesRepository: SessionTraceRepositoryInterface) {}
async execute(dto: CleanupSessionTracesDTO): Promise<Result<string>> {
await this.sessionTracesRepository.removeExpiredBefore(dto.date)
return Result.ok('Session traces removed')
}
}
@@ -0,0 +1,3 @@
export interface CleanupSessionTracesDTO {
date: Date
}