Improve request-test coverage

This commit is contained in:
wltsmrz
2014-06-11 22:24:21 -07:00
parent 06108ffee3
commit 6150721951

View File

@@ -11,28 +11,28 @@ function makeServer(url) {
}; };
const SERVER_INFO = { const SERVER_INFO = {
"info": { 'info': {
"build_version": "0.25.2-rc1", 'build_version': '0.25.2-rc1',
"complete_ledgers": "32570-7016339", 'complete_ledgers': '32570-7016339',
"hostid": "LIED", 'hostid': 'LIED',
"io_latency_ms": 1, 'io_latency_ms': 1,
"last_close": { 'last_close': {
"converge_time_s": 2.013, 'converge_time_s': 2.013,
"proposers": 5 'proposers': 5
}, },
"load_factor": 1, 'load_factor': 1,
"peers": 42, 'peers': 42,
"pubkey_node": "n9LpxYuMx4Epz4Wz8Kg2kH3eBTx1mUtHnYwtCdLoj3HC85L2pvBm", 'pubkey_node': 'n9LpxYuMx4Epz4Wz8Kg2kH3eBTx1mUtHnYwtCdLoj3HC85L2pvBm',
"server_state": "full", 'server_state': 'full',
"validated_ledger": { 'validated_ledger': {
"age": 0, 'age': 0,
"base_fee_xrp": 0.00001, 'base_fee_xrp': 0.00001,
"hash": "E43FD49087B18031721D9C3C4743FE1692C326AFF7084A2C01B355CE65A4C699", 'hash': 'E43FD49087B18031721D9C3C4743FE1692C326AFF7084A2C01B355CE65A4C699',
"reserve_base_xrp": 20, 'reserve_base_xrp': 20,
"reserve_inc_xrp": 5, 'reserve_inc_xrp': 5,
"seq": 7016339 'seq': 7016339
}, },
"validation_quorum": 3 'validation_quorum': 3
} }
}; };
@@ -50,6 +50,9 @@ describe('Request', function() {
var request = new Request(remote, 'server_info'); var request = new Request(remote, 'server_info');
request.request(); request.request();
// Should only request once
request.request();
}); });
it('Broadcast request', function(done) { it('Broadcast request', function(done) {
@@ -159,6 +162,42 @@ describe('Request', function() {
}); });
}); });
it('Timeout - satisfied', function(done) {
var server = makeServer('wss://localhost:5006');
var successEmited = false;
server._request = function(req) {
assert(req instanceof Request);
assert.strictEqual(typeof req.message, 'object');
assert.strictEqual(req.message.command, 'server_info');
setTimeout(function() {
successEmitted = true;
req.emit('success', SERVER_INFO);
}, 200);
};
var remote = new Remote();
remote._connected = true;
remote._servers = [ server ];
var request = new Request(remote, 'server_info');
var timedOut = false;
request.once('timeout', function() {
timedOut = true;
});
request.timeout(1000);
request.callback(function(err, res) {
assert(!timedOut);
assert.ifError(err);
assert.deepEqual(res, SERVER_INFO);
done();
});
});
it('Set server', function(done) { it('Set server', function(done) {
var servers = [ var servers = [
makeServer('wss://localhost:5006'), makeServer('wss://localhost:5006'),
@@ -188,6 +227,35 @@ describe('Request', function() {
request.request(); request.request();
}); });
it('Set server - by URL', function(done) {
var servers = [
makeServer('wss://localhost:5006'),
makeServer('wss://127.0.0.1:5007')
];
servers[1]._request = function(req) {
assert(req instanceof Request);
assert.strictEqual(typeof req.message, 'object');
assert.strictEqual(req.message.command, 'server_info');
done();
};
var remote = new Remote();
remote._connected = true;
remote._servers = servers;
remote.getServer = function() {
return servers[0];
};
var request = new Request(remote, 'server_info');
request.setServer('wss://127.0.0.1:5007');
assert.strictEqual(request.server, servers[1]);
request.request();
});
it('Set build path', function() { it('Set build path', function() {
var remote = new Remote(); var remote = new Remote();
remote._connected = true; remote._connected = true;
@@ -237,7 +305,29 @@ describe('Request', function() {
assert.strictEqual(request.message.ledger_index, 7016915); assert.strictEqual(request.message.ledger_index, 7016915);
}); });
it('Select ledger (identifier)', function() { it('Select cached ledger - index', function() {
var remote = new Remote();
remote._connected = true;
remote._ledger_current_index = 1;
remote._ledger_hash = 'B4FD84A73DBD8F0DA9E320D137176EBFED969691DC0AAC7882B76B595A0841AE';
var request = new Request(remote, 'server_info');
request.ledgerChoose(true);
assert.strictEqual(request.message.ledger_index, 1);
});
it('Select cached ledger - hash', function() {
var remote = new Remote();
remote._connected = true;
remote._ledger_current_index = 1;
remote._ledger_hash = 'B4FD84A73DBD8F0DA9E320D137176EBFED969691DC0AAC7882B76B595A0841AE';
var request = new Request(remote, 'server_info');
request.ledgerChoose();
assert.strictEqual(request.message.ledger_hash, 'B4FD84A73DBD8F0DA9E320D137176EBFED969691DC0AAC7882B76B595A0841AE');
});
it('Select ledger - identifier', function() {
var remote = new Remote(); var remote = new Remote();
remote._connected = true; remote._connected = true;
@@ -246,7 +336,7 @@ describe('Request', function() {
assert.strictEqual(request.message.ledger_index, 'validated'); assert.strictEqual(request.message.ledger_index, 'validated');
}); });
it('Select ledger (index)', function() { it('Select ledger - index', function() {
var remote = new Remote(); var remote = new Remote();
remote._connected = true; remote._connected = true;
@@ -255,7 +345,7 @@ describe('Request', function() {
assert.strictEqual(request.message.ledger_index, 7016915); assert.strictEqual(request.message.ledger_index, 7016915);
}); });
it('Select ledger (hash)', function() { it('Select ledger - hash', function() {
var remote = new Remote(); var remote = new Remote();
remote._connected = true; remote._connected = true;
@@ -264,7 +354,7 @@ describe('Request', function() {
assert.strictEqual(request.message.ledger_hash, 'B4FD84A73DBD8F0DA9E320D137176EBFED969691DC0AAC7882B76B595A0841AE'); assert.strictEqual(request.message.ledger_hash, 'B4FD84A73DBD8F0DA9E320D137176EBFED969691DC0AAC7882B76B595A0841AE');
}); });
it('Select ledger (hash)', function() { it('Select ledger - hash', function() {
var remote = new Remote(); var remote = new Remote();
remote._connected = true; remote._connected = true;
@@ -273,6 +363,24 @@ describe('Request', function() {
assert.strictEqual(request.message.ledger_hash, 'B4FD84A73DBD8F0DA9E320D137176EBFED969691DC0AAC7882B76B595A0841AE'); assert.strictEqual(request.message.ledger_hash, 'B4FD84A73DBD8F0DA9E320D137176EBFED969691DC0AAC7882B76B595A0841AE');
}); });
it('Set account_root', function() {
var remote = new Remote();
remote._connected = true;
var request = new Request(remote, 'server_info');
request.accountRoot('r9cZA1mLK5R5Am25ArfXFmqgNwjZgnfk59');
assert.strictEqual(request.message.account_root, 'r9cZA1mLK5R5Am25ArfXFmqgNwjZgnfk59');
});
it('Set index', function() {
var remote = new Remote();
remote._connected = true;
var request = new Request(remote, 'server_info');
request.index(1);
assert.strictEqual(request.message.index, 1);
});
it('Set offer ID', function() { it('Set offer ID', function() {
var remote = new Remote(); var remote = new Remote();
remote._connected = true; remote._connected = true;
@@ -348,6 +456,7 @@ describe('Request', function() {
remote._connected = true; remote._connected = true;
var request = new Request(remote, 'server_info'); var request = new Request(remote, 'server_info');
request.accounts([ request.accounts([
'rLEsXccBGNR3UPuPu2hUXPjziKC3qKSBun', 'rLEsXccBGNR3UPuPu2hUXPjziKC3qKSBun',
'rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B' 'rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B'
@@ -359,6 +468,19 @@ describe('Request', function() {
]); ]);
}); });
it('Set accounts - string', function() {
var remote = new Remote();
remote._connected = true;
var request = new Request(remote, 'server_info');
request.accounts('rLEsXccBGNR3UPuPu2hUXPjziKC3qKSBun');
assert.deepEqual(request.message.accounts, [
'rLEsXccBGNR3UPuPu2hUXPjziKC3qKSBun'
]);
});
it('Set accounts proposed', function() { it('Set accounts proposed', function() {
var remote = new Remote(); var remote = new Remote();
remote._connected = true; remote._connected = true;
@@ -419,13 +541,13 @@ describe('Request', function() {
var books = [ var books = [
{ {
"taker_gets": { 'taker_gets': {
"currency": "EUR", 'currency': 'EUR',
"issuer": "rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B" 'issuer': 'rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B'
}, },
"taker_pays": { 'taker_pays': {
"currency": "USD", 'currency': 'USD',
"issuer": "rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B" 'issuer': 'rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B'
} }
} }
]; ];
@@ -441,54 +563,114 @@ describe('Request', function() {
var request = new Request(remote, 'server_info'); var request = new Request(remote, 'server_info');
request.addBook({
'taker_gets': {
'currency': 'CNY',
'issuer': 'rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B'
},
'taker_pays': {
'currency': 'USD',
'issuer': 'rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B'
}
});
assert.deepEqual(request.message.books, [
{
'taker_gets': {
'currency': 'CNY',
'issuer': 'rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B'
},
'taker_pays': {
'currency': 'USD',
'issuer': 'rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B'
}
}
]);
var books = [ var books = [
{ {
"taker_gets": { 'taker_gets': {
"currency": "EUR", 'currency': 'EUR',
"issuer": "rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B" 'issuer': 'rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B'
}, },
"taker_pays": { 'taker_pays': {
"currency": "USD", 'currency': 'USD',
"issuer": "rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B" 'issuer': 'rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B'
} }
} }
]; ];
request.books(books); request.books(books);
request.addBook({
"taker_gets": {
"currency": "CNY",
"issuer": "rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B"
},
"taker_pays": {
"currency": "USD",
"issuer": "rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B"
}
});
assert.deepEqual(request.message.books, [ assert.deepEqual(request.message.books, [
{ {
"taker_gets": { 'taker_gets': {
"currency": "EUR", 'currency': 'EUR',
"issuer": "rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B" 'issuer': 'rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B'
}, },
"taker_pays": { 'taker_pays': {
"currency": "USD", 'currency': 'USD',
"issuer": "rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B" 'issuer': 'rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B'
} }
}, },
{
"taker_gets": {
"currency": "CNY",
"issuer": "rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B"
},
"taker_pays": {
"currency": "USD",
"issuer": "rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B"
}
}
]); ]);
}); });
it('Add book - missing side', function() {
var remote = new Remote();
remote._connected = true;
var request = new Request(remote, 'server_info');
request.message.books = void(0);
var books = [
{
'taker_gets': {
'currency': 'EUR',
'issuer': 'rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B'
}
}
];
assert.throws(function() {
request.books(books);
});
});
it('Add book - with snapshot', function() {
var remote = new Remote();
remote._connected = true;
var request = new Request(remote, 'server_info');
request.message.books = void(0);
var book = {
'taker_gets': {
'currency': 'EUR',
'issuer': 'rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B'
},
'taker_pays': {
'currency': 'USD',
'issuer': 'rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B'
},
'both': true
};
request.addBook(book, true);
assert.deepEqual(request.message.books, [{
'taker_gets': {
'currency': 'EUR',
'issuer': 'rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B'
},
'taker_pays': {
'currency': 'USD',
'issuer': 'rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B'
},
'snapshot': true,
'both': true
}]);
});
}); });