import nock from 'nock'; import ApiConstants from '../../../lib/transbank/common/api_constants'; import { Environment, Oneclick } from '../../../lib'; import TransbankError from '../../../lib/transbank/common/transbank_error'; describe('MallBinInfoTest', () => { const apiUrl = `${Environment.Integration}${ApiConstants.ONECLICK_ENDPOINT}`; test('queryBin', async () => { const expectedResponse = { bin_issuer: 'TEST COMMERCE BANK', bin_payment_type: 'Credito', bin_brand: 'Visa' }; const tbkUser = 'tbkUser1234567890'; const bodyMatcher = (body: any) => { expect(body).toEqual({ tbk_user: tbkUser }); return true; }; nock(apiUrl) .post('/bin_info', bodyMatcher) .reply(200, expectedResponse); const binInfo = Oneclick.MallBinInfo.buildForIntegration('testCommerceCode', 'testApiKey'); const response = await binInfo.queryBin(tbkUser); expect(response).toEqual(expectedResponse); }); test('queryBin with invalid tbkUser', async () => { const invalidTbkUser = 'd8239982-cdc9-4f83-9dc9-4f83-9da7-fae63935066bdc9-4f83-9da7-fae63d8239982-cdc9-4f83-9dc9-4f83-9da7-fae63935066bdc9-4f83-9da7-fae6335066b'; const binInfo = Oneclick.MallBinInfo.buildForIntegration('testCommerceCode', 'testApiKey'); await expect(binInfo.queryBin(invalidTbkUser)).rejects.toThrow(Error); }); test('Error API Response', async () => { nock(apiUrl).post(`/bin_info`).reply(422, { error: 'Invalid request', message: 'Error processing request' }); const binInfo = Oneclick.MallBinInfo.buildForIntegration('testCommerceCode', 'testApiKey'); await expect(binInfo.queryBin('tbkUser1234567890')).rejects.toThrow(TransbankError); }); });