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 committed May 14, 2018
1 parent 4fe224b commit b90c42e
Show file tree
Hide file tree
Showing 3 changed files with 121 additions and 1 deletion.
13 changes: 12 additions & 1 deletion SPEC/BITSWAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,18 @@ Bitswap API

#### `wantlist` (not spec'ed yet)

#### `unwant` (not spec'ed yet)
#### `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

#### `stat`

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

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

module.exports = (common) => {
describe('.bitswap online', () => {
let ipfs
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 * 1000)

common.setup((err, factory) => {
expect(err).to.not.exist()
factory.spawnNode((err, node) => {
expect(err).to.not.exist()
ipfs = node
ipfs.block.get(new CID(key))
.then(() => {})
.catch(() => {})
setTimeout(done, 250)
})
})
})

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[0].cid.toBaseEncodedString()).to.equal(key)
done()
})
})

it('.unwant', (done) => {
ipfs.bitswap.unwant(new CID(key), (err) => {
ipfs.bitswap.wantlist((err, list) => {
expect(list).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()
expect(stats).to.not.exist()
})
})

it('.wantlist gives error if offline', () => {
ipfs.bitswap.wantlist((err, list) => {
expect(err).to.exist()
expect(list).to.not.exist()
})
})

it('.unwant gives error if offline', () => {
expect(() => ipfs.bitswap.unwant(new CID(key), (err) => {
expect(err).to.exist()
}))
})
})
}
1 change: 1 addition & 0 deletions js/src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,4 @@ exports.stats = require('./stats')
exports.repo = require('./repo')
exports.bootstrap = require('./bootstrap')
exports.types = require('./types')
exports.bitswap = require('./bitswap')

0 comments on commit b90c42e

Please sign in to comment.