UNPKG

divvy-rest

Version:

A RESTful API for submitting payments and monitoring accounts on the Divvy network.

102 lines (86 loc) 3.4 kB
'use strict'; /* eslint-disable max-len */ var assert = require('assert'); var testutils = require('./testutils'); var fixtures = require('./fixtures').transactions; var errors = require('./fixtures').errors; var requestPath = fixtures.requestPath; suite('get transaction', function() { var self = this; // self.wss: divvyd mock // self.app: supertest-enabled REST handler setup(testutils.setup.bind(self)); teardown(testutils.teardown.bind(self)); test('/transactions/:identifier', function(done) { self.wss.once('request_tx', function(message, conn) { assert.strictEqual(message.command, 'tx'); assert.strictEqual(message.transaction, fixtures.VALID_TRANSACTION_HASH); conn.send(fixtures.transactionResponse(message)); }); self.app .get(requestPath(fixtures.VALID_TRANSACTION_HASH)) .expect(testutils.checkStatus(200)) .expect(testutils.checkHeaders) .expect(testutils.checkBody(fixtures.RESTTransactionResponse)) .end(done); }); test('/transactions/:identifier -- invalid transaction hash', function(done) { self.wss.once('request_tx', function() { assert(false, 'Should not request transaction'); }); self.app .get(requestPath(fixtures.INVALID_TRANSACTION_HASH)) .expect(testutils.checkStatus(400)) .expect(testutils.checkHeaders) .expect(testutils.checkBody( errors.RESTInvalidTransactionHashOrClientResourceID)) .end(done); }); test('/transactions/:identifier -- non-existent transaction hash', function(done) { self.wss.once('request_tx', function(message, conn) { assert.strictEqual(message.command, 'tx'); assert.strictEqual(message.transaction, fixtures.VALID_TRANSACTION_HASH); conn.send(fixtures.transactionNotFoundResponse(message)); }); self.app .get(requestPath(fixtures.VALID_TRANSACTION_HASH)) .expect(testutils.checkStatus(404)) .expect(testutils.checkHeaders) .expect(testutils.checkBody(errors.RESTTransactionNotFound)) .end(done); }); test('/transactions/:identifier?ledger', function(done) { self.wss.once('request_tx', function(message, conn) { assert.strictEqual(message.command, 'tx'); assert.strictEqual(message.transaction, fixtures.VALID_TRANSACTION_HASH); conn.send(fixtures.transactionNotFoundResponse(message)); }); self.app .get(requestPath(fixtures.VALID_TRANSACTION_HASH, '?ledger=32570')) .expect(testutils.checkStatus(404)) .expect(testutils.checkHeaders) .expect(testutils.checkBody(errors.RESTTransactionNotFound)) .end(done); }); test('/transactions/:identifier?ledger -- invalid ledger', function(done) { self.wss.once('request_tx', function() { assert(false, 'Should not request transaction'); }); self.app .get(requestPath(fixtures.VALID_TRANSACTION_HASH) + '?ledger=asdf') .expect(testutils.checkStatus(400)) .expect(testutils.checkHeaders) .end(done); }); test('/transactions/:identifier?ledger -- missing ledger', function(done) { self.wss.once('request_tx', function() { assert(false, 'Should not request transaction'); }); self.app .get(requestPath(fixtures.VALID_TRANSACTION_HASH) + '?ledger=1') .expect(testutils.checkStatus(404)) .expect(testutils.checkHeaders) .expect(testutils.checkBody(errors.RESTLedgerNotFound)) .end(done); }); });