UNPKG

machinomy

Version:

Micropayments powered by Ethereum

94 lines 4.11 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const nock = require("nock"); const transport = require("./transport"); const support_1 = require("./support"); const payment_1 = require("./payment"); const BigNumber = require("bignumber.js"); const Signature_1 = require("./Signature"); const ChannelId_1 = require("./ChannelId"); const PaymentRequiredResponse_1 = require("./PaymentRequiredResponse"); let expect = require('expect'); describe('transport', () => { describe('.build', () => { it('return Transport instance', () => { let t = transport.build(); expect(typeof t).toBe('object'); }); }); describe('Transport', () => { let t = transport.build(); let expectedResponse = 'YABADABA'; describe('#get', () => { it('make GET request', () => { nock('http://example.com').get('/path').reply(200, expectedResponse); return t.get('http://example.com/path').then(response => { expect(response.body).toBe(expectedResponse); }); }); it('send headers', () => { nock('http://example.com', { reqheaders: { 'X-Header': expectedResponse } }) .get('/path') .reply(200, expectedResponse); return t.get('http://example.com/path', { 'X-Header': expectedResponse }).then(response => { expect(response.body).toBe(expectedResponse); }); }); }); describe('#getWithToken', () => { it('make GET request with headers', () => { let expectedToken = 'tkn'; nock('http://example.com', { reqheaders: { 'authorization': `Paywall ${expectedToken}` } }) .get('/path') .reply(200, expectedResponse); return t.getWithToken('http://example.com/path', expectedToken).then(response => { expect(response.body).toBe(expectedResponse); }); }); }); describe('#requestToken', () => { let channelId = ChannelId_1.default.random(); let payment = new payment_1.default({ channelId: channelId.toString(), sender: 'sender', receiver: 'receiver', price: new BigNumber.BigNumber(10), value: new BigNumber.BigNumber(12), channelValue: new BigNumber.BigNumber(10), meta: 'metaexample', signature: Signature_1.default.fromParts({ v: 27, r: '0x2', s: '0x3' }), token: undefined, tokenContract: '' }); let randomToken = support_1.randomInteger().toString(); nock('http://example.com').post('/path').reply(202, '', { 'paywall-token': randomToken }); it('send payment, get token', () => { return t.requestToken('http://example.com/path', payment).then(token => { expect(token).toBe(randomToken); }); }); }); }); describe('PaymentRequired', () => { describe('.parse', () => { let headers = { 'paywall-address': '0xdeadbeaf', 'paywall-price': '10', 'paywall-gateway': 'http://example.com/gateway', 'paywall-version': PaymentRequiredResponse_1.TRANSPORT_VERSION, 'paywall-channels': '[]' }; let paymentRequired = PaymentRequiredResponse_1.PaymentRequiredResponseSerializer.instance.deserialize(headers); expect(paymentRequired.receiver).toBe(headers['paywall-address']); expect(paymentRequired.price.toString()).toBe(headers['paywall-price']); expect(paymentRequired.gateway).toBe(headers['paywall-gateway']); }); }); }); //# sourceMappingURL=transport.test.js.map