import { Test, TestingModule } from '@nestjs/testing'; import { TokenService } from '../src/auth/services/token.service'; import { HttpService } from '@nestjs/axios'; import { ConfigService } from '@nestjs/config'; import { of } from 'rxjs'; describe('TokenService', () => { let service: TokenService; const mockHttp = { post: jest.fn() }; const mockConfig = { get: (key: string) => { const map = { 'keycloak.serverUrl': 'https://keycloak-dcb.app.cameleonapp.com', 'keycloak.realm': 'master', 'keycloak.clientId': 'dcb-cc', 'keycloak.clientSecret': 'secret', 'keycloak.tokenBufferSeconds': 30, }; return map[key]; }, }; beforeEach(async () => { const module: TestingModule = await Test.createTestingModule({ providers: [ TokenService, { provide: HttpService, useValue: mockHttp }, { provide: ConfigService, useValue: mockConfig }, ], }).compile(); service = module.get(TokenService); }); it('should acquire a token', async () => { mockHttp.post.mockReturnValue(of({ data: { access_token: 'abc123', expires_in: 60 } })); const token = await service.acquireToken(); expect(token).toBe('abc123'); }); });