Files
rippled/test/ledger-data-test.js
2015-09-18 12:18:39 -04:00

66 lines
2.0 KiB
JavaScript

var assert = require('assert');
var Request = require('ripple-lib').Request;
var makeSuite = require('./declarative-suite').makeSuite;
makeSuite('ledger_data', {dump: 'ledger-full-40000.json'},
{
ledger_data: function (remote, done) {
var limit = 20;
// keep track of indexes we've seen
var indexes = {};
// keep all the ledger_data items from multiple requests in one array
var merged = [];
function requestData (marker, callback) {
if (typeof marker === 'function') {
callback = marker;
marker = undefined;
}
var req = new Request(remote, 'ledger_data');
var params = req.message;
params.ledger_index = 'validated';
params.marker = marker;
params.limit = limit;
params.binary = false;
req.callback(function (e, m) {
assert.equal(typeof m.ledger_index, 'number');
assert.equal(typeof m.ledger_hash, 'string');
// make sure we didn't get some error
assert.ifError(e);
// make sure we aren't getting indexes we've seen before
m.state.forEach(function (s) {
assert(indexes[s.index] === undefined);
indexes[s.index] = true;
merged.push(s);
});
// make another request if we have a marker
if (m.marker) {
// make sure our limit was honoured
assert(m.state.length == limit);
requestData(m.marker, callback);
} else {
// make sure our limit was honoured
assert(m.state.length <= limit);
callback();
}
});
}
requestData(function () {
remote.request_ledger({validated: true, full: true}, function (e, m) {
// compare our stitched together account state array with one from
// the ledegr data command
assert.deepEqual(merged/* .concat('watch me fail') */,
m.ledger.accountState);
done();
});
});
}
}
);