From 89c6d48dfd906aeea3598acdf3d66c912a85a709 Mon Sep 17 00:00:00 2001 From: Chris Troutner Date: Sat, 9 Jan 2021 20:48:10 -0800 Subject: [PATCH 1/2] fix(hydrateUtxos): Passing error message to bch-js --- src/routes/v4/route-utils.js | 9 +++++++++ src/routes/v4/slp.js | 2 ++ src/util/route-utils.js | 9 +++++++++ 3 files changed, 20 insertions(+) diff --git a/src/routes/v4/route-utils.js b/src/routes/v4/route-utils.js index fe86c44..cab689c 100644 --- a/src/routes/v4/route-utils.js +++ b/src/routes/v4/route-utils.js @@ -175,8 +175,17 @@ function decodeError (err) { } } + // Handle general Error objects. + if (err.message) { + return { + message: err.message, + status: 422 + } + } + return { msg: false, status: 500 } } catch (err) { + console.error('unhandled error in route-utils.js/decodeError(): ', err) wlogger.error('unhandled error in route-utils.js/decodeError(): ', err) return { msg: false, status: 500 } } diff --git a/src/routes/v4/slp.js b/src/routes/v4/slp.js index adbe985..9ab257b 100644 --- a/src/routes/v4/slp.js +++ b/src/routes/v4/slp.js @@ -1999,6 +1999,8 @@ class Slp { // Decode the error message. const { msg, status } = routeUtils.decodeError(err) + console.log('msg: ', msg) + console.log('status: ', status) if (msg) { res.status(status) return res.json({ error: msg }) diff --git a/src/util/route-utils.js b/src/util/route-utils.js index a12abd4..d5a98ff 100644 --- a/src/util/route-utils.js +++ b/src/util/route-utils.js @@ -154,8 +154,17 @@ class RouteUtils { } } + // Handle general Error objects. + if (err.message) { + return { + msg: err.message, + status: 422 + } + } + return { msg: false, status: 500 } } catch (err) { + console.error('unhandled error in route-utils.js/decodeError(): ', err) wlogger.error('unhandled error in route-utils.js/decodeError(): ', err) return { msg: false, status: 500 } } From 9a8886121db271f95c5a9e16f1924d0f681aef5b Mon Sep 17 00:00:00 2001 From: Chris Troutner Date: Sun, 10 Jan 2021 15:13:33 -0800 Subject: [PATCH 2/2] feat(error handling): update to error handling to pass more information --- src/routes/v4/electrumx.js | 2 +- src/routes/v4/encryption.js | 2 +- src/routes/v4/slp.js | 2 +- test/v4/a01-electrumx.js | 18 +++++++++--------- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/routes/v4/electrumx.js b/src/routes/v4/electrumx.js index d879051..cfa324b 100644 --- a/src/routes/v4/electrumx.js +++ b/src/routes/v4/electrumx.js @@ -135,7 +135,7 @@ class Electrum { const { msg, status } = _this.routeUtils.decodeError(err) if (msg) { res.status(status) - return res.json({ error: msg }) + return res.json({ success: false, error: msg }) } // Handle error patterns specific to this route. diff --git a/src/routes/v4/encryption.js b/src/routes/v4/encryption.js index 7f61f35..cd0efe1 100644 --- a/src/routes/v4/encryption.js +++ b/src/routes/v4/encryption.js @@ -45,7 +45,7 @@ class Encryption { const { msg, status } = _this.routeUtils.decodeError(err) if (msg) { res.status(status) - return res.json({ error: msg }) + return res.json({ success: false, error: msg }) } // Handle error patterns specific to this route. diff --git a/src/routes/v4/slp.js b/src/routes/v4/slp.js index 9ab257b..3b6e732 100644 --- a/src/routes/v4/slp.js +++ b/src/routes/v4/slp.js @@ -2003,7 +2003,7 @@ class Slp { console.log('status: ', status) if (msg) { res.status(status) - return res.json({ error: msg }) + return res.json({ error: msg, message: msg, success: false }) } res.status(500) diff --git a/test/v4/a01-electrumx.js b/test/v4/a01-electrumx.js index f43e87a..ce93947 100644 --- a/test/v4/a01-electrumx.js +++ b/test/v4/a01-electrumx.js @@ -199,11 +199,11 @@ describe('#Electrumx', () => { }) describe('#getUtxos', () => { - it('should throw 400 if address is empty', async () => { + it('should throw 422 if address is empty', async () => { const result = await electrumxRoute.getUtxos(req, res) // console.log(`result: ${util.inspect(result)}`) - assert.equal(res.statusCode, 400, 'Expect 400 status code') + assert.equal(res.statusCode, 422, 'Expect 422 status code') assert.property(result, 'error') assert.include(result.error, 'Unsupported address format') @@ -233,7 +233,7 @@ describe('#Electrumx', () => { const result = await electrumxRoute.getUtxos(req, res) // console.log(`result: ${util.inspect(result)}`) - assert.equal(res.statusCode, 400, 'Expect 400 status code') + assert.equal(res.statusCode, 422, 'Expect 422 status code') assert.property(result, 'error') assert.include(result.error, 'Unsupported address format') @@ -1063,7 +1063,7 @@ describe('#Electrumx', () => { const result = await electrumxRoute.getBalance(req, res) // console.log(`result: ${util.inspect(result)}`) - assert.equal(res.statusCode, 400, 'Expect 400 status code') + assert.equal(res.statusCode, 422, 'Expect 422 status code') assert.property(result, 'error') assert.include(result.error, 'Unsupported address format') @@ -1093,7 +1093,7 @@ describe('#Electrumx', () => { const result = await electrumxRoute.getBalance(req, res) // console.log(`result: ${util.inspect(result)}`) - assert.equal(res.statusCode, 400, 'Expect 400 status code') + assert.equal(res.statusCode, 422, 'Expect 422 status code') assert.property(result, 'error') assert.include(result.error, 'Unsupported address format') @@ -1350,7 +1350,7 @@ describe('#Electrumx', () => { const result = await electrumxRoute.getTransactions(req, res) // console.log(`result: ${util.inspect(result)}`) - assert.equal(res.statusCode, 400, 'Expect 400 status code') + assert.equal(res.statusCode, 422, 'Expect 422 status code') assert.property(result, 'error') assert.include(result.error, 'Unsupported address format') @@ -1380,7 +1380,7 @@ describe('#Electrumx', () => { const result = await electrumxRoute.getTransactions(req, res) // console.log(`result: ${util.inspect(result)}`) - assert.equal(res.statusCode, 400, 'Expect 400 status code') + assert.equal(res.statusCode, 422, 'Expect 422 status code') assert.property(result, 'error') assert.include(result.error, 'Unsupported address format') @@ -1645,7 +1645,7 @@ describe('#Electrumx', () => { const result = await electrumxRoute.getMempool(req, res) // console.log(`result: ${util.inspect(result)}`) - assert.equal(res.statusCode, 400, 'Expect 400 status code') + assert.equal(res.statusCode, 422, 'Expect 422 status code') assert.property(result, 'error') assert.include(result.error, 'Unsupported address format') @@ -1675,7 +1675,7 @@ describe('#Electrumx', () => { const result = await electrumxRoute.getMempool(req, res) // console.log(`result: ${util.inspect(result)}`) - assert.equal(res.statusCode, 400, 'Expect 400 status code') + assert.equal(res.statusCode, 422, 'Expect 422 status code') assert.property(result, 'error') assert.include(result.error, 'Unsupported address format')