diff --git a/src/core/preload.js b/src/core/preload.js index d99a9d8f20..2902005fc2 100644 --- a/src/core/preload.js +++ b/src/core/preload.js @@ -18,11 +18,14 @@ module.exports = self => { options.addresses = options.addresses || [] if (!options.enabled || !options.addresses.length) { - return (_, callback) => { + const api = (_, callback) => { if (callback) { setImmediate(() => callback()) } } + api.start = () => {} + api.stop = () => {} + return api } let stopped = true diff --git a/test/core/preload.spec.js b/test/core/preload.spec.js index dc8527c552..0d105f2837 100644 --- a/test/core/preload.spec.js +++ b/test/core/preload.spec.js @@ -2,6 +2,8 @@ /* eslint-env mocha */ 'use strict' +const path = require('path') +const os = require('os') const hat = require('hat') const CID = require('cids') const parallel = require('async/parallel') @@ -17,8 +19,11 @@ const IPFS = require('../../src') describe('preload', () => { let ipfs - before((done) => { + before(function (done) { + this.timeout(10 * 1000) + ipfs = new IPFS({ + repo: path.join(os.tmpdir(), hat()), config: { Addresses: { Swarm: [] @@ -286,4 +291,33 @@ describe('preload', () => { }) }) }) + + it('should not preload if disabled', function (done) { + this.timeout(10 * 1000) + + const ipfs = new IPFS({ + repo: path.join(os.tmpdir(), hat()), + config: { + Addresses: { + Swarm: [] + } + }, + preload: { + enabled: false, + addresses: [MockPreloadNode.defaultAddr] + } + }) + + ipfs.on('ready', () => { + ipfs.files.add(Buffer.from(hat()), (err, res) => { + expect(err).to.not.exist() + + MockPreloadNode.waitForCids(res[0].hash, (err) => { + expect(err).to.exist() + expect(err.code).to.equal('ERR_TIMEOUT') + done() + }) + }) + }) + }) }) diff --git a/test/utils/mock-preload-node.js b/test/utils/mock-preload-node.js index 370847bf72..795413a31d 100644 --- a/test/utils/mock-preload-node.js +++ b/test/utils/mock-preload-node.js @@ -4,6 +4,7 @@ const http = require('http') const toUri = require('multiaddr-to-uri') const URL = require('url').URL || self.URL +const errCode = require('err-code') const defaultPort = 1138 const defaultAddr = `/dnsaddr/localhost/tcp/${defaultPort}` @@ -146,10 +147,10 @@ module.exports.waitForCids = (cids, opts, cb) => { } if (Date.now() > start + opts.timeout) { - return cb(new Error('Timed out waiting for CIDs to be preloaded')) + return cb(errCode(new Error('Timed out waiting for CIDs to be preloaded'), 'ERR_TIMEOUT')) } - setTimeout(checkForCid, 10) + setTimeout(checkForCid, 5) }) }