Skip to content
This repository has been archived by the owner on Aug 11, 2021. It is now read-only.

Commit

Permalink
feat: update dag-cbor tests to async API, solve dag-cbor bug
Browse files Browse the repository at this point in the history
  • Loading branch information
daviddias committed Oct 25, 2016
1 parent 05d4e74 commit 733876b
Show file tree
Hide file tree
Showing 3 changed files with 105 additions and 76 deletions.
3 changes: 2 additions & 1 deletion src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,8 @@ class IPLDResolver {
if (err) {
return cb(err)
}
this.resolvers[cid.codec].resolver.resolve(block, path, (err, result) => {
const r = this.resolvers[cid.codec]
r.resolver.resolve(block, path, (err, result) => {
if (err) {
return cb(err)
}
Expand Down
176 changes: 102 additions & 74 deletions test/test-ipld-dag-cbor.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
const expect = require('chai').expect
const BlockService = require('ipfs-block-service')
const dagCBOR = require('ipld-dag-cbor')
// const series = require('async/series')
const series = require('async/series')
const pull = require('pull-stream')

const IPLDResolver = require('../src')
Expand All @@ -17,11 +17,38 @@ module.exports = (repo) => {
let node1
let node2
let node3
let cid1
let cid2
let cid3

before(() => {
before((done) => {
node1 = { someData: new Buffer('I am 1') }
node2 = { someData: new Buffer('I am 2') }
node3 = { someData: new Buffer('I am 3') }

series([
(cb) => {
dagCBOR.util.cid(node1, (err, cid) => {
expect(err).to.not.exist
cid1 = cid
cb()
})
},
(cb) => {
dagCBOR.util.cid(node2, (err, cid) => {
expect(err).to.not.exist
cid2 = cid
cb()
})
},
(cb) => {
dagCBOR.util.cid(node3, (err, cid) => {
expect(err).to.not.exist
cid3 = cid
cb()
})
}
], done)
})

it('creates an in memory repo if no blockService is passed', () => {
Expand All @@ -32,16 +59,16 @@ module.exports = (repo) => {
it('resolver.put', (done) => {
resolver.put({
node: node1,
cid: dagCBOR.util.cid(node1)
cid: cid1
}, done)
})

it('resolver.putStream', (done) => {
pull(
pull.values([
{ node: node1, cid: dagCBOR.util.cid(node1) },
{ node: node2, cid: dagCBOR.util.cid(node2) },
{ node: node3, cid: dagCBOR.util.cid(node3) }
{ node: node1, cid: cid1 },
{ node: node2, cid: cid2 },
{ node: node3, cid: cid3 }
]),
resolver.putStream(done)
)
Expand All @@ -50,10 +77,10 @@ module.exports = (repo) => {
it('resolver.get', (done) => {
resolver.put({
node: node1,
cid: dagCBOR.util.cid(node1)
cid: cid1
}, (err) => {
expect(err).to.not.exist
resolver.get(dagCBOR.util.cid(node1), (err, node) => {
resolver.get(cid1, (err, node) => {
expect(err).to.not.exist
expect(node1).to.eql(node)
done()
Expand All @@ -64,11 +91,11 @@ module.exports = (repo) => {
it('resolver.getStream', (done) => {
resolver.put({
node: node1,
cid: dagCBOR.util.cid(node1)
cid: cid1
}, (err) => {
expect(err).to.not.exist
pull(
resolver.getStream(dagCBOR.util.cid(node1)),
resolver.getStream(cid1),
pull.collect((err, nodes) => {
expect(err).to.not.exist
expect(node1).to.eql(nodes[0])
Expand All @@ -78,57 +105,23 @@ module.exports = (repo) => {
})
})

it.skip('resolver.getRecursive', (done) => {
/*
// 1 -> 2 -> 3
const node1 = {data: '1'}
const node2 = {data: '2'}
const node3 = {data: '3'}
node2.ref = {
'/': ipld.multihash(ipld.marshal(node3))
}
node1.ref = {
'/': ipld.multihash(ipld.marshal(node2))
}
series([
(cb) => ipldService.put(node1, cb),
(cb) => ipldService.put(node2, cb),
(cb) => ipldService.put(node3, cb),
(cb) => {
const mh = multihash(ipld.marshal(node1), 'sha2-256')
ipldService.getRecursive(mh, (err, nodes) => {
expect(err).to.not.exist
expect(nodes).to.have.length(3)
cb()
})
}
], (err) => {
expect(err).to.not.exist
done()
})
*/
})

it('resolver.remove', (done) => {
resolver.put({
node: node1,
cid: dagCBOR.util.cid(node1)
cid: cid1
}, (err) => {
expect(err).to.not.exist
resolver.get(dagCBOR.util.cid(node1), (err, node) => {
resolver.get(cid1, (err, node) => {
expect(err).to.not.exist
expect(node1).to.eql(node)
remove()
})
})

function remove () {
resolver.remove(dagCBOR.util.cid(node1), (err) => {
resolver.remove(cid1, (err) => {
expect(err).to.not.exist
resolver.get(dagCBOR.util.cid(node1), (err) => {
resolver.get(cid1, (err) => {
expect(err).to.exist
done()
})
Expand All @@ -143,59 +136,94 @@ module.exports = (repo) => {
let node1
let node2
let node3
let cid1
let cid2
let cid3

before((done) => {
resolver = new IPLDResolver()

node1 = {
someData: 'I am 1'
}
node2 = {
someData: 'I am 2',
'one': { '/': dagCBOR.util.cid(node1).toBaseEncodedString() }
}
node3 = {
someData: 'I am 3',
'one': { '/': dagCBOR.util.cid(node1).toBaseEncodedString() },
'two': { '/': dagCBOR.util.cid(node2).toBaseEncodedString() }
}
series([
(cb) => {
node1 = {
someData: 'I am 1'
}

pull(
pull.values([
{ node: node1, cid: dagCBOR.util.cid(node1) },
{ node: node2, cid: dagCBOR.util.cid(node2) },
{ node: node3, cid: dagCBOR.util.cid(node3) }
]),
resolver.putStream(done)
)
dagCBOR.util.cid(node1, (err, cid) => {
expect(err).to.not.exist
cid1 = cid
cb()
})
},
(cb) => {
node2 = {
someData: 'I am 2',
'one': { '/': cid1.toBaseEncodedString() }
}

dagCBOR.util.cid(node2, (err, cid) => {
expect(err).to.not.exist
cid2 = cid
cb()
})
},
(cb) => {
node3 = {
someData: 'I am 3',
'one': { '/': cid1.toBaseEncodedString() },
'two': { '/': cid2.toBaseEncodedString() }
}

dagCBOR.util.cid(node3, (err, cid) => {
expect(err).to.not.exist
cid3 = cid
cb()
})
}
], store)

function store () {
pull(
pull.values([
{ node: node1, cid: cid1 },
{ node: node2, cid: cid2 },
{ node: node3, cid: cid3 }
]),
resolver.putStream(done)
)
}
})

it('root path (same as get)', (done) => {
resolver.resolve(dagCBOR.util.cid(node1), '/', (err, result) => {
resolver.resolve(cid1, '/', (err, result) => {
expect(err).to.not.exist
expect(dagCBOR.util.cid(result)).to.eql(dagCBOR.util.cid(node1))
done()

dagCBOR.util.cid(result, (err, cid) => {
expect(err).to.not.exist
expect(cid).to.eql(cid1)
done()
})
})
})

it('value within 1st node scope', (done) => {
resolver.resolve(dagCBOR.util.cid(node1), 'someData', (err, result) => {
resolver.resolve(cid1, 'someData', (err, result) => {
expect(err).to.not.exist
expect(result).to.eql('I am 1')
done()
})
})

it('value within nested scope (1 level)', (done) => {
resolver.resolve(dagCBOR.util.cid(node2), 'one/someData', (err, result) => {
resolver.resolve(cid2, 'one/someData', (err, result) => {
expect(err).to.not.exist
expect(result).to.eql('I am 1')
done()
})
})

it('value within nested scope (2 levels)', (done) => {
resolver.resolve(dagCBOR.util.cid(node3), 'two/one/someData', (err, result) => {
resolver.resolve(cid3, 'two/one/someData', (err, result) => {
expect(err).to.not.exist
expect(result).to.eql('I am 1')
done()
Expand Down
2 changes: 1 addition & 1 deletion test/test-ipld-dag-pb.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ const pull = require('pull-stream')
const IPLDResolver = require('../src')

module.exports = (repo) => {
describe.only('IPLD Resolver with dag-pb (MerkleDAG Protobuf)', () => {
describe('IPLD Resolver with dag-pb (MerkleDAG Protobuf)', () => {
const bs = new BlockService(repo)
const resolver = new IPLDResolver(bs)

Expand Down

0 comments on commit 733876b

Please sign in to comment.