Skip to content
This repository has been archived by the owner on Mar 10, 2020. It is now read-only.

Commit

Permalink
feat: add bitswap.unwant javascript spec
Browse files Browse the repository at this point in the history
  • Loading branch information
wraithgar authored and alanshaw committed Jun 18, 2018
1 parent b9e5a21 commit c291ca9
Show file tree
Hide file tree
Showing 3 changed files with 147 additions and 1 deletion.
15 changes: 14 additions & 1 deletion SPEC/BITSWAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,20 @@
* [bitswap.unwant](#bitswapunwant)
* [bitswap.stat](#bitswapstat)

#### `bitswap.wantlist`
#### `unwant`

> Removes a given block from your wantlist
##### `Go` **WIP**

##### `JavaScript` - ipfs.bitswap.unwant(cid)

`cid` is a [cid][cid] which can be passed as:

- CID, a CID instance
- String, the base58 encoded version of the multihash

### `bitswap.wantlist`

(not spec'ed yet)

Expand Down
132 changes: 132 additions & 0 deletions js/src/bitswap.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
'use strict'

const chai = require('chai')
const dirtyChai = require('dirty-chai')
const expect = chai.expect
const statsTests = require('./utils/stats')
const spawn = require('./utils/spawn')
chai.use(dirtyChai)
const CID = require('cids')

module.exports = (common) => {
describe('.bitswap online', () => {
let ipfs
let withGo
const key = 'QmUBdnXXPyoDFXj3Hj39dNJ5VkN3QFRskXxcGaYFBB8CNR'

before(function (done) {
// CI takes longer to instantiate the daemon, so we need to increase the
// timeout for the before step
this.timeout(60 * 250)

common.setup((err, factory) => {
expect(err).to.not.exist()
spawn.spawnNodeWithId(factory, (err, node) => {
expect(err).to.not.exist()
ipfs = node
withGo = node.peerId.agentVersion.startsWith('go-ipfs')
ipfs.block.get(key)
.then(() => {})
.catch(() => {})
done()
})
})
})

after((done) => common.teardown(done))

it('.stat', (done) => {

ipfs.bitswap.stat((err, stats) => {
statsTests.expectIsBitswap(err, stats)
done()
})
})

it('.wantlist', (done) => {
ipfs.bitswap.wantlist((err, list) => {
expect(err).to.not.exist()
expect(list.Keys).to.have.length(1);
expect(list.Keys[0]['/']).to.equal(key)
done()
})
})

it('.unwant', function (done) {
if (withGo) {
this.skip()
}
ipfs.bitswap.unwant(key, (err) => {
expect(err).to.not.exist();
ipfs.bitswap.wantlist((err, list) => {
expect(err).to.not.exist();
expect(list.Keys).to.be.empty()
done()
})
})
})
})

describe('.bitswap offline', () => {
let ipfs

before(function (done) {
// CI takes longer to instantiate the daemon, so we need to increase the
// timeout for the before step
this.timeout(60 * 1000)

common.setup((err, factory) => {
expect(err).to.not.exist()
factory.spawnNode((err, node) => {
expect(err).to.not.exist()
ipfs = node
ipfs.id((err, id) => {
expect(err).to.not.exist()
ipfs.stop((err) => {
// TODO: go-ipfs returns an error, https://github.com/ipfs/go-ipfs/issues/4078
if (!id.agentVersion.startsWith('go-ipfs')) {
expect(err).to.not.exist()
}
done()
})
})
})
})
})

it('.stat gives error while offline', () => {
ipfs.bitswap.stat((err, stats) => {
expect(err).to.exist()
//When run against core we get our expected error, when run
//as part of the http tests we get a connection refused
if (err.code !== 'ECONNREFUSED') {
expect(err).to.match(/online mode/)
}
expect(stats).to.not.exist()
})
})

it('.wantlist gives error if offline', () => {
ipfs.bitswap.wantlist((err, list) => {
expect(err).to.exist()
//When run against core we get our expected error, when run
//as part of the http tests we get a connection refused
if (err.code !== 'ECONNREFUSED') {
expect(err).to.match(/online mode/)
}
expect(list).to.not.exist()
})
})

it('.unwant gives error if offline', () => {
expect(() => ipfs.bitswap.unwant(key, (err) => {
expect(err).to.exist()
//When run against core we get our expected error, when run
//as part of the http tests we get a connection refused
if (err.code !== 'ECONNREFUSED') {
expect(err).to.match(/online mode/)
}
}))
})
})
}
1 change: 1 addition & 0 deletions js/src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,4 @@ exports.repo = require('./repo')
exports.bootstrap = require('./bootstrap')
exports.types = require('./types')
exports.util = require('./util')
exports.bitswap = require('./bitswap')

0 comments on commit c291ca9

Please sign in to comment.