Files
keyvault/api/src/modules/realtime/sse/sse.controller.spec.ts
2026-03-09 12:59:59 +01:00

65 lines
1.8 KiB
TypeScript

import { Test, TestingModule } from '@nestjs/testing';
import { SseController } from './sse.controller';
import { SseTicketService } from './sse-ticket.service';
import { UserService } from 'src/modules/user/user.service';
import { JwtService } from '@nestjs/jwt';
import { ConfigModule, ConfigService } from '@nestjs/config';
import { AuthService } from 'src/modules/auth/auth.service';
import { SseService } from './sse.service';
import { Subject } from 'rxjs';
describe('SseController', () => {
let controller: SseController;
beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
controllers: [SseController],
imports: [ConfigModule],
providers: [
ConfigService,
{ provide: JwtService, useClass: MockJwTService },
{ provide: SseTicketService, useClass: MockSseTicketService },
{ provide: AuthService, useClass: MockAuthService },
{ provide: SseService, useClass: MockSSEService }
]
}).compile();
controller = module.get<SseController>(SseController);
});
it('should be defined', () => {
expect(controller).toBeDefined();
});
it('should generate a Ticket', () => {
const t = controller.getTicket({ user: { id: 123}} as any);
expect(controller['ticketService'].generateTicket).toHaveBeenCalled()
});
it('should generate a SSE stream', async () => {
await controller.sse('abc');
expect(controller["sseService"].register).toHaveBeenCalled();
})
});
class MockSseTicketService {
generateTicket = jest.fn().mockImplementation( (id) => {
return {ticket: 'test-ticket-id'}
});
getUserIdToTicket = jest.fn().mockImplementation( (ticket) => {
return 99;
})
}
class MockSSEService {
register = jest.fn().mockImplementation( (id) => {
return new Subject()
})
}
class MockJwTService {}
class MockAuthService {}