42 lines
1.2 KiB
TypeScript
42 lines
1.2 KiB
TypeScript
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);
|
|
});
|
|
});
|