address/base58check: fix missing exceptions/tests
All the `invalid2` tests have been removed as they were not invalid base58check. They were actually valid in some cases. They will be re-integrated in more specific bitcoin core tests in relation to Address/ECKey respectively.
This commit is contained in:
parent
47ae862ae9
commit
2fc69b0834
5 changed files with 28 additions and 88 deletions
|
@ -28,7 +28,7 @@ function decode(string) {
|
||||||
var checksum = buffer.slice(-4)
|
var checksum = buffer.slice(-4)
|
||||||
var newChecksum = crypto.hash256(message).slice(0, 4)
|
var newChecksum = crypto.hash256(message).slice(0, 4)
|
||||||
|
|
||||||
assert.deepEqual(newChecksum, checksum)
|
assert.deepEqual(newChecksum, checksum, 'Invalid checksum')
|
||||||
|
|
||||||
var version = message.readUInt8(0)
|
var version = message.readUInt8(0)
|
||||||
var payload = message.slice(1)
|
var payload = message.slice(1)
|
||||||
|
|
|
@ -3,11 +3,8 @@ var Address = require('../src/address')
|
||||||
var networks = require('../src/networks')
|
var networks = require('../src/networks')
|
||||||
var Script = require('../src/script')
|
var Script = require('../src/script')
|
||||||
|
|
||||||
var b58fixtures = require('./fixtures/base58.json')
|
|
||||||
var fixtures = require('./fixtures/address.json')
|
var fixtures = require('./fixtures/address.json')
|
||||||
|
|
||||||
function h2b(h) { return new Buffer(h, 'hex') }
|
|
||||||
|
|
||||||
describe('Address', function() {
|
describe('Address', function() {
|
||||||
describe('Constructor', function() {
|
describe('Constructor', function() {
|
||||||
it('does not mutate the input', function() {
|
it('does not mutate the input', function() {
|
||||||
|
@ -31,11 +28,11 @@ describe('Address', function() {
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
it('throws on invalid base58check', function() {
|
fixtures.invalid.fromBase58Check.forEach(function(f) {
|
||||||
b58fixtures.invalid.forEach(function(f) {
|
it('throws on ' + f.descpription, function() {
|
||||||
assert.throws(function() {
|
assert.throws(function() {
|
||||||
Address.fromBase58Check(f)
|
Address.fromBase58Check(f.base58check)
|
||||||
})
|
}, new RegExp(f.exception))
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
|
@ -3,13 +3,12 @@ var base58check = require('../src/base58check')
|
||||||
|
|
||||||
var fixtures = require('./fixtures/base58check.json')
|
var fixtures = require('./fixtures/base58check.json')
|
||||||
|
|
||||||
function b2h(b) { return new Buffer(b).toString('hex') }
|
|
||||||
function h2b(h) { return new Buffer(h, 'hex') }
|
function h2b(h) { return new Buffer(h, 'hex') }
|
||||||
|
|
||||||
describe('base58check', function() {
|
describe('base58check', function() {
|
||||||
describe('decode', function() {
|
describe('decode', function() {
|
||||||
it('can decode Bitcoin core test data', function() {
|
fixtures.valid.forEach(function(f) {
|
||||||
fixtures.valid.forEach(function(f) {
|
it('can decode ' + f.string, function() {
|
||||||
var actual = base58check.decode(f.string)
|
var actual = base58check.decode(f.string)
|
||||||
var expected = {
|
var expected = {
|
||||||
version: f.decode.version,
|
version: f.decode.version,
|
||||||
|
@ -25,22 +24,14 @@ describe('base58check', function() {
|
||||||
it('throws on ' + f.description, function() {
|
it('throws on ' + f.description, function() {
|
||||||
assert.throws(function() {
|
assert.throws(function() {
|
||||||
base58check.decode(f.string)
|
base58check.decode(f.string)
|
||||||
})
|
}, /Invalid checksum/)
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
it('throws on [invalid] Bitcoin core test data', function() {
|
|
||||||
fixtures.invalid2.forEach(function(f) {
|
|
||||||
assert.throws(function() {
|
|
||||||
base58check.decode(f.string)
|
|
||||||
})
|
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
describe('encode', function() {
|
describe('encode', function() {
|
||||||
it('can encode Bitcoin core test data', function() {
|
fixtures.valid.forEach(function(f) {
|
||||||
fixtures.valid.forEach(function(f) {
|
it('can encode ' + f.string, function() {
|
||||||
var actual = base58check.encode(h2b(f.decode.payload), f.decode.version)
|
var actual = base58check.encode(h2b(f.decode.payload), f.decode.version)
|
||||||
var expected = f.string
|
var expected = f.string
|
||||||
|
|
||||||
|
|
12
test/fixtures/address.json
vendored
12
test/fixtures/address.json
vendored
|
@ -34,6 +34,18 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"invalid": {
|
"invalid": {
|
||||||
|
"fromBase58Check": [
|
||||||
|
{
|
||||||
|
"description": "hash too short",
|
||||||
|
"base58check": "7SeEnXWPaCCALbVrTnszCVGfRU8cGfx",
|
||||||
|
"exception": "Invalid hash length"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "hash too long",
|
||||||
|
"base58check": "j9ywUkWg2fTQrouxxh5rSZhRvrjMkEUfuiKe",
|
||||||
|
"exception": "Invalid hash length"
|
||||||
|
}
|
||||||
|
],
|
||||||
"fromScriptPubKey": [
|
"fromScriptPubKey": [
|
||||||
{
|
{
|
||||||
"description": "pubkey has no matching Address",
|
"description": "pubkey has no matching Address",
|
||||||
|
|
72
test/fixtures/base58check.json
vendored
72
test/fixtures/base58check.json
vendored
|
@ -403,76 +403,16 @@
|
||||||
],
|
],
|
||||||
"invalid": [
|
"invalid": [
|
||||||
{
|
{
|
||||||
"base58check": "7SeEnXWPaCCALbVrTnszCVGfRU8cGfx",
|
"description": "bad version byte",
|
||||||
"description": "hash too short"
|
"string": "Z9inZq4e2HGQRZQezDjFMmqgUE8NwMRok"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"base58check": "j9ywUkWg2fTQrouxxh5rSZhRvrjMkEUfuiKe",
|
"description": "bad payload",
|
||||||
"description": "hash too long"
|
"string": "3HK7MezAm6qEZQUMPRf8jX7wDv6zig6Ky8"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"base58check": "Z9inZq4e2HGQRZQezDjFMmqgUE8NwMRok",
|
"description": "bad SHA256 checksum",
|
||||||
"description": "bad version byte"
|
"string": "3AW8j12DUk8mgA7kkfZ1BrrzCVFuH1LsXS"
|
||||||
},
|
|
||||||
{
|
|
||||||
"base58check": "3HK7MezAm6qEZQUMPRf8jX7wDv6zig6Ky8",
|
|
||||||
"description": "bad payload"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"base58check": "3AW8j12DUk8mgA7kkfZ1BrrzCVFuH1LsXS",
|
|
||||||
"description": "bad SHA256 checksum"
|
|
||||||
}
|
}
|
||||||
],
|
|
||||||
"invalid2": [
|
|
||||||
"",
|
|
||||||
"x",
|
|
||||||
"37qgekLpCCHrQuSjvX3fs496FWTGsHFHizjJAs6NPcR47aefnnCWECAhHV6E3g4YN7u7Yuwod5Y",
|
|
||||||
"dzb7VV1Ui55BARxv7ATxAtCUeJsANKovDGWFVgpTbhq9gvPqP3yv",
|
|
||||||
"MuNu7ZAEDFiHthiunm7dPjwKqrVNCM3mAz6rP9zFveQu14YA8CxExSJTHcVP9DErn6u84E6Ej7S",
|
|
||||||
"rPpQpYknyNQ5AEHuY6H8ijJJrYc2nDKKk9jjmKEXsWzyAQcFGpDLU2Zvsmoi8JLR7hAwoy3RQWf",
|
|
||||||
"4Uc3FmN6NQ6zLBK5QQBXRBUREaaHwCZYsGCueHauuDmJpZKn6jkEskMB2Zi2CNgtb5r6epWEFfUJq",
|
|
||||||
"7aQgR5DFQ25vyXmqZAWmnVCjL3PkBcdVkBUpjrjMTcghHx3E8wb",
|
|
||||||
"17QpPprjeg69fW1DV8DcYYCKvWjYhXvWkov6MJ1iTTvMFj6weAqW7wybZeH57WTNxXVCRH4veVs",
|
|
||||||
"KxuACDviz8Xvpn1xAh9MfopySZNuyajYMZWz16Dv2mHHryznWUp3",
|
|
||||||
"7nK3GSmqdXJQtdohvGfJ7KsSmn3TmGqExug49583bDAL91pVSGq5xS9SHoAYL3Wv3ijKTit65th",
|
|
||||||
"cTivdBmq7bay3RFGEBBuNfMh2P1pDCgRYN2Wbxmgwr4ki3jNUL2va",
|
|
||||||
"gjMV4vjNjyMrna4fsAr8bWxAbwtmMUBXJS3zL4NJt5qjozpbQLmAfK1uA3CquSqsZQMpoD1g2nk",
|
|
||||||
"emXm1naBMoVzPjbk7xpeTVMFy4oDEe25UmoyGgKEB1gGWsK8kRGs",
|
|
||||||
"7VThQnNRj1o3Zyvc7XHPRrjDf8j2oivPTeDXnRPYWeYGE4pXeRJDZgf28ppti5hsHWXS2GSobdqyo",
|
|
||||||
"1G9u6oCVCPh2o8m3t55ACiYvG1y5BHewUkDSdiQarDcYXXhFHYdzMdYfUAhfxn5vNZBwpgUNpso",
|
|
||||||
"31QQ7ZMLkScDiB4VyZjuptr7AEc9j1SjstF7pRoLhHTGkW4Q2y9XELobQmhhWxeRvqcukGd1XCq",
|
|
||||||
"DHqKSnpxa8ZdQyH8keAhvLTrfkyBMQxqngcQA5N8LQ9KVt25kmGN",
|
|
||||||
"2LUHcJPbwLCy9GLH1qXmfmAwvadWw4bp4PCpDfduLqV17s6iDcy1imUwhQJhAoNoN1XNmweiJP4i",
|
|
||||||
"7USRzBXAnmck8fX9HmW7RAb4qt92VFX6soCnts9s74wxm4gguVhtG5of8fZGbNPJA83irHVY6bCos",
|
|
||||||
"1DGezo7BfVebZxAbNT3XGujdeHyNNBF3vnficYoTSp4PfK2QaML9bHzAMxke3wdKdHYWmsMTJVu",
|
|
||||||
"2D12DqDZKwCxxkzs1ZATJWvgJGhQ4cFi3WrizQ5zLAyhN5HxuAJ1yMYaJp8GuYsTLLxTAz6otCfb",
|
|
||||||
"8AFJzuTujXjw1Z6M3fWhQ1ujDW7zsV4ePeVjVo7D1egERqSW9nZ",
|
|
||||||
"163Q17qLbTCue8YY3AvjpUhotuaodLm2uqMhpYirsKjVqnxJRWTEoywMVY3NbBAHuhAJ2cF9GAZ",
|
|
||||||
"2MnmgiRH4eGLyLc9eAqStzk7dFgBjFtUCtu",
|
|
||||||
"461QQ2sYWxU7H2PV4oBwJGNch8XVTYYbZxU",
|
|
||||||
"2UCtv53VttmQYkVU4VMtXB31REvQg4ABzs41AEKZ8UcB7DAfVzdkV9JDErwGwyj5AUHLkmgZeobs",
|
|
||||||
"cSNjAsnhgtiFMi6MtfvgscMB2Cbhn2v1FUYfviJ1CdjfidvmeW6mn",
|
|
||||||
"gmsow2Y6EWAFDFE1CE4Hd3Tpu2BvfmBfG1SXsuRARbnt1WjkZnFh1qGTiptWWbjsq2Q6qvpgJVj",
|
|
||||||
"nksUKSkzS76v8EsSgozXGMoQFiCoCHzCVajFKAXqzK5on9ZJYVHMD5CKwgmX3S3c7M1U3xabUny",
|
|
||||||
"L3favK1UzFGgdzYBF2oBT5tbayCo4vtVBLJhg2iYuMeePxWG8SQc",
|
|
||||||
"7VxLxGGtYT6N99GdEfi6xz56xdQ8nP2dG1CavuXx7Rf2PrvNMTBNevjkfgs9JmkcGm6EXpj8ipyPZ",
|
|
||||||
"2mbZwFXF6cxShaCo2czTRB62WTx9LxhTtpP",
|
|
||||||
"dB7cwYdcPSgiyAwKWL3JwCVwSk6epU2txw",
|
|
||||||
"HPhFUhUAh8ZQQisH8QQWafAxtQYju3SFTX",
|
|
||||||
"4ctAH6AkHzq5ioiM1m9T3E2hiYEev5mTsB",
|
|
||||||
"Hn1uFi4dNexWrqARpjMqgT6cX1UsNPuV3cHdGg9ExyXw8HTKadbktRDtdeVmY3M1BxJStiL4vjJ",
|
|
||||||
"Sq3fDbvutABmnAHHExJDgPLQn44KnNC7UsXuT7KZecpaYDMU9Txs",
|
|
||||||
"6TqWyrqdgUEYDQU1aChMuFMMEimHX44qHFzCUgGfqxGgZNMUVWJ",
|
|
||||||
"giqJo7oWqFxNKWyrgcBxAVHXnjJ1t6cGoEffce5Y1y7u649Noj5wJ4mmiUAKEVVrYAGg2KPB3Y4",
|
|
||||||
"cNzHY5e8vcmM3QVJUcjCyiKMYfeYvyueq5qCMV3kqcySoLyGLYUK",
|
|
||||||
"37uTe568EYc9WLoHEd9jXEvUiWbq5LFLscNyqvAzLU5vBArUJA6eydkLmnMwJDjkL5kXc2VK7ig",
|
|
||||||
"EsYbG4tWWWY45G31nox838qNdzksbPySWc",
|
|
||||||
"nbuzhfwMoNzA3PaFnyLcRxE9bTJPDkjZ6Rf6Y6o2ckXZfzZzXBT",
|
|
||||||
"cQN9PoxZeCWK1x56xnz6QYAsvR11XAce3Ehp3gMUdfSQ53Y2mPzx",
|
|
||||||
"1Gm3N3rkef6iMbx4voBzaxtXcmmiMTqZPhcuAepRzYUJQW4qRpEnHvMojzof42hjFRf8PE2jPde",
|
|
||||||
"2TAq2tuN6x6m233bpT7yqdYQPELdTDJn1eU",
|
|
||||||
"ntEtnnGhqPii4joABvBtSEJG6BxjT2tUZqE8PcVYgk3RHpgxgHDCQxNbLJf7ardf1dDk2oCQ7Cf",
|
|
||||||
"Ky1YjoZNgQ196HJV3HpdkecfhRBmRZdMJk89Hi5KGfpfPwS2bUbfd",
|
|
||||||
"2A1q1YsMZowabbvta7kTy2Fd6qN4r5ZCeG3qLpvZBMzCixMUdkN2Y4dHB1wPsZAeVXUGD83MfRED"
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue