Added unit test for validateBulk()

This commit is contained in:
Chris Troutner
2020-12-05 17:19:14 -08:00
parent 9580a30ba5
commit 3e09b63a55
4 changed files with 137 additions and 8 deletions
+1 -1
View File
@@ -18,7 +18,7 @@
"lint": "standard --env mocha --fix",
"test-v3": "export NETWORK=mainnet && nyc --reporter=text mocha --timeout 60000 test/v3/",
"test:temp:integration": "export NETWORK=mainnet && export TEST=integration && mocha --timeout 25000 test/v3/integration/price.js",
"test:temp:unit": "export NETWORK=mainnet && mocha -g '#validate3Bulk' --exit test/v3/",
"test:temp:unit": "export NETWORK=mainnet && mocha -g '#validateBulk' --exit test/v3/",
"test:integration": "mocha test/v3/integration",
"test:integration:slpdb": "mocha --timeout 25000 -g '#validate2Single' test/v3/integration/slp*.js",
"coverage": "nyc report --reporter=text-lcov | coveralls",
+1 -4
View File
@@ -280,10 +280,7 @@ describe('#slp', () => {
req.body.txids = txids
const result = await slp.validateBulk(req, res)
console.log(`result: ${JSON.stringify(result, null, 2)}`)
// assert.equal(result.txid, txid)
// assert.equal(result.isValid, false)
// console.log(`result: ${JSON.stringify(result, null, 2)}`)
// BCHN expected results
if (process.env.ISBCHN) {
+48 -1
View File
@@ -542,6 +542,52 @@ const mockTxHistory = [
}
]
const mockValidateBulk = {
c: [
{
_id: '5fcc1ae2aff6379ca5bbb213',
tx: {
h: '336bfe2168aac4c3303508a9e8548a0d33797a83b85b76a12d845c8d6674f79d'
},
slp: {
valid: true,
invalidReason: null
}
},
{
_id: '5fc9b4db4d54eece25b52762',
tx: {
h: 'daf4d8b8045e7a90b7af81bfe2370178f687da0e545511bce1c9ae539eba5ffd'
},
slp: {
valid: true,
invalidReason: null
}
},
{
_id: '5fc989a14d54eece25af88a6',
tx: {
h: '2bf691ad3679d928fef880b8a45b93b233f8fa0d0a92cf792313dbe77b1deb74'
},
slp: {
valid: false,
invalidReason: 'Token outputs are greater than valid token inputs.'
}
},
{
_id: '5fc974d14d54eece25ad5df2',
tx: {
h: '3a4b628cbcc183ab376d44ce5252325f042268307ffa4a53443e92b6d24fb488'
},
slp: {
valid: true,
invalidReason: null
}
}
],
u: []
}
module.exports = {
mockList,
mockSingleToken,
@@ -558,5 +604,6 @@ module.exports = {
mockTwoValidTxid,
mockTwoRedundentTxid,
mockTxHistory,
mockPsfToken
mockPsfToken,
mockValidateBulk
}
+87 -2
View File
@@ -513,7 +513,7 @@ describe('#SLP', () => {
req.params.txid = txid
const result = await slpRoute.validate3Single(req, res)
console.log(`result: ${JSON.stringify(result, null, 2)}`)
// console.log(`result: ${JSON.stringify(result, null, 2)}`)
assert.equal(result.txid, txid)
assert.equal(result.valid, false)
@@ -562,7 +562,7 @@ describe('#SLP', () => {
}
})
describe('validateBulk()', () => {
describe('#validateBulk()', () => {
const validateBulk = slpRoute.validateBulk
it('should throw 400 if txid array is empty', async () => {
@@ -685,6 +685,91 @@ describe('#SLP', () => {
assert.hasAllKeys(result[0], ['txid', 'valid'])
assert.equal(result.length, 2)
})
it('should handle a mix of valid, invalid, and non-SLP txs', async () => {
// Mock the RPC call for unit tests.
if (process.env.TEST === 'unit') {
sandbox.stub(slpRoute.axios, 'request').resolves({
data: mockData.mockValidateBulk
})
}
const txids = [
// Malformed SLP tx
'f7e5199ef6669ad4d078093b3ad56e355b6ab84567e59ad0f08a5ad0244f783a',
// Normal TX (non-SLP)
'01cdaec2f8b311fc2d6ecc930247bd45fa696dc204ab684596e281fe1b06c1f0',
// Valid PSF SLP tx
'daf4d8b8045e7a90b7af81bfe2370178f687da0e545511bce1c9ae539eba5ffd',
// Valid SLP token not in whitelist
'3a4b628cbcc183ab376d44ce5252325f042268307ffa4a53443e92b6d24fb488',
// Token send on BCHN network.
'402c663379d9699b6e2dd38737061e5888c5a49fca77c97ab98e79e08959e019',
// Token send on ABC network.
'336bfe2168aac4c3303508a9e8548a0d33797a83b85b76a12d845c8d6674f79d',
// Known invalid SLP token send of PSF tokens.
'2bf691ad3679d928fef880b8a45b93b233f8fa0d0a92cf792313dbe77b1deb74'
]
req.body.txids = txids
const result = await validateBulk(req, res)
// console.log(`result: ${JSON.stringify(result, null, 2)}`)
// BCHN expected results
if (process.env.ISBCHN) {
assert.equal(result[0].txid, txids[0])
assert.equal(result[0].valid, null)
assert.equal(result[1].txid, txids[1])
assert.equal(result[1].valid, null)
assert.equal(result[2].txid, txids[2])
assert.equal(result[2].valid, true)
assert.equal(result[3].txid, txids[3])
assert.equal(result[3].valid, true)
// Note: This should change from null to true once SLPDB finishes indexing.
assert.equal(result[4].txid, txids[4])
assert.equal(result[4].valid, null)
assert.equal(result[5].txid, txids[5])
assert.equal(result[5].valid, null)
assert.equal(result[6].txid, txids[6])
assert.equal(result[6].valid, false)
assert.include(
result[6].invalidReason,
'Token outputs are greater than valid token inputs'
)
} else {
assert.equal(result[0].txid, txids[0])
assert.equal(result[0].valid, null)
assert.equal(result[1].txid, txids[1])
assert.equal(result[1].valid, null)
assert.equal(result[2].txid, txids[2])
assert.equal(result[2].valid, true)
assert.equal(result[3].txid, txids[3])
assert.equal(result[3].valid, true)
assert.equal(result[4].txid, txids[4])
assert.equal(result[4].valid, null)
assert.equal(result[5].txid, txids[5])
assert.equal(result[5].valid, true)
assert.equal(result[6].txid, txids[6])
assert.equal(result[6].valid, false)
assert.include(
result[6].invalidReason,
'Token outputs are greater than valid token inputs'
)
}
})
})
describe('#validate3Bulk', () => {