From ea8db8bb19a0f6691a33e5ff802bb54a91cc5e95 Mon Sep 17 00:00:00 2001 From: Ivan Socolsky Date: Thu, 29 Oct 2015 14:48:04 -0300 Subject: [PATCH 1/4] test getMainAddresses --- test/integration/server.js | 48 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/test/integration/server.js b/test/integration/server.js index 869dd56..807c7b8 100644 --- a/test/integration/server.js +++ b/test/integration/server.js @@ -1718,6 +1718,54 @@ describe('Wallet service', function() { }); }); + describe.only('#getMainAddresses', function() { + var server, wallet; + + beforeEach(function(done) { + helpers.createAndJoinWallet(2, 2, {}, function(s, w) { + server = s; + wallet = w; + helpers.createAddresses(server, wallet, 5, 0, function() { + done(); + }); + }); + }); + + it('should get all addresses', function(done) { + server.getMainAddresses({}, function(err, addresses) { + should.not.exist(err); + addresses.length.should.equal(5); + addresses[0].path.should.equal('m/0/0'); + addresses[4].path.should.equal('m/0/4'); + done(); + }); + }); + it('should get first N addresses', function(done) { + server.getMainAddresses({ + limit: 3 + }, function(err, addresses) { + should.not.exist(err); + addresses.length.should.equal(3); + addresses[0].path.should.equal('m/0/0'); + addresses[2].path.should.equal('m/0/2'); + done(); + }); + }); + it('should get last N addresses in reverse order', function(done) { + server.getMainAddresses({ + limit: 3, + reverse: true, + }, function(err, addresses) { + should.not.exist(err); + addresses.length.should.equal(3); + addresses[0].path.should.equal('m/0/4'); + addresses[2].path.should.equal('m/0/2'); + done(); + }); + }); + }); + + describe('Preferences', function() { var server, wallet; beforeEach(function(done) { From ef18c786fb4c3ec992b3f13703bbc84b00daa606 Mon Sep 17 00:00:00 2001 From: Ivan Socolsky Date: Thu, 29 Oct 2015 15:17:39 -0300 Subject: [PATCH 2/4] handle limit & reverse params --- lib/server.js | 6 ++++++ test/integration/server.js | 6 ++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/lib/server.js b/lib/server.js index 769dabd..4c76d76 100644 --- a/lib/server.js +++ b/lib/server.js @@ -721,17 +721,23 @@ WalletService.prototype.createAddress = function(opts, cb) { /** * Get all addresses. * @param {Object} opts + * @param {Numeric} opts.limit (optional) - Limit the resultset. Return all addresses by default. + * @param {Boolean} [opts.reverse=false] (optional) - Reverse the order of returned addresses. * @returns {Address[]} */ WalletService.prototype.getMainAddresses = function(opts, cb) { var self = this; + opts = opts || {}; self.storage.fetchAddresses(self.walletId, function(err, addresses) { if (err) return cb(err); var onlyMain = _.reject(addresses, { isChange: true }); + if (opts.reverse) onlyMain.reverse(); + if (opts.limit > 0) onlyMain = _.take(onlyMain, opts.limit); + return cb(null, onlyMain); }); }; diff --git a/test/integration/server.js b/test/integration/server.js index 807c7b8..74d4e69 100644 --- a/test/integration/server.js +++ b/test/integration/server.js @@ -315,14 +315,16 @@ helpers.createProposalOpts = function(type, outputs, signingKey, moreOpts) { }; helpers.createAddresses = function(server, wallet, main, change, cb) { + var clock = sinon.useFakeTimers(Date.now(), 'Date'); async.map(_.range(main + change), function(i, next) { + clock.tick(1000); var address = wallet.createAddress(i >= main); server.storage.storeAddressAndWallet(wallet, address, function(err) { - if (err) return next(err); - next(null, address); + next(err, address); }); }, function(err, addresses) { if (err) throw new Error('Could not generate addresses'); + clock.restore(); return cb(_.take(addresses, main), _.takeRight(addresses, change)); }); }; From 5a3eef6c5c0e60c640575e1213b63d6503c95b82 Mon Sep 17 00:00:00 2001 From: Ivan Socolsky Date: Thu, 29 Oct 2015 15:19:32 -0300 Subject: [PATCH 3/4] pass params from express endpoint --- lib/expressapp.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/expressapp.js b/lib/expressapp.js index aafceda..9cb9080 100644 --- a/lib/expressapp.js +++ b/lib/expressapp.js @@ -271,7 +271,7 @@ ExpressApp.prototype.start = function(opts, cb) { router.get('/v1/addresses/', function(req, res) { getServerWithAuth(req, res, function(server) { - server.getMainAddresses({}, function(err, addresses) { + server.getMainAddresses(req.body, function(err, addresses) { if (err) return returnError(err, res, req); res.json(addresses); }); From 22a19ff8cbd0cd4c8533bf507edcd61324a94aa1 Mon Sep 17 00:00:00 2001 From: Ivan Socolsky Date: Thu, 29 Oct 2015 15:46:02 -0300 Subject: [PATCH 4/4] rm .only --- test/integration/server.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/integration/server.js b/test/integration/server.js index 74d4e69..1f3e88a 100644 --- a/test/integration/server.js +++ b/test/integration/server.js @@ -1720,7 +1720,7 @@ describe('Wallet service', function() { }); }); - describe.only('#getMainAddresses', function() { + describe('#getMainAddresses', function() { var server, wallet; beforeEach(function(done) {