import { BadRequestException, ServiceUnavailableException, } from '@nestjs/common'; import { TbankTokenService } from './tbank-token.service'; describe('TbankTokenService', () => { const config = { getOrThrow: jest.fn(() => 'MDEyMzQ1Njc4OWFiY2RlZjAxMjM0NTY3ODlhYmNkZWY='), }; let service: TbankTokenService; beforeEach(() => { jest.clearAllMocks(); service = new TbankTokenService(config as never); }); it('encrypts and decrypts a token through the configured crypto', () => { const encrypted = service.encrypt('secret-token'); expect(encrypted).not.toContain('secret-token'); expect(service.decrypt(encrypted)).toBe('secret-token'); expect(config.getOrThrow).toHaveBeenCalledWith('TOKEN_ENCRYPTION_KEY'); }); it('translates invalid T-Bank token errors and preserves unrelated failures', async () => { await expect( service.translateInvalidToken(() => Promise.reject(new Error('INVALID_TBANK_TOKEN')), ), ).rejects.toEqual(expect.any(BadRequestException)); const unavailable = new ServiceUnavailableException({ code: 'TBANK_UNAVAILABLE', }); await expect( service.translateInvalidToken(() => Promise.reject(unavailable)), ).rejects.toBe(unavailable); }); });