transbank-sdk
Version:
Transbank SDK for Node.js
46 lines (39 loc) • 1.75 kB
text/typescript
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);
});
});