From f603e6fd91b7e0cc79d92ee8904e7ff3b85f1c99 Mon Sep 17 00:00:00 2001 From: Jeff Downie Date: Mon, 16 Jan 2017 14:42:09 +0000 Subject: [PATCH 1/2] Converting string input data to Buffer. --- README.md | 10 +++++++--- src/dag-node/create.js | 2 ++ test/dag-node-test.js | 23 +++++++++++++++++++++++ 3 files changed, 32 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 0a2865e..3e485ea 100644 --- a/README.md +++ b/README.md @@ -71,7 +71,7 @@ const dagPB = require('ipld-dag-pb') dagPB.DAGNode.create // create a DAGNode dagPB.DAGNode.clone // clone a DAGNode dagPB.DAGNode.addLink // add a Link to a DAGNode, creating a new one -dagPB.DAGNode.rmLinkq // remove a Link to a DAGNode, creating a new one +dagPB.DAGNode.rmLink // remove a Link to a DAGNode, creating a new one dagPB.DAGLink.create // create a DAGLink // IPLD Format specifics @@ -84,11 +84,15 @@ dagPB.util #### Create a DAGNode ```JavaScript -DAGNode.create(new Buffer('some data'), (err, node) => { +DAGNode.create(new Buffer('some data'), (err, node1) => { if (err) { throw error } - // node is your DAGNode instance + // node1 is your DAGNode instance. +}) + +DAGNode.create('string data', (err, node2) => { + // node2 will have the same data as node1. }) ``` diff --git a/src/dag-node/create.js b/src/dag-node/create.js index bfd2d7e..51e4190 100644 --- a/src/dag-node/create.js +++ b/src/dag-node/create.js @@ -13,6 +13,8 @@ function create (data, dagLinks, hashAlg, callback) { if (typeof data === 'function') { callback = data data = undefined + } else if (typeof data === 'string') { + data = new Buffer(data) } if (typeof dagLinks === 'function') { callback = dagLinks diff --git a/test/dag-node-test.js b/test/dag-node-test.js index 9a7aa64..10699dd 100644 --- a/test/dag-node-test.js +++ b/test/dag-node-test.js @@ -34,6 +34,29 @@ module.exports = (repo) => { expect(node.data.length).to.be.above(0).mark() expect(Buffer.isBuffer(node.data)).to.be.true.mark() expect(node.size).to.be.above(0).mark() + expect(node.toJSON().multihash).to.be.equal('Qmd7xRhW5f29QuBFtqu3oSD27iVy35NRB91XFjmKFhtgMr') + + dagPB.util.serialize(node, (err, serialized) => { + expect(err).to.not.exist.mark() + + dagPB.util.deserialize(serialized, (err, deserialized) => { + expect(err).to.not.exist.mark() + expect(node.data).to.eql(deserialized.data).mark() + }) + }) + }) + }) + + it('create a node with string data', (done) => { + expect(7).checks(done) + const data = 'some data' + + DAGNode.create(data, (err, node) => { + expect(err).to.not.exist.mark() + expect(node.data.length).to.be.above(0).mark() + expect(Buffer.isBuffer(node.data)).to.be.true.mark() + expect(node.size).to.be.above(0).mark() + expect(node.toJSON().multihash).to.be.equal('Qmd7xRhW5f29QuBFtqu3oSD27iVy35NRB91XFjmKFhtgMr') dagPB.util.serialize(node, (err, serialized) => { expect(err).to.not.exist.mark() From 887f04922331c2f97e1d4611cb6a8478facc4b5b Mon Sep 17 00:00:00 2001 From: Jeff Downie Date: Mon, 16 Jan 2017 15:37:04 +0000 Subject: [PATCH 2/2] Being more strict with DAGNode.create input data. Also added vim .swp files to .gitignore --- .gitignore | 5 ++++- src/dag-node/create.js | 4 ++++ test/dag-node-test.js | 12 ++++++++++++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index c47d338..5ed0715 100644 --- a/.gitignore +++ b/.gitignore @@ -34,4 +34,7 @@ node_modules dist test/repo-just-for-test* -/test/blocks \ No newline at end of file +/test/blocks + +# Vim .swp files +**.swp diff --git a/src/dag-node/create.js b/src/dag-node/create.js index 51e4190..89de1ca 100644 --- a/src/dag-node/create.js +++ b/src/dag-node/create.js @@ -25,6 +25,10 @@ function create (data, dagLinks, hashAlg, callback) { hashAlg = undefined } + if (!Buffer.isBuffer(data)) { + return callback('Passed \'data\' is not a buffer or a string!') + } + if (!hashAlg) { hashAlg = 'sha2-256' } diff --git a/test/dag-node-test.js b/test/dag-node-test.js index 10699dd..f0404eb 100644 --- a/test/dag-node-test.js +++ b/test/dag-node-test.js @@ -150,6 +150,18 @@ module.exports = (repo) => { }) }) + it('fail to create a node with other data types', (done) => { + DAGNode.create({}, (err, node) => { + expect(err).to.exist + expect(node).to.not.exist + DAGNode.create([], (err, node) => { + expect(err).to.exist + expect(node).to.not.exist + done() + }) + }) + }) + it('addLink by DAGNode', (done) => { let node1 let node2