-
Notifications
You must be signed in to change notification settings - Fork 445
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: add check for protector and enforced pnet
fix: update protector config and tests docs: add private network info to the readme test: fix an issue with config
- Loading branch information
Showing
5 changed files
with
113 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,90 @@ | ||
/* eslint-env mocha */ | ||
'use strict' | ||
|
||
const chai = require('chai') | ||
chai.use(require('dirty-chai')) | ||
const expect = chai.expect | ||
const PeerInfo = require('peer-info') | ||
const PeerId = require('peer-id') | ||
const waterfall = require('async/waterfall') | ||
const WS = require('libp2p-websockets') | ||
const defaultsDeep = require('@nodeutils/defaults-deep') | ||
|
||
const Libp2p = require('../src') | ||
|
||
describe('private network', () => { | ||
let config | ||
|
||
before((done) => { | ||
waterfall([ | ||
(cb) => PeerId.create({ bits: 512 }, cb), | ||
(peerId, cb) => PeerInfo.create(peerId, cb), | ||
(peerInfo, cb) => { | ||
config = { | ||
peerInfo, | ||
modules: { | ||
transport: [ WS ] | ||
} | ||
} | ||
cb() | ||
} | ||
], () => done()) | ||
}) | ||
|
||
describe('enforced network protection', () => { | ||
before(() => { | ||
process.env.LIBP2P_FORCE_PNET = 1 | ||
}) | ||
|
||
after(() => { | ||
delete process.env.LIBP2P_FORCE_PNET | ||
}) | ||
|
||
it('should throw an error without a provided protector', () => { | ||
expect(() => { | ||
return new Libp2p(config) | ||
}).to.throw('Private network is enforced, but no protector was provided') | ||
}) | ||
|
||
it('should create a libp2p node with a provided protector', () => { | ||
let node | ||
let protector = { | ||
psk: '123', | ||
tag: '/psk/1.0.0', | ||
protect: () => { } | ||
} | ||
|
||
expect(() => { | ||
let options = defaultsDeep(config, { | ||
modules: { | ||
connProtector: protector | ||
} | ||
}) | ||
|
||
node = new Libp2p(options) | ||
return node | ||
}).to.not.throw() | ||
expect(node._switch.protector).to.deep.equal(protector) | ||
}) | ||
|
||
it('should throw an error if the protector does not have a protect method', () => { | ||
expect(() => { | ||
let options = defaultsDeep(config, { | ||
modules: { | ||
connProtector: { } | ||
} | ||
}) | ||
|
||
return new Libp2p(options) | ||
}).to.throw() | ||
}) | ||
}) | ||
|
||
describe('network protection not enforced', () => { | ||
it('should not throw an error with no provided protector', () => { | ||
expect(() => { | ||
return new Libp2p(config) | ||
}).to.not.throw() | ||
}) | ||
}) | ||
}) |