From 42741c8cba51bcf89a98e6c9cb9426dab8115125 Mon Sep 17 00:00:00 2001 From: Marius Darila Date: Fri, 30 Jun 2017 18:19:32 +0300 Subject: [PATCH 1/4] fix(bootstrap:add): prevent duplicate inserts --- src/core/components/bootstrap.js | 2 +- test/http-api/over-ipfs-api/bootstrap.js | 23 ++++++++++++++++++++++- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/core/components/bootstrap.js b/src/core/components/bootstrap.js index af2bd95818..21c4615132 100644 --- a/src/core/components/bootstrap.js +++ b/src/core/components/bootstrap.js @@ -27,7 +27,7 @@ module.exports = function bootstrap (self) { } if (args.default) { config.Bootstrap = defaultNodes - } else if (multiaddr) { + } else if (multiaddr && config.Bootstrap.indexOf(multiaddr) === -1) { config.Bootstrap.push(multiaddr) } self._repo.config.set(config, (err) => { diff --git a/test/http-api/over-ipfs-api/bootstrap.js b/test/http-api/over-ipfs-api/bootstrap.js index 1e31b40412..1eb509138d 100644 --- a/test/http-api/over-ipfs-api/bootstrap.js +++ b/test/http-api/over-ipfs-api/bootstrap.js @@ -12,7 +12,7 @@ module.exports = (ctl) => { const validIp4 = '/ip4/101.236.176.52/tcp/4001/ipfs/QmSoLnSGccFuZQJzRadHn95W2CrSFmZuTdDWP8HXaHca9z' let peers - describe('.add', () => { + describe.only('.add', () => { it('returns an error when called with an invalid arg', (done) => { ctl.bootstrap.add(invalidArg, (err) => { expect(err).to.be.an.instanceof(Error) @@ -28,6 +28,27 @@ module.exports = (ctl) => { }) }) + it('prevents duplicate inserts of bootstrap peers', () => { + return ctl + .bootstrap + .add(validIp4) + .then(res => { + expect(res).to.be.eql({ Peers: [validIp4] }) + return ctl.bootstrap.add(validIp4) + }) + .then((res) => { + expect(res).to.be.eql({ Peers: [validIp4] }) + return ctl.bootstrap.list() + }) + .then((res) => { + expect(res).to.exist() + const insertPosition = res.Peers.indexOf(validIp4) + expect(insertPosition).to.not.equal(-1) + const duplicatePosition = res.Peers.indexOf(validIp4, insertPosition + 1) + expect(duplicatePosition).to.equal(-1) + }) + }) + it('returns a list of bootstrap peers when called with the default option', (done) => { ctl.bootstrap.add({ default: true }, (err, res) => { expect(err).to.not.exist() From 3ab1ace88ac76e6e4be25de2abd2c5f8f4bca295 Mon Sep 17 00:00:00 2001 From: Marius Darila Date: Fri, 30 Jun 2017 18:22:07 +0300 Subject: [PATCH 2/4] chore(): --- test/http-api/over-ipfs-api/bootstrap.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/http-api/over-ipfs-api/bootstrap.js b/test/http-api/over-ipfs-api/bootstrap.js index 1eb509138d..3a799e1007 100644 --- a/test/http-api/over-ipfs-api/bootstrap.js +++ b/test/http-api/over-ipfs-api/bootstrap.js @@ -12,7 +12,7 @@ module.exports = (ctl) => { const validIp4 = '/ip4/101.236.176.52/tcp/4001/ipfs/QmSoLnSGccFuZQJzRadHn95W2CrSFmZuTdDWP8HXaHca9z' let peers - describe.only('.add', () => { + describe('.add', () => { it('returns an error when called with an invalid arg', (done) => { ctl.bootstrap.add(invalidArg, (err) => { expect(err).to.be.an.instanceof(Error) From e9959107ecb641cdd5b6b277ef6e266498028b47 Mon Sep 17 00:00:00 2001 From: Marius Darila Date: Fri, 30 Jun 2017 18:23:36 +0300 Subject: [PATCH 3/4] chore(): remove ununsed var --- src/core/components/stop.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/core/components/stop.js b/src/core/components/stop.js index d5fb672c84..865c6f2943 100644 --- a/src/core/components/stop.js +++ b/src/core/components/stop.js @@ -1,7 +1,6 @@ 'use strict' const series = require('async/series') -const setImmediate = require('async/setImmediate') module.exports = (self) => { return (callback) => { From b2bedf06e90854aceefff596789639c593c85243 Mon Sep 17 00:00:00 2001 From: Marius Darila Date: Fri, 30 Jun 2017 19:53:08 +0300 Subject: [PATCH 4/4] chore(): add test for peer list length --- test/http-api/over-ipfs-api/bootstrap.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/test/http-api/over-ipfs-api/bootstrap.js b/test/http-api/over-ipfs-api/bootstrap.js index 3a799e1007..ebde07318e 100644 --- a/test/http-api/over-ipfs-api/bootstrap.js +++ b/test/http-api/over-ipfs-api/bootstrap.js @@ -31,7 +31,11 @@ module.exports = (ctl) => { it('prevents duplicate inserts of bootstrap peers', () => { return ctl .bootstrap - .add(validIp4) + .rm(null, { all: true }) + .then((res) => { + expect(res.Peers.length).to.equal(0) + return ctl.bootstrap.add(validIp4) + }) .then(res => { expect(res).to.be.eql({ Peers: [validIp4] }) return ctl.bootstrap.add(validIp4) @@ -44,8 +48,7 @@ module.exports = (ctl) => { expect(res).to.exist() const insertPosition = res.Peers.indexOf(validIp4) expect(insertPosition).to.not.equal(-1) - const duplicatePosition = res.Peers.indexOf(validIp4, insertPosition + 1) - expect(duplicatePosition).to.equal(-1) + expect(res.Peers.length).to.equal(1) }) })