Browse Source

test: update tests

patch-2
Jason Dreyzehner 8 years ago
parent
commit
024cbcdf88
  1. 48
      npm-shrinkwrap.json
  2. 10904
      package-lock.json
  3. 46
      package.json
  4. 18
      test/index.js
  5. 135
      test/transaction/output.js

48
npm-shrinkwrap.json

@ -1,48 +0,0 @@
{
"name": "bitcore",
"version": "0.13.19",
"dependencies": {
"bn.js": {
"version": "2.0.4",
"from": "bn.js@=2.0.4",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-2.0.4.tgz"
},
"bs58": {
"version": "2.0.0",
"from": "bs58@=2.0.0",
"resolved": "https://registry.npmjs.org/bs58/-/bs58-2.0.0.tgz"
},
"buffer-compare": {
"version": "1.0.0",
"from": "buffer-compare@=1.0.0",
"resolved": "https://registry.npmjs.org/buffer-compare/-/buffer-compare-1.0.0.tgz"
},
"elliptic": {
"version": "3.0.3",
"from": "elliptic@=3.0.3",
"resolved": "https://registry.npmjs.org/elliptic/-/elliptic-3.0.3.tgz",
"dependencies": {
"brorand": {
"version": "1.0.5",
"from": "brorand@^1.0.1",
"resolved": "https://registry.npmjs.org/brorand/-/brorand-1.0.5.tgz"
},
"hash.js": {
"version": "1.0.3",
"from": "hash.js@=1.0.3",
"resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.0.3.tgz"
}
}
},
"inherits": {
"version": "2.0.1",
"from": "inherits@=2.0.1",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz"
},
"lodash": {
"version": "3.10.1",
"from": "lodash@=3.10.1",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz"
}
}
}

10904
package-lock.json

File diff suppressed because it is too large

46
package.json

