fix(electrumx.getBalance()): Allowing ecash addresses to pass through

This commit is contained in:
Chris Troutner
2022-07-10 19:09:12 -07:00
parent e2d920fcc7
commit acdee61a1b
2 changed files with 48 additions and 10 deletions
+13 -1
View File
@@ -96,8 +96,19 @@ class Electrum {
}) })
} }
if (!address) {
res.status(400)
return res.json({
success: false,
error: 'address is empty'
})
}
let cashAddr = address
if (!address.includes('ecash')) {
// Ensure the address is in cash address format. // Ensure the address is in cash address format.
const cashAddr = _this.bchjs.Address.toCashAddress(address) cashAddr = _this.bchjs.Address.toCashAddress(address)
// Prevent a common user error. Ensure they are using the correct network address. // Prevent a common user error. Ensure they are using the correct network address.
const networkIsValid = _this.routeUtils.validateNetwork(cashAddr) const networkIsValid = _this.routeUtils.validateNetwork(cashAddr)
@@ -109,6 +120,7 @@ class Electrum {
'Invalid network. Trying to use a testnet address on mainnet, or vice versa.' 'Invalid network. Trying to use a testnet address on mainnet, or vice versa.'
}) })
} }
}
wlogger.debug( wlogger.debug(
'Executing electrumx/getBalance with this address: ', 'Executing electrumx/getBalance with this address: ',
+28 -2
View File
@@ -113,10 +113,10 @@ describe('#Electrumx', () => {
const result = await electrumxRoute.getBalance(req, res) const result = await electrumxRoute.getBalance(req, res)
// console.log(`result: ${util.inspect(result)}`) // console.log(`result: ${util.inspect(result)}`)
assert.equal(res.statusCode, 422, 'Expect 422 status code') assert.equal(res.statusCode, 400, 'Expect 400 status code')
assert.property(result, 'error') assert.property(result, 'error')
assert.include(result.error, 'Unsupported address format') assert.include(result.error, 'address is empty')
assert.property(result, 'success') assert.property(result, 'success')
assert.equal(result.success, false) assert.equal(result.success, false)
@@ -207,7 +207,33 @@ describe('#Electrumx', () => {
assert.property(result.balance, 'confirmed') assert.property(result.balance, 'confirmed')
assert.property(result.balance, 'unconfirmed') assert.property(result.balance, 'unconfirmed')
}) })
it('should get balance for a single eCash address', async () => {
req.params.address =
'ecash:qr5c4hfy52zn87484cucvzle5pljz0gtr5vhtw9z09'
// Mock unit tests to prevent live network calls.
if (process.env.TEST === 'unit') {
electrumxRoute.isReady = true // Force flag.
sandbox
.stub(electrumxRoute.axios, 'get')
.resolves({ data: mockData.balance })
}
// Call the details API.
const result = await electrumxRoute.getBalance(req, res)
// console.log(`result: ${JSON.stringify(result, null, 2)}`)
assert.property(result, 'success')
assert.equal(result.success, true)
assert.property(result, 'balance')
assert.property(result.balance, 'confirmed')
assert.property(result.balance, 'unconfirmed')
}) })
})
describe('#balanceBulk', () => { describe('#balanceBulk', () => {
it('should throw 400 if addresses is empty', async () => { it('should throw 400 if addresses is empty', async () => {
const result = await electrumxRoute.balanceBulk(req, res) const result = await electrumxRoute.balanceBulk(req, res)