added test for handling addr times and v6 addresses
This commit is contained in:
parent
1545abbea0
commit
e62ddd93f6
@ -69,9 +69,11 @@ function Pool(options) {
|
||||
var length = addrs.length;
|
||||
for (var i = 0; i < length; i++) {
|
||||
var addr = addrs[i];
|
||||
// In case of an invalid time, assume "5 days ago"
|
||||
if (addr.time <= 100000000 || addr.time > (now() + 10 * 60)) {
|
||||
addr.time = now() - 5 * 24 * 60 * 60;
|
||||
var future = new Date().getTime() + (10 * 60 * 1000);
|
||||
if (addr.time.getTime() <= 100000000000 || addr.time.getTime() > future) {
|
||||
// In case of an invalid time, assume "5 days ago"
|
||||
var past = new Date(new Date().getTime() - 5 * 24 * 60 * 60 * 1000);
|
||||
addr.time = past;
|
||||
}
|
||||
this._addAddr(addr);
|
||||
}
|
||||
|
||||
74
test/pool.js
74
test/pool.js
@ -336,6 +336,80 @@ describe('Pool', function() {
|
||||
pool.connect();
|
||||
});
|
||||
|
||||
it('not call _fillConnections if keepalive is false', function(done) {
|
||||
done();
|
||||
});
|
||||
|
||||
it('keep original time for handling peeraddr messages', function(done) {
|
||||
var pool = new Pool({network: Networks.livenet, maxSize: 1});
|
||||
var now = new Date();
|
||||
pool._addAddr = function(addr) {
|
||||
addr.time.should.equal(now);
|
||||
done();
|
||||
};
|
||||
pool.emit('peeraddr', {}, {
|
||||
addresses: [
|
||||
{
|
||||
time: now
|
||||
}
|
||||
]
|
||||
});
|
||||
});
|
||||
|
||||
it('replace time if time is invalid on peeraddr messages', function(done) {
|
||||
var pool = new Pool({network: Networks.livenet, maxSize: 1});
|
||||
var future = new Date(new Date().getTime() + 10 * 70 * 1000);
|
||||
var past = new Date(new Date().getTime() - 4 * 24 * 60 * 60 * 1000); // 4 days ago
|
||||
pool._addAddr = function(addr) {
|
||||
addr.time.should.not.equal(future);
|
||||
addr.time.getTime().should.be.below(past.getTime());
|
||||
done();
|
||||
};
|
||||
pool.emit('peeraddr', {}, {
|
||||
addresses: [
|
||||
{
|
||||
time: future
|
||||
}
|
||||
]
|
||||
});
|
||||
});
|
||||
|
||||
describe('#_removeConnectedPeer', function() {
|
||||
it('disconnect peer if peer status is not disconnected', function(done) {
|
||||
var pool = new Pool({network: Networks.livenet, maxSize: 1});
|
||||
/* jshint sub: true */
|
||||
pool._connectedPeers['hash'] = {
|
||||
status: Peer.STATUS.CONNECTED,
|
||||
disconnect: function() {
|
||||
done();
|
||||
}
|
||||
};
|
||||
pool._removeConnectedPeer({
|
||||
hash: 'hash'
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('#_connectPeer', function() {
|
||||
it('connect ipv6 peer', function() {
|
||||
var connectStub = sinon.stub(Peer.prototype, 'connect');
|
||||
var pool = new Pool({network: Networks.livenet, maxSize: 1});
|
||||
var ipv6 = '2001:0db8:85a3:0042:1000:8a2e:0370:7334';
|
||||
pool._addPeerEventHandlers = sinon.stub();
|
||||
pool._connectPeer({
|
||||
ip: {
|
||||
v6: ipv6
|
||||
},
|
||||
hash: 'hash'
|
||||
});
|
||||
/* jshint sub: true */
|
||||
should.exist(pool._connectedPeers['hash']);
|
||||
pool._addPeerEventHandlers.calledOnce.should.equal(true);
|
||||
Peer.prototype.connect.calledOnce.should.equal(true);
|
||||
connectStub.restore();
|
||||
});
|
||||
});
|
||||
|
||||
describe('#_addConnectedPeer', function() {
|
||||
|
||||
it('should add a peer', function() {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user