ITECOMMPAY/paymentpage-sdk-js

View on GitHub
__tests__/callback.js

Summary

Maintainability
A
0 mins
Test Coverage
const Callback = require('../src/callback');
const { secret, data } = require('./data/callback');

const cb = new Callback(secret, data);

test('Property setting', () => {
  expect(cb.callback.payment.id).toBe('000049');
});

test('Signature validation', () => {
  expect(cb.isValid()).toBeTruthy();
});

test('Nested signature validation', () => {
  // simple object clone
  const modifiedCb = JSON.parse(JSON.stringify(data));
  // move signature to object inside callback
  modifiedCb.general = { signature: data.signature };
  // remove first level signature
  delete modifiedCb.signature;
  const callback = new Callback(secret, modifiedCb);

  expect(callback.isValid()).toBeTruthy();
});

test('Constructor error', () => {
  // eslint-disable-next-line no-new
  expect(() => { new Callback('wrong', data); }).toThrow('Invalid signature');
});

test('String in constructor', () => {
  expect((new Callback(secret, JSON.stringify(data))).callback.payment.id).toBe('000049');
});

test('Callback.isPaymentSuccess', () => {
  expect(cb.isPaymentSuccess()).toBeTruthy();
});

test('Callback.getPaymentId', () => {
  expect(cb.getPaymentId()).toBe('000049');
});

test('Missing prototype extra payload in reseived data object', () => {
  expect(Object.getPrototypeOf(cb.callback)).toBeNull();
});