machinomy
Version:
Micropayments powered by Ethereum
49 lines • 2.2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const sinon = require("sinon");
const BigNumber = require("bignumber.js");
const PaymentChannel_1 = require("./PaymentChannel");
const PaymentManager_1 = require("./PaymentManager");
const Signature_1 = require("./Signature");
const expect = require('expect');
describe('PaymentManager', () => {
let chainManager;
let channelContract;
let options;
let manager;
beforeEach(() => {
chainManager = {};
channelContract = {};
options = {};
manager = new PaymentManager_1.default(chainManager, channelContract, options);
});
describe('#buildPaymentForChannel', () => {
it('builds a signed payment', () => {
const chan = new PaymentChannel_1.PaymentChannel('send', 'recv', 'id', new BigNumber.BigNumber(100), new BigNumber.BigNumber(10), 0, '0xcabdab');
channelContract.paymentDigest = sinon.stub().withArgs('id', new BigNumber.BigNumber(15)).resolves('digest');
chainManager.sign = sinon.stub().withArgs('sender', 'digest').resolves(Signature_1.default.fromParts({
v: 27,
r: '0x01',
s: '0x02'
}));
const expSig = Signature_1.default.fromParts({
v: 27,
r: '0x01',
s: '0x02'
});
return manager.buildPaymentForChannel(chan, new BigNumber.BigNumber(5), new BigNumber.BigNumber(6), 'meta').then((pmt) => {
expect(pmt.channelId).toBe('id');
expect(pmt.sender).toBe('send');
expect(pmt.receiver).toBe('recv');
expect(pmt.price).toEqual(new BigNumber.BigNumber(5));
expect(pmt.value).toEqual(new BigNumber.BigNumber(6));
expect(pmt.channelValue).toEqual(new BigNumber.BigNumber(100));
expect(pmt.signature.isEqual(expSig)).toBe(true);
expect(pmt.meta).toBe('meta');
expect(pmt.tokenContract).toBe('0xcabdab');
expect(pmt.token).toBe(undefined);
});
});
});
});
//# sourceMappingURL=PaymentManager.test.js.map