From b0b54db5b1d8418f2e8eb01ccf16eeb532c6c3dd Mon Sep 17 00:00:00 2001 From: Vasco Santos Date: Fri, 27 Sep 2019 11:48:45 +0200 Subject: [PATCH] chore: add basic discovery module for compliance spec --- .travis.yml | 34 ++++++++++++++++++++++++-- package.json | 16 +++++++------ test/compliance.spec.js | 13 ++++++++++ test/mock-discovery.js | 48 +++++++++++++++++++++++++++++++++++++ test/peer-discovery.spec.js | 1 - 5 files changed, 102 insertions(+), 10 deletions(-) create mode 100644 test/compliance.spec.js create mode 100644 test/mock-discovery.js delete mode 100644 test/peer-discovery.spec.js diff --git a/.travis.yml b/.travis.yml index 68ade7c..c7f74c1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,9 +2,39 @@ language: node_js cache: npm stages: - check + - test + - cov node_js: - '10' + - '12' -script: - - npm run lint +os: + - linux + - osx + - windows + +script: npx nyc -s npm run test:node -- --bail +after_success: npx nyc report --reporter=text-lcov > coverage.lcov && npx codecov + +jobs: + include: + - stage: check + script: + - npx aegir dep-check + - npm run lint + + - stage: test + name: chrome + addons: + chrome: stable + script: npx aegir test -t browser -t webworker + + - stage: test + name: firefox + addons: + firefox: latest + script: npx aegir test -t browser -t webworker -- --browsers FirefoxHeadless + +notifications: + email: false diff --git a/package.json b/package.json index 70f51a7..d9b146e 100644 --- a/package.json +++ b/package.json @@ -6,13 +6,13 @@ "main": "src/index.js", "scripts": { "lint": "aegir lint", - "test": "aegir test", "build": "aegir build", - "release": "aegir release --no-test", - "release-minor": "aegir release --type minor --no-test", - "release-major": "aegir release --type major --no-test", - "coverage": "exit(0)", - "coverage-publish": "exit(0)" + "test": "aegir test", + "test:node": "aegir test -t node", + "test:browser": "aegir test -t browser -t webworker", + "release": "aegir release", + "release-minor": "aegir release --type minor", + "release-major": "aegir release --type major" }, "pre-push": [ "lint" @@ -40,7 +40,9 @@ "devDependencies": { "aegir": "^20.3.1", "chai": "^4.2.0", - "dirty-chai": "^2.0.1" + "dirty-chai": "^2.0.1", + "peer-id": "^0.13.3", + "peer-info": "^0.17.0" }, "engines": { "node": ">=10.0.0", diff --git a/test/compliance.spec.js b/test/compliance.spec.js new file mode 100644 index 0000000..1eadba9 --- /dev/null +++ b/test/compliance.spec.js @@ -0,0 +1,13 @@ +/* eslint-env mocha */ +'use strict' + +const tests = require('../src') +const MockDiscovery = require('./mock-discovery') + +describe('compliance tests', () => { + tests({ + setup () { + return new MockDiscovery() + } + }) +}) diff --git a/test/mock-discovery.js b/test/mock-discovery.js new file mode 100644 index 0000000..c64b878 --- /dev/null +++ b/test/mock-discovery.js @@ -0,0 +1,48 @@ +'use strict' + +const { EventEmitter } = require('events') + +const PeerId = require('peer-id') +const PeerInfo = require('peer-info') + +/** + * Emits 'peer' events on discovery. + */ +class MockDiscovery extends EventEmitter { + /** + * Constructs a new Bootstrap. + * + * @param {Object} options + * @param {number} options.discoveryDelay - the delay to find a peer (in milli-seconds) + */ + constructor (options = {}) { + super() + + this.options = options + this._isRunning = false + this._timer = null + } + + start () { + this._isRunning = true + this._discoverPeer() + } + + stop () { + clearTimeout(this._timer) + this._isRunning = false + } + + async _discoverPeer () { + if (!this._isRunning) return + + const peerId = await PeerId.create({ bits: 512 }) + const peerInfo = new PeerInfo(peerId) + + this._timer = setTimeout(() => { + this.emit('peer', peerInfo) + }, this.options.discoveryDelay || 1000) + } +} + +module.exports = MockDiscovery diff --git a/test/peer-discovery.spec.js b/test/peer-discovery.spec.js deleted file mode 100644 index ccacec3..0000000 --- a/test/peer-discovery.spec.js +++ /dev/null @@ -1 +0,0 @@ -'use strict'