diff --git a/lib/errors/errordefinitions.js b/lib/errors/errordefinitions.js index c0fa8ab..180f53b 100644 --- a/lib/errors/errordefinitions.js +++ b/lib/errors/errordefinitions.js @@ -17,6 +17,7 @@ var errors = { INVALID_ADDRESS: 'Invalid address', KEY_IN_COPAYER: 'Key already registered', LOCKED_FUNDS: 'Funds are locked by pending transaction proposals', + HISTORY_LIMIT_EXCEEDED: 'Requested page limit is above allowed maximum', MAIN_ADDRESS_GAP_REACHED: 'Maximum number of consecutive addresses without activity reached', NOT_AUTHORIZED: 'Not authorized', TOO_MANY_KEYS: 'Too many keys registered', diff --git a/lib/server.js b/lib/server.js index a2495b2..be848ce 100644 --- a/lib/server.js +++ b/lib/server.js @@ -1975,7 +1975,8 @@ WalletService.prototype.getTxHistory = function(opts, cb) { opts = opts || {}; opts.limit = (_.isUndefined(opts.limit) ? HISTORY_LIMIT : opts.limit); - if (opts.limit > HISTORY_LIMIT) opts.limit = HISTORY_LIMIT; + if (opts.limit > HISTORY_LIMIT) + return cb(Errors.HISTORY_LIMIT_EXCEEDED); function decorate(txs, addresses, proposals) { diff --git a/test/integration/server.js b/test/integration/server.js index 61376e0..9d9a1c7 100644 --- a/test/integration/server.js +++ b/test/integration/server.js @@ -4415,7 +4415,7 @@ describe('Wallet service', function() { }, { opts: { skip: 4, - limit: 20, + limit: 10, }, expected: [10], }, { @@ -4479,6 +4479,13 @@ describe('Wallet service', function() { done(); }); }); + it('should handle exceeded limit', function(done) { + server.getTxHistory({limit:1000}, function(err, txs) { + err.code.should.equal('HISTORY_LIMIT_EXCEEDED'); + done(); + }); + }); + }); describe('#scan', function() {