@ -10,52 +10,6 @@
"coverage": "gulp coverage", "coverage": "gulp coverage",
"build": "gulp" "build": "gulp"
}, },
"contributors": [
{
"name": "Daniel Cousens",
"email": "bitcoin@dcousens.com"
},
{
"name": "Esteban Ordano",
"email": "eordano@gmail.com"
},
{
"name": "Gordon Hall",
"email": "gordon@bitpay.com"
},
{
"name": "Jeff Garzik",
"email": "jgarzik@bitpay.com"
},
{
"name": "Kyle Drake",
"email": "kyle@kyledrake.net"
},
{
"name": "Manuel Araoz",
"email": "manuelaraoz@gmail.com"
},
{
"name": "Matias Alejo Garcia",
"email": "ematiu@gmail.com"
},
{
"name": "Ryan X. Charles",
"email": "ryanxcharles@gmail.com"
},
{
"name": "Stefan Thomas",
"email": "moon@justmoon.net"
},
{
"name": "Stephen Pair",
"email": "stephen@bitpay.com"
},
{
"name": "Wei Lu",
"email": "luwei.here@gmail.com"
}
],
"keywords": [ "keywords": [
"bitcoin", "bitcoin",
"transaction", "transaction",

18
test/index.js

@ -1,16 +1,4 @@
'use strict'; "use strict";
var should = require('chai').should(); var should = require("chai").should();
var bitcore = require('../'); var bitcore = require("../");
describe('#versionGuard', function() {
it('global._bitcore should be defined', function() {
should.equal(global._bitcore, bitcore.version);
});
it('throw an error if version is already defined', function() {
(function() {
bitcore.versionGuard('version');
}).should.throw('More than one instance of bitcore');
});
});

135
test/transaction/output.js

@ -1,12 +1,12 @@
'use strict'; "use strict";
/* jshint unused: false */ /* jshint unused: false */
/* jshint latedef: false */ /* jshint latedef: false */
var should = require('chai').should(); var should = require("chai").should();
var expect = require('chai').expect; var expect = require("chai").expect;
var _ = require('lodash'); var _ = require("lodash");
var bitcore = require('../..'); var bitcore = require("../..");
var BN = bitcore.crypto.BN; var BN = bitcore.crypto.BN;
var BufferWriter = bitcore.encoding.BufferWriter; var BufferWriter = bitcore.encoding.BufferWriter;
var BufferReader = bitcore.encoding.BufferReader; var BufferReader = bitcore.encoding.BufferReader;
@ -15,20 +15,19 @@ var Script = bitcore.Script;
var errors = bitcore.errors; var errors = bitcore.errors;
describe('Output', function() { describe("Output", function() {
var output = new Output({ var output = new Output({
satoshis: 0, satoshis: 0,
script: Script.empty() script: Script.empty()
}); });
it('throws error with unrecognized argument', function() { it("throws error with unrecognized argument", function() {
(function() { (function() {
var out = new Output(12345); var out = new Output(12345);
}).should.throw(TypeError); }.should.throw(TypeError));
}); });
it('can be assigned a satoshi amount in big number', function() { it("can be assigned a satoshi amount in big number", function() {
var newOutput = new Output({ var newOutput = new Output({
satoshis: new BN(100), satoshis: new BN(100),
script: Script.empty() script: Script.empty()
@ -36,49 +35,49 @@ describe('Output', function() {
newOutput.satoshis.should.equal(100); newOutput.satoshis.should.equal(100);
}); });
it('can be assigned a satoshi amount with a string', function() { it("can be assigned a satoshi amount with a string", function() {
var newOutput = new Output({ var newOutput = new Output({
satoshis: '100', satoshis: "100",
script: Script.empty() script: Script.empty()
}); });
newOutput.satoshis.should.equal(100); newOutput.satoshis.should.equal(100);
}); });
describe('will error if output is not a positive integer', function() { describe("will error if output is not a positive integer", function() {
it('-100', function() { it("-100", function() {
(function() { (function() {
var newOutput = new Output({ var newOutput = new Output({
satoshis: -100, satoshis: -100,
script: Script.empty() script: Script.empty()
}); });
}).should.throw('Output satoshis is not a natural number'); }.should.throw("Output satoshis is not a natural number"));
}); });
it('1.1', function() { it("1.1", function() {
(function() { (function() {
var newOutput = new Output({ var newOutput = new Output({
satoshis: 1.1, satoshis: 1.1,
script: Script.empty() script: Script.empty()
}); });
}).should.throw('Output satoshis is not a natural number'); }.should.throw("Output satoshis is not a natural number"));
}); });
it('NaN', function() { it("NaN", function() {
(function() { (function() {
var newOutput = new Output({ var newOutput = new Output({
satoshis: NaN, satoshis: NaN,
script: Script.empty() script: Script.empty()
}); });
}).should.throw('Output satoshis is not a natural number'); }.should.throw("Output satoshis is not a natural number"));
}); });
it('Infinity', function() { it("Infinity", function() {
(function() { (function() {
var newOutput = new Output({ var newOutput = new Output({
satoshis: Infinity, satoshis: Infinity,
script: Script.empty() script: Script.empty()
}); });
}).should.throw('Output satoshis is not a natural number'); }.should.throw("Output satoshis is not a natural number"));
}); });
}); });
@ -87,43 +86,52 @@ describe('Output', function() {
a.script.toString().should.equal(b.script.toString()); a.script.toString().should.equal(b.script.toString());
}; };
it('deserializes correctly a simple output', function() { it("deserializes correctly a simple output", function() {
var writer = new BufferWriter(); var writer = new BufferWriter();
output.toBufferWriter(writer); output.toBufferWriter(writer);
var deserialized = Output.fromBufferReader(new BufferReader(writer.toBuffer())); var deserialized = Output.fromBufferReader(
new BufferReader(writer.toBuffer())
);
expectEqualOutputs(output, deserialized); expectEqualOutputs(output, deserialized);
}); });
it('can instantiate from an object', function() { it("can instantiate from an object", function() {
var out = new Output(output.toObject()); var out = new Output(output.toObject());
should.exist(out); should.exist(out);
}); });
it('can set a script from a buffer', function() { it("can set a script from a buffer", function() {
var newOutput = new Output(output.toObject()); var newOutput = new Output(output.toObject());
newOutput.setScript(Script().add(0).toBuffer()); newOutput.setScript(Script().add(0).toBuffer());
newOutput.inspect().should.equal('<Output (0 sats) <Script: OP_0>>'); newOutput.inspect().should.equal("<Output (0 sats) <Script: OP_0>>");
}); });
it('has a inspect property', function() { it("has a inspect property", function() {
output.inspect().should.equal('<Output (0 sats) <Script: >>'); output.inspect().should.equal("<Output (0 sats) <Script: >>");
}); });
var output2 = new Output({ var output2 = new Output({
satoshis: 1100000000, satoshis: 1100000000,
script: new Script('OP_2 21 0x038282263212c609d9ea2a6e3e172de238d8c39' + script: new Script(
'cabd5ac1ca10646e23fd5f51508 21 0x038282263212c609d9ea2a6e3e172de23' + "OP_2 21 0x038282263212c609d9ea2a6e3e172de238d8c39" +
'8d8c39cabd5ac1ca10646e23fd5f51508 OP_2 OP_CHECKMULTISIG OP_EQUAL') "cabd5ac1ca10646e23fd5f51508 21 0x038282263212c609d9ea2a6e3e172de23" +
}); "8d8c39cabd5ac1ca10646e23fd5f51508 OP_2 OP_CHECKMULTISIG OP_EQUAL"
)
it('toBufferWriter', function() { });
output2.toBufferWriter().toBuffer().toString('hex')
.should.equal('00ab904100000000485215038282263212c609d9ea2a6e3e172de2' + it("toBufferWriter", function() {
'38d8c39cabd5ac1ca10646e23fd5f5150815038282263212c609d9ea2a6e3e172d' + output2
'e238d8c39cabd5ac1ca10646e23fd5f5150852ae87'); .toBufferWriter()
}); .toBuffer()
.toString("hex")
it('roundtrips to/from object', function() { .should.equal(
"00ab904100000000485215038282263212c609d9ea2a6e3e172de2" +
"38d8c39cabd5ac1ca10646e23fd5f5150815038282263212c609d9ea2a6e3e172d" +
"e238d8c39cabd5ac1ca10646e23fd5f5150852ae87"
);
});
it("roundtrips to/from object", function() {
var newOutput = new Output({ var newOutput = new Output({
satoshis: 50, satoshis: 50,
script: new Script().add(0) script: new Script().add(0)
@ -132,61 +140,52 @@ describe('Output', function() {
expectEqualOutputs(newOutput, otherOutput); expectEqualOutputs(newOutput, otherOutput);
}); });
it('toObject will handle an invalid (null) script', function() { it("toObject will handle an invalid (null) script", function() {
// block 000000000000000b7e48f88e86ceee3e97b4df7c139f5411d14735c1b3c36791 (livenet) // block 000000000000000b7e48f88e86ceee3e97b4df7c139f5411d14735c1b3c36791 (livenet)
// transaction index 2 // transaction index 2
// txid ebc9fa1196a59e192352d76c0f6e73167046b9d37b8302b6bb6968dfd279b767 // txid ebc9fa1196a59e192352d76c0f6e73167046b9d37b8302b6bb6968dfd279b767
var transaction = bitcore.Transaction(); var transaction = bitcore.Transaction();
transaction.fromString('01000000019ac03d5ae6a875d970128ef9086cef276a1919684a6988023cc7254691d97e6d010000006b4830450221009d41dc793ba24e65f571473d40b299b6459087cea1509f0d381740b1ac863cb6022039c425906fcaf51b2b84d8092569fb3213de43abaff2180e2a799d4fcb4dd0aa012102d5ede09a8ae667d0f855ef90325e27f6ce35bbe60a1e6e87af7f5b3c652140fdffffffff080100000000000000010101000000000000000202010100000000000000014c0100000000000000034c02010100000000000000014d0100000000000000044dffff010100000000000000014e0100000000000000064effffffff0100000000'); transaction.fromString(
"01000000019ac03d5ae6a875d970128ef9086cef276a1919684a6988023cc7254691d97e6d010000006b4830450221009d41dc793ba24e65f571473d40b299b6459087cea1509f0d381740b1ac863cb6022039c425906fcaf51b2b84d8092569fb3213de43abaff2180e2a799d4fcb4dd0aa012102d5ede09a8ae667d0f855ef90325e27f6ce35bbe60a1e6e87af7f5b3c652140fdffffffff080100000000000000010101000000000000000202010100000000000000014c0100000000000000034c02010100000000000000014d0100000000000000044dffff010100000000000000014e0100000000000000064effffffff0100000000"
);
var obj = transaction.toObject(); var obj = transaction.toObject();
obj.outputs[2].script.should.equal('4c'); obj.outputs[2].script.should.equal("4c");
obj.outputs[4].script.should.equal('4d'); obj.outputs[4].script.should.equal("4d");
obj.outputs[6].script.should.equal('4e'); obj.outputs[6].script.should.equal("4e");
}); });
it('#toObject roundtrip will handle an invalid (null) script', function() { it("#toObject roundtrip will handle an invalid (null) script", function() {
var invalidOutputScript = new Buffer('0100000000000000014c', 'hex'); var invalidOutputScript = new Buffer("0100000000000000014c", "hex");
var br = new bitcore.encoding.BufferReader(invalidOutputScript); var br = new bitcore.encoding.BufferReader(invalidOutputScript);
var output = Output.fromBufferReader(br); var output = Output.fromBufferReader(br);
var output2 = new Output(output.toObject()); var output2 = new Output(output.toObject());
should.equal(output2.script, null); should.equal(output2.script, null);
should.equal(output2._scriptBuffer.toString('hex'), '4c'); should.equal(output2._scriptBuffer.toString("hex"), "4c");
}); });
it('inspect will work with an invalid (null) script', function() { it("inspect will work with an invalid (null) script", function() {
var invalidOutputScript = new Buffer('0100000000000000014c', 'hex'); var invalidOutputScript = new Buffer("0100000000000000014c", "hex");
var br = new bitcore.encoding.BufferReader(invalidOutputScript); var br = new bitcore.encoding.BufferReader(invalidOutputScript);
var output = Output.fromBufferReader(br); var output = Output.fromBufferReader(br);
output.inspect().should.equal('<Output (1 sats) 4c>'); output.inspect().should.equal("<Output (1 sats) 4c>");
}); });
it('roundtrips to/from JSON', function() { it("roundtrips to/from JSON", function() {
var json = JSON.stringify(output2); var json = JSON.stringify(output2);
var o3 = new Output(JSON.parse(json)); var o3 = new Output(JSON.parse(json));
JSON.stringify(o3).should.equal(json); JSON.stringify(o3).should.equal(json);
}); });
it('setScript fails with invalid input', function() { it("setScript fails with invalid input", function() {
var out = new Output(output2.toJSON()); var out = new Output(output2.toJSON());
out.setScript.bind(out, 45).should.throw('Invalid argument type: script'); out.setScript.bind(out, 45).should.throw("Invalid argument type: script");
}); });
it('sets script to null if it is an InvalidBuffer', function() { it("sets script to null if it is an InvalidBuffer", function() {
var output = new Output({ var output = new Output({
satoshis: 1000, satoshis: 1000,
script: new Buffer('4c', 'hex') script: new Buffer("4c", "hex")
}); });
should.equal(output.script, null); should.equal(output.script, null);
}); });
it('should throw an error if Script throws an error that is not InvalidBuffer', function() {
var output = Output({
satoshis: 1000,
script: new Script()
});
(function() {
output.setScriptFromBuffer('bad');
}).should.throw('Invalid hex string');
});
}); });

Loading…
Cancel
Save