diff --git a/package.json b/package.json index 81875ac..9a6c035 100644 --- a/package.json +++ b/package.json @@ -9,5 +9,13 @@ "once": "^1.4.0", "pump": "^1.0.2", "qs": "^6.5.1" - } + }, + "devDependencies": { + "chai": "^4.2.0", + "mocha": "^6.1.4" + }, + "contributors": [ + "Tom O'Donnell <todonnel91@gmail.com>", + "Vaibhav Saini <vasa@towardsblockchain.com>" + ] } diff --git a/test/helpers/index.js b/test/helpers/index.js new file mode 100644 index 0000000..7e6030f --- /dev/null +++ b/test/helpers/index.js @@ -0,0 +1,6 @@ +const ipfsCluster = require('../../') + +// IPFS Cluster node (ipfs-cluster-service) must be running at port 9094 on the same machine +const cluster = ipfsCluster('127.0.0.1', '9094', {protocol: 'http'}) + +module.exports = cluster \ No newline at end of file diff --git a/test/test.id.js b/test/test.id.js new file mode 100644 index 0000000..b3a6f03 --- /dev/null +++ b/test/test.id.js @@ -0,0 +1,11 @@ +const cluster = require('./helpers') +const assert = require('chai').assert + +describe('id', () => { + it('shows cluster peer and ipfs daemon information', (done) => { + cluster.id({ protocol: 'http' }, (err, details) => { + assert.notExists(err, 'throws error while fetching cluster peer and ipfs daemon information') + done() + }) + }) +}) diff --git a/test/test.peers.add.js b/test/test.peers.add.js new file mode 100644 index 0000000..f51dfa4 --- /dev/null +++ b/test/test.peers.add.js @@ -0,0 +1,19 @@ +const cluster = require('./helpers') +const assert = require('chai').assert + +describe('peers.add', () => { + + it('throws error while adding a peer with invalid address', (done) => { + cluster.peers.add("invalid address", {}, (err) => { + assert.notDeepEqual(err, null, "adds a peer with invlaid address") + done() + }) + }) + + /* it('adds a cluster peer', (done) => { + cluster.peers.add("/ip4/1.2.3.4/tcp/1234/<peerid>", {}, (err) => { + assert.notExists(err, 'throws error while fetching the list of cluster peers') + done() + }) + }) */ +}) diff --git a/test/test.peers.ls.js b/test/test.peers.ls.js new file mode 100644 index 0000000..434863c --- /dev/null +++ b/test/test.peers.ls.js @@ -0,0 +1,11 @@ +const cluster = require('./helpers') +const assert = require('chai').assert + +describe('peers.ls', () => { + it('lists cluster peers', (done) => { + cluster.peers.ls({ protocol: 'http' }, (err, peers) => { + assert.notExists(err, 'throws error while fetching the list of cluster peers') + done() + }) + }) +}) diff --git a/test/test.peers.rm.js b/test/test.peers.rm.js new file mode 100644 index 0000000..2c37660 --- /dev/null +++ b/test/test.peers.rm.js @@ -0,0 +1,24 @@ +const cluster = require('./helpers') +const assert = require('chai').assert + +describe('peers.rm', () => { + + it('throws error while removing peer with invalid id', (done) => { + cluster.peers.rm("invalidID", {}, (err) => { + assert.notDeepEqual(err, null, "removes peer with invalid id") + done() + }) + }) + + cluster.peers.ls({protocol: 'http'}, (err, peers) => { + assert.equal(err, null, 'throws error while fetching the list of cluster peers') + if (peers.length>=2){ + it('removes a cluster peer by id', (done) => { + cluster.peers.rm(peers[1].id, {}, (err) => { + assert.equal(err, null, 'throws error while removing a cluster peer by id') + done() + }) + }) + } + }) +}) diff --git a/test/test.pin.add.js b/test/test.pin.add.js new file mode 100644 index 0000000..d7a9b31 --- /dev/null +++ b/test/test.pin.add.js @@ -0,0 +1,13 @@ +const cluster = require('./helpers') +const assert = require('chai').assert + +const CID = "QmRAQB6YaCyidP37UdDnjFY5vQuiBrcqdyoW1CuDgwxkD4" + +describe('pin.add', () => { + it('pins a CID in the cluster', (done) => { + cluster.pin.add(CID, {}, (err) => { + assert.notExists(err, 'throws error while pinning a CID in the cluster') + done() + }) + }) +}) diff --git a/test/test.pin.ls.js b/test/test.pin.ls.js new file mode 100644 index 0000000..cb45168 --- /dev/null +++ b/test/test.pin.ls.js @@ -0,0 +1,14 @@ +const cluster = require('./helpers') +const assert = require('chai').assert + +const CID = "QmRAQB6YaCyidP37UdDnjFY5vQuiBrcqdyoW1CuDgwxkD4" + +describe('pin.ls', () => { + + it('list details for a pinned CID', (done) => { + cluster.pin.ls(CID, (err, details) => { + assert.notExists(err, 'throws error while listing details for a pinned CID') + done() + }) + }) +}) diff --git a/test/test.pin.rm.js b/test/test.pin.rm.js new file mode 100644 index 0000000..a8cd082 --- /dev/null +++ b/test/test.pin.rm.js @@ -0,0 +1,13 @@ +const cluster = require('./helpers') +const assert = require('chai').assert + +const CID = "QmRAQB6YaCyidP37UdDnjFY5vQuiBrcqdyoW1CuDgwxkD4" + +describe('pin.rm', () => { + it('unpins a CID from the cluster', (done) => { + cluster.pin.rm(CID, {}, (err) => { + assert.notExists(err, 'throws error while unpinning a CID from the cluster') + done() + }) + }) +}) diff --git a/test/test.recover.js b/test/test.recover.js new file mode 100644 index 0000000..2def2ab --- /dev/null +++ b/test/test.recover.js @@ -0,0 +1,13 @@ +const cluster = require('./helpers') +const assert = require('chai').assert + +const CID = "QmRAQB6YaCyidP37UdDnjFY5vQuiBrcqdyoW1CuDgwxkD4" + +describe('recover', () => { + it('attempts to re-pin/unpin CIDs in error state', (done) => { + cluster.recover(CID, {}, (err) => { + assert.notExists(err, 'throws error while attempting to re-pin/unpin CIDs in error state') + done() + }) + }) +}) diff --git a/test/test.status.js b/test/test.status.js new file mode 100644 index 0000000..4955f70 --- /dev/null +++ b/test/test.status.js @@ -0,0 +1,13 @@ +const cluster = require('./helpers') +const assert = require('chai').assert + +const CID = "QmRAQB6YaCyidP37UdDnjFY5vQuiBrcqdyoW1CuDgwxkD4" + +describe('status', () => { + it('lists current status of tracked CIDs (local state)', (done) => { + cluster.status(CID, (err, status) => { + assert.notExists(err, 'throws error while listing current status of tracked CIDs') + done() + }) + }) +}) diff --git a/test/test.sync.js b/test/test.sync.js new file mode 100644 index 0000000..8155546 --- /dev/null +++ b/test/test.sync.js @@ -0,0 +1,13 @@ +const cluster = require('./helpers') +const assert = require('chai').assert + +const CID = "QmRAQB6YaCyidP37UdDnjFY5vQuiBrcqdyoW1CuDgwxkD4" + +describe('sync', () => { + it('re-syncs seen status against status reported by the IPFS daemon', (done) => { + cluster.id(CID, (err) => { + assert.notExists(err, 'throws error while re-syncing seen status against status reported by the IPFS daemon') + done() + }) + }) +}) diff --git a/test/test.version.js b/test/test.version.js new file mode 100644 index 0000000..4e226cf --- /dev/null +++ b/test/test.version.js @@ -0,0 +1,12 @@ +const cluster = require('./helpers') +const assert = require('chai').assert + +describe('version', () => { + it('shows version', (done) => { + cluster.version({}, (err, version) => { + assert.equal(JSON.stringify(version), JSON.stringify({ version: '0.10.1' }), "outputs invalid version") + assert.notExists(err, 'throws error while fetching cluster peer and ipfs daemon information') + done() + }) + }) +})