diff --git a/package.json b/package.json index 17123f2f27..5043f93e4d 100644 --- a/package.json +++ b/package.json @@ -8,8 +8,11 @@ "main": "src/index.js", "scripts": { "lint": "standard", - "coverage": "istanbul cover --print both -- _mocha tests/test-*/test-*.js", - "test": "mocha tests/test-*/test-*.js" + "coverage": "istanbul cover --print both -- _mocha tests/test-*/index.js", + "test": "mocha tests/test-*/index.js", + "test:core": "mocha tests/test-core/index.js", + "test:cli": "mocha tests/test-cli/index.js", + "test:cli-offline": "mocha tests/test-cli-offline/index.js" }, "pre-commit": [ "lint", diff --git a/src/http-api/index.js b/src/http-api/index.js index fdf88ee32b..5da4f15c71 100644 --- a/src/http-api/index.js +++ b/src/http-api/index.js @@ -26,7 +26,7 @@ exports.start = callback => { }) // load routes - require('./routes/version.js') + require('./routes') server.start(err => { if (err) { return callback(err) } @@ -35,6 +35,6 @@ exports.start = callback => { }) } -exports.stop = () => { - +exports.stop = callback => { + exports.server.stop(callback) } diff --git a/src/http-api/resources/id.js b/src/http-api/resources/id.js new file mode 100644 index 0000000000..0f96aa87a1 --- /dev/null +++ b/src/http-api/resources/id.js @@ -0,0 +1,14 @@ +'use strict' + +const ipfs = require('./../index.js').ipfs +const boom = require('boom') + +exports = module.exports + +exports.get = (request, reply) => { + ipfs.id((err, id) => { + if (err) { return reply(boom.badRequest(err)) } + return reply(id) + }) +} + diff --git a/src/http-api/resources/index.js b/src/http-api/resources/index.js index 85867b265c..8b370daa81 100644 --- a/src/http-api/resources/index.js +++ b/src/http-api/resources/index.js @@ -1 +1,2 @@ exports.version = require('./version') +exports.id = require('./id') diff --git a/src/http-api/routes/id.js b/src/http-api/routes/id.js new file mode 100644 index 0000000000..1d34399a5f --- /dev/null +++ b/src/http-api/routes/id.js @@ -0,0 +1,10 @@ +'use strict' + +const server = require('./../index.js').server +const resources = require('./../resources') + +server.route({ + method: 'GET', + path: '/api/v0/id', + handler: resources.id.get +}) diff --git a/src/http-api/routes/index.js b/src/http-api/routes/index.js new file mode 100644 index 0000000000..1a865494dd --- /dev/null +++ b/src/http-api/routes/index.js @@ -0,0 +1,2 @@ +require('./version') +require('./id') diff --git a/src/ipfs-core/index.js b/src/ipfs-core/index.js index bc409ef712..6f4da49bc6 100644 --- a/src/ipfs-core/index.js +++ b/src/ipfs-core/index.js @@ -42,7 +42,7 @@ function IPFS () { repo.exists((err, exists) => { if (err) { return callback(err) } - repo.config.read((err, config) => { + repo.config.get((err, config) => { if (err) { return callback(err) } diff --git a/tests/test-api/index.js b/tests/test-api/index.js new file mode 100644 index 0000000000..42860fbd8f --- /dev/null +++ b/tests/test-api/index.js @@ -0,0 +1,35 @@ +/* globals describe, before, after */ + +'use strict' + +const fs = require('fs') +const expect = require('chai').expect +process.env.IPFS_PATH = process.cwd() + '/tests/repo-example' +const api = require('../../src/http-api') + +describe('api', () => { + before(done => { + api.start(err => { + expect(err).to.not.exist + done() + }) + }) + + after(done => { + api.stop((err) => { + expect(err).to.not.exist + done() + }) + }) + + var tests = fs.readdirSync(__dirname) + tests.filter(file => { + if (file === 'index.js') { + return false + } else { + return true + } + }).forEach(file => { + require('./' + file) + }) +}) diff --git a/tests/test-api/test-id.js b/tests/test-api/test-id.js new file mode 100644 index 0000000000..3825d3c8c3 --- /dev/null +++ b/tests/test-api/test-id.js @@ -0,0 +1,26 @@ +/* globals describe, it */ + +'use strict' + +const expect = require('chai').expect +const api = require('../../src/http-api') + +describe('id', function () { + it('get the id', done => { + api.server.inject({ + method: 'GET', + url: '/api/v0/id' + }, res => { + expect(res.result).to.deep.equal({ ID: 'QmQ2zigjQikYnyYUSXZydNXrDRhBut2mubwJBaLXobMt3A', + PublicKey: '', + Addresses: + { Swarm: [ '/ip4/0.0.0.0/tcp/4001', '/ip6/::/tcp/4001' ], + API: '/ip4/127.0.0.1/tcp/5001', + Gateway: '/ip4/127.0.0.1/tcp/8080' }, + AgentVersion: 'js-ipfs', + ProtocolVersion: '9000' + }) + done() + }) + }) +}) diff --git a/tests/test-api/test-version.js b/tests/test-api/test-version.js index 15202c193c..d04f6251f1 100644 --- a/tests/test-api/test-version.js +++ b/tests/test-api/test-version.js @@ -2,21 +2,16 @@ 'use strict' const expect = require('chai').expect - -process.env.IPFS_PATH = process.cwd() + '/tests/repo-example' const api = require('../../src/http-api') -describe('api: version', function () { +describe('version', function () { it('get the version', done => { - api.start(err => { - expect(err).to.not.exist - api.server.inject({ - method: 'GET', - url: '/api/v0/version' - }, res => { - expect(res.result).to.equal('0.4.0-dev') - done() - }) + api.server.inject({ + method: 'GET', + url: '/api/v0/version' + }, res => { + expect(res.result).to.equal('0.4.0-dev') + done() }) }) }) diff --git a/tests/test-cli-offline/index.js b/tests/test-cli-offline/index.js new file mode 100644 index 0000000000..f857c6c7c1 --- /dev/null +++ b/tests/test-cli-offline/index.js @@ -0,0 +1,18 @@ +/* globals describe */ + +'use strict' + +var fs = require('fs') + +describe('cli-offline', () => { + var tests = fs.readdirSync(__dirname) + tests.filter(file => { + if (file === 'index.js') { + return false + } else { + return true + } + }).forEach(file => { + require('./' + file) + }) +}) diff --git a/tests/test-cli-offline/test-id.js b/tests/test-cli-offline/test-id.js new file mode 100644 index 0000000000..ca89094d8f --- /dev/null +++ b/tests/test-cli-offline/test-id.js @@ -0,0 +1,34 @@ +/* globals describe, it */ + +'use strict' + +const expect = require('chai').expect +const nexpect = require('nexpect') + +describe('id', () => { + it('get the id', done => { + nexpect.spawn('node', [process.cwd() + '/src/cli/bin.js', 'id']) + .run((err, stdout, exitcode) => { + var expected = [ '{ ID: \'QmQ2zigjQikYnyYUSXZydNXrDRhBut2mubwJBaLXobMt3A\',', + ' PublicKey: \'\',', + ' Addresses: ', + ' { Swarm: [ \'/ip4/0.0.0.0/tcp/4001\', \'/ip6/::/tcp/4001\' ],', + ' API: \'/ip4/127.0.0.1/tcp/5001\',', + ' Gateway: \'/ip4/127.0.0.1/tcp/8080\' },', + ' AgentVersion: \'js-ipfs\',', + ' ProtocolVersion: \'9000\' }' ] + + expect(stdout[0]).to.equal(expected[0]) + expect(stdout[1]).to.equal(expected[1]) + expect(stdout[2]).to.equal(expected[2]) + expect(stdout[3]).to.equal(expected[3]) + expect(stdout[4]).to.equal(expected[4]) + expect(stdout[5]).to.equal(expected[5]) + expect(stdout[6]).to.equal(expected[6]) + expect(stdout[7]).to.equal(expected[7]) + expect(err).to.not.exist + expect(exitcode).to.equal(0) + done() + }) + }) +}) diff --git a/tests/test-cli-offline/test-version.js b/tests/test-cli-offline/test-version.js index 3cc5636f7d..cc41a4d4d1 100644 --- a/tests/test-cli-offline/test-version.js +++ b/tests/test-cli-offline/test-version.js @@ -5,7 +5,7 @@ const expect = require('chai').expect const nexpect = require('nexpect') -describe('cli-offline: version', () => { +describe('version', () => { it('get the version', done => { nexpect.spawn('node', [process.cwd() + '/src/cli/bin.js', 'version']) .expect('0.4.0-dev') diff --git a/tests/test-cli/index.js b/tests/test-cli/index.js new file mode 100644 index 0000000000..b5bdd7df1b --- /dev/null +++ b/tests/test-cli/index.js @@ -0,0 +1,18 @@ +/* globals describe */ + +'use strict' + +var fs = require('fs') + +describe('cli', () => { + var tests = fs.readdirSync(__dirname) + tests.filter(file => { + if (file === 'index.js') { + return false + } else { + return true + } + }).forEach(file => { + require('./' + file) + }) +}) diff --git a/tests/test-cli/test-id.js b/tests/test-cli/test-id.js new file mode 100644 index 0000000000..ca89094d8f --- /dev/null +++ b/tests/test-cli/test-id.js @@ -0,0 +1,34 @@ +/* globals describe, it */ + +'use strict' + +const expect = require('chai').expect +const nexpect = require('nexpect') + +describe('id', () => { + it('get the id', done => { + nexpect.spawn('node', [process.cwd() + '/src/cli/bin.js', 'id']) + .run((err, stdout, exitcode) => { + var expected = [ '{ ID: \'QmQ2zigjQikYnyYUSXZydNXrDRhBut2mubwJBaLXobMt3A\',', + ' PublicKey: \'\',', + ' Addresses: ', + ' { Swarm: [ \'/ip4/0.0.0.0/tcp/4001\', \'/ip6/::/tcp/4001\' ],', + ' API: \'/ip4/127.0.0.1/tcp/5001\',', + ' Gateway: \'/ip4/127.0.0.1/tcp/8080\' },', + ' AgentVersion: \'js-ipfs\',', + ' ProtocolVersion: \'9000\' }' ] + + expect(stdout[0]).to.equal(expected[0]) + expect(stdout[1]).to.equal(expected[1]) + expect(stdout[2]).to.equal(expected[2]) + expect(stdout[3]).to.equal(expected[3]) + expect(stdout[4]).to.equal(expected[4]) + expect(stdout[5]).to.equal(expected[5]) + expect(stdout[6]).to.equal(expected[6]) + expect(stdout[7]).to.equal(expected[7]) + expect(err).to.not.exist + expect(exitcode).to.equal(0) + done() + }) + }) +}) diff --git a/tests/test-cli/test-version.js b/tests/test-cli/test-version.js index baa493ee0a..cc41a4d4d1 100644 --- a/tests/test-cli/test-version.js +++ b/tests/test-cli/test-version.js @@ -1,10 +1,11 @@ /* globals describe, it */ + 'use strict' const expect = require('chai').expect const nexpect = require('nexpect') -describe('cli: version', () => { +describe('version', () => { it('get the version', done => { nexpect.spawn('node', [process.cwd() + '/src/cli/bin.js', 'version']) .expect('0.4.0-dev') diff --git a/tests/test-core/index.js b/tests/test-core/index.js new file mode 100644 index 0000000000..225b770f39 --- /dev/null +++ b/tests/test-core/index.js @@ -0,0 +1,18 @@ +/* globals describe */ + +'use strict' + +var fs = require('fs') + +describe('core', () => { + var tests = fs.readdirSync(__dirname) + tests.filter(file => { + if (file === 'index.js') { + return false + } else { + return true + } + }).forEach(file => { + require('./' + file) + }) +}) diff --git a/tests/test-core/test-id.js b/tests/test-core/test-id.js new file mode 100644 index 0000000000..76d3a9db93 --- /dev/null +++ b/tests/test-core/test-id.js @@ -0,0 +1,27 @@ +/* globals describe, it */ + +'use strict' + +const expect = require('chai').expect + +process.env.IPFS_PATH = process.cwd() + '/tests/repo-example' +const IPFS = require('../../src/ipfs-core') + +describe('id', () => { + it('get id', done => { + let ipfs = new IPFS() + ipfs.id((err, id) => { + expect(err).to.not.exist + expect(id).to.deep.equal({ ID: 'QmQ2zigjQikYnyYUSXZydNXrDRhBut2mubwJBaLXobMt3A', + PublicKey: '', + Addresses: + { Swarm: [ '/ip4/0.0.0.0/tcp/4001', '/ip6/::/tcp/4001' ], + API: '/ip4/127.0.0.1/tcp/5001', + Gateway: '/ip4/127.0.0.1/tcp/8080' }, + AgentVersion: 'js-ipfs', + ProtocolVersion: '9000' + }) + done() + }) + }) +}) diff --git a/tests/test-core/test-version.js b/tests/test-core/test-version.js index fe0f925674..debf634dbc 100644 --- a/tests/test-core/test-version.js +++ b/tests/test-core/test-version.js @@ -7,7 +7,7 @@ const expect = require('chai').expect process.env.IPFS_PATH = process.cwd() + '/tests/repo-example' const IPFS = require('../../src/ipfs-core') -describe('core: version', () => { +describe('version', () => { it('get version', done => { let ipfs = new IPFS() ipfs.version((err, version) => {