From 17e890996ee84a97998fb5b7897bd8e612458a40 Mon Sep 17 00:00:00 2001 From: Manuel Araoz Date: Tue, 3 Feb 2015 12:26:09 -0300 Subject: [PATCH] add GetData unit data, and more integration tests --- integration/bitcoind.js | 31 +++++++++++++++++++++---------- test/data/messages.json | 4 ++-- test/messages.js | 2 +- 3 files changed, 24 insertions(+), 13 deletions(-) diff --git a/integration/bitcoind.js b/integration/bitcoind.js index 843111a..a6aa679 100644 --- a/integration/bitcoind.js +++ b/integration/bitcoind.js @@ -27,8 +27,8 @@ var blockHash = { 'testnet': '0000000058cc069d964711cd25083c0a709f4df2b34c8ff9302ce71fe5b45786' }; var stopBlock = { - 'livenet': '000000000000000006181d9d183e2191a5e704d6ed3513f29b0970198fb34d2e', - 'testnet': '000000003d594c41db49d5a8b850344943438620acf79ce8aa88177f5b35e337' + 'livenet': '00000000000000000b539ef570128acb953af3dbcfc19dd8e6066949672311a1', + 'testnet': '00000000d0bc4271bcefaa7eb25000e345910ba16b91eb375cd944b68624de9f' }; var txHash = { 'livenet': '22231e8219a0617a0ded618b5dc713fdf9b0db8ebd5bb3322d3011a703119d3b', @@ -143,16 +143,16 @@ describe('Integration with ' + network.name + ' bitcoind', function() { peer.sendMessage(message); }); }); + var fakeHash = 'e2dfb8afe1575bfacae1a0b4afc49af7ddda69285857267bae0e22be15f74a3a'; it('can handle request tx data not found', function(cb) { connect(function(peer) { - var hash = 'e2dfb8afe1575bfacae1a0b4afc49af7ddda69285857267bae0e22be15f74a3a'; - var expected = Messages.NotFound.forTransaction(hash); + var expected = Messages.NotFound.forTransaction(fakeHash); peer.once('notfound', function(message) { (message instanceof Messages.NotFound).should.equal(true); message.should.deep.equal(expected); cb(); }); - var message = Messages.GetData.forTransaction(hash); + var message = Messages.GetData.forTransaction(fakeHash); peer.sendMessage(message); }); }); @@ -162,20 +162,18 @@ describe('Integration with ' + network.name + ' bitcoind', function() { connect(function(peer) { peer.once('headers', function(message) { (message instanceof Messages.Headers).should.equal(true); - message.headers.length.should.equal(2); + message.headers.length.should.equal(3); cb(); }); var message = new Messages.GetHeaders(from, stop); peer.sendMessage(message); }); }); - it.skip('can get blocks', function(cb) { + it('can get blocks', function(cb) { connect(function(peer) { - peer.on('inv', function(message) { + peer.once('inv', function(message) { (message instanceof Messages.Inventory).should.equal(true); - console.log('inv' + message.inventory.length); if (message.inventory.length === 2) { - console.log(message); message.inventory[0].type.should.equal(Messages.Inventory.TYPE.BLOCK); cb(); } @@ -184,4 +182,17 @@ describe('Integration with ' + network.name + ' bitcoind', function() { peer.sendMessage(message); }); }); + it('can send inv and respond with info', function(cb) { + connect(function(peer) { + var randomHash = Random.getRandomBuffer(32);// needs to be random for repeatability + var expected = Messages.GetData.forBlock(randomHash); + peer.once('getdata', function(message) { + (message instanceof Messages.GetData).should.equal(true); + message.should.deep.equal(expected); + cb(); + }); + var message = Messages.Inventory.forBlock(randomHash); + peer.sendMessage(message); + }); + }); }); diff --git a/test/data/messages.json b/test/data/messages.json index 0036144..35de267 100644 --- a/test/data/messages.json +++ b/test/data/messages.json @@ -20,8 +20,8 @@ "payload": "" }, "GETDATA": { - "message": "", - "payload": "" + "message": "f9beb4d967657464617461000000000025000000253fc50c01020000003c2a5e4dcb5a44daf5ebff14a89d26a99b8aa1c1d757694b03d7e6ca7eeda6ca", + "payload": "01020000003c2a5e4dcb5a44daf5ebff14a89d26a99b8aa1c1d757694b03d7e6ca7eeda6ca" }, "GETADDR": { "message": "", diff --git a/test/messages.js b/test/messages.js index 9222abe..09ed779 100644 --- a/test/messages.js +++ b/test/messages.js @@ -31,7 +31,7 @@ describe('Messages', function() { NotFound: 'notfound' }; // TODO: add data for these - var noPayload = ['Alert', 'Reject', 'GetBlocks', 'GetHeaders', 'GetData']; + var noPayload = ['Alert', 'Reject', 'GetBlocks', 'GetHeaders']; var names = Object.keys(commands); describe('named', function() { names.forEach(function(name) {