diff --git a/api/controllers/blocks.js b/api/controllers/blocks.js index f6e1cbc9..af9f6a3f 100644 --- a/api/controllers/blocks.js +++ b/api/controllers/blocks.js @@ -53,6 +53,13 @@ Blocks.heightParam = function(req, res, next, height) { * controllers */ +Blocks.list = function(req, res) { + node.listBlocks() + .then(function(blocks) { + res.send(blocks); + }); +}; + Blocks.getLatest = function(req, res) { node.getLatestBlock() .then(function(block) { diff --git a/api/routes/v1.js b/api/routes/v1.js index c2320476..12d0ddf0 100644 --- a/api/routes/v1.js +++ b/api/routes/v1.js @@ -28,7 +28,7 @@ function initRouter(node) { router.get('/node', NodeStatus.getStatus); // Block routes - router.get('/blocks', mockResponse); + router.get('/blocks', Blocks.list); router.get('/blocks/latest', Blocks.getLatest); router.get('/blocks/:blockHash([A-Fa-f0-9]{64})', Blocks.get); router.get('/blocks/:height([0-9]+)', Blocks.get); diff --git a/api/test/v1/blocks.js b/api/test/v1/blocks.js index 33530210..773533ac 100644 --- a/api/test/v1/blocks.js +++ b/api/test/v1/blocks.js @@ -14,12 +14,23 @@ var BitcoreHTTP = require('../../lib/http'); var BitcoreNode = require('../../../'); var mockBlocks = require('../data/blocks'); +Object.values = function(obj) { + var vals = []; + for (var key in obj) { + if (obj.hasOwnProperty(key)) { + vals.push(obj[key]); + } + } + return vals; +}; + describe('BitcoreHTTP v1 blocks routes', function() { // mocks var b1 = mockBlocks[Object.keys(mockBlocks)[0]]; var lastBlock = mockBlocks[Object.keys(mockBlocks).splice(-1)[0]]; var nodeMock, app, agent; + var blockList = Object.values(mockBlocks); beforeEach(function() { nodeMock = new EventEmitter(); nodeMock.getBlock = function(blockHash) { @@ -39,6 +50,9 @@ describe('BitcoreHTTP v1 blocks routes', function() { nodeMock.getLatestBlock = function() { return Promise.resolve(mockBlocks[Object.keys(mockBlocks).splice(-1)[0]]); }; + nodeMock.listBlocks = function() { + return Promise.resolve(blockList); + }; app = new BitcoreHTTP(nodeMock).app; agent = request(app); }); @@ -47,9 +61,7 @@ describe('BitcoreHTTP v1 blocks routes', function() { it('works with default parameters', function(cb) { agent.get('/v1/blocks/') .expect(200) - .expect({ - 'message': 'This is a mocked response' - }, cb); + .expect(JSON.stringify(blockList), cb); }); }); describe('/blocks/latest', function() {