UNPKG

@adriantombu/paybox-system

Version:

A simple implementation of the Paybox System payment solution

114 lines (113 loc) 5.48 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const paybox_1 = require("./paybox"); const axios_1 = __importDefault(require("axios")); beforeEach(() => { jest.resetAllMocks(); }); test('should get an error from the provided code', () => { let error = paybox_1.Paybox.getError('00100'); expect(error).toBe('Paiement refusé par le centre d’autorisation'); error = paybox_1.Paybox.getError('00021'); expect(error).toBe('Carte non autorisée'); error = paybox_1.Paybox.getError('0123131'); expect(error).toBe('Erreur 0123131'); }); test('should get the validity status of a payment result', () => { const signatureIsValid = jest.spyOn(paybox_1.Paybox, 'signatureIsValid').mockImplementation(() => true); let status = paybox_1.Paybox.isValid({}, 5000); expect(status).toBe(false); status = paybox_1.Paybox.isValid({ authorizationId: '1234', error: '00123' }, 5000); expect(status).toBe(false); status = paybox_1.Paybox.isValid({ authorizationId: '1234', error: '00000', amount: '1234' }, 5000); expect(status).toBe(false); status = paybox_1.Paybox.isValid({ authorizationId: '1234', error: '00000', amount: '5000' }, 5000); expect(status).toBe(true); expect(signatureIsValid).toHaveBeenCalledTimes(1); }); test('should get a valid sandbox paybox form', async () => { let get = jest.spyOn(axios_1.default, 'get').mockImplementation(async () => ({ data: '>OK<' })); const paybox = paybox_1.Paybox.create({ payboxSandbox: true, payboxSite: '1999888', payboxRang: '32', payboxIdentifiant: '1686319', payboxHmac: 'HMACHMACHMAC', payboxEffectue: 'https://www.exemple.com/payment/success', payboxRefuse: 'https://www.exemple.com/payment/error', payboxAnnule: 'https://www.exemple.com/payment/cancelled', payboxAttente: 'https://www.exemple.com/payment/waiting', payboxRepondreA: 'https://www.exemple.com/payment/process', amount: 5000, email: 'adrian@example.com', reference: '123456', }); let form = await paybox.form(); expect(get).toHaveBeenCalledTimes(1); expect(form.url).toBe('https://preprod-tpeweb.paybox.com/cgi/MYchoix_pagepaiement.cgi'); expect(form.method).toBe('POST'); expect(form.form).toBeTruthy(); expect(form.elements).toBeTruthy(); get = jest.spyOn(axios_1.default, 'get').mockImplementation(async () => ({ data: '>NOK<' })); form = await paybox.form(); expect(form.url).toBe('https://preprod-tpeweb.paybox.com/cgi/MYchoix_pagepaiement.cgi'); }); test('should get a valid production paybox form', async () => { let get = jest.spyOn(axios_1.default, 'get').mockImplementation(async () => ({ data: '>OK<' })); const paybox = paybox_1.Paybox.create({ payboxSandbox: false, payboxSite: '1999888', payboxRang: '32', payboxIdentifiant: '1686319', payboxHmac: 'HMACHMACHMAC', payboxEffectue: 'https://www.exemple.com/payment/success', payboxRefuse: 'https://www.exemple.com/payment/error', payboxAnnule: 'https://www.exemple.com/payment/cancelled', payboxAttente: 'https://www.exemple.com/payment/waiting', payboxRepondreA: 'https://www.exemple.com/payment/process', amount: 5000, email: 'adrian@example.com', reference: '123456', }); let form = await paybox.form(); expect(get).toHaveBeenCalledTimes(1); expect(form.url).toBe('https://tpeweb.paybox.com/cgi/MYchoix_pagepaiement.cgi'); expect(form.method).toBe('POST'); expect(form.form).toBeTruthy(); expect(form.elements).toBeTruthy(); get = jest.spyOn(axios_1.default, 'get').mockImplementation(async () => ({ data: '>NOK<' })); form = await paybox.form(); expect(form.url).toBe('https://tpeweb1.paybox.com/cgi/MYchoix_pagepaiement.cgi'); }); test('should create a paybox payment', () => { const email = 'adrian@example.com'; const paybox = paybox_1.Paybox.create({ payboxSandbox: true, payboxSite: '1999888', payboxRang: '32', payboxIdentifiant: '1686319', payboxHmac: 'HMACHMACHMAC', payboxEffectue: 'https://www.exemple.com/payment/success', payboxRefuse: 'https://www.exemple.com/payment/error', payboxAnnule: 'https://www.exemple.com/payment/cancelled', payboxAttente: 'https://www.exemple.com/payment/waiting', payboxRepondreA: 'https://www.exemple.com/payment/process', amount: 5000, email, reference: '123456', }); expect(paybox.sandbox).toBe(true); expect(paybox.request.PBX_TOTAL).toBe('0000005000'); expect(paybox.request.PBX_DEVISE).toBe('978'); expect(paybox.request.PBX_PORTEUR).toBe(email); expect(paybox.request.PBX_RUF1).toBe('POST'); expect(paybox.request.PBX_HASH).toBe('SHA512'); expect(paybox.request.PBX_EFFECTUE).toBe('https://www.exemple.com/payment/success'); expect(paybox.request.PBX_REFUSE).toBe('https://www.exemple.com/payment/error'); expect(paybox.request.PBX_ANNULE).toBe('https://www.exemple.com/payment/cancelled'); expect(paybox.request.PBX_ATTENTE).toBe('https://www.exemple.com/payment/waiting'); expect(paybox.request.PBX_REPONDRE_A).toBe('https://www.exemple.com/payment/process'); });