Skip to content

Commit 8987ab9

Browse files
committed
feat(express): add name field with default name on error
Ticket: DX-1197
1 parent 1a3c85e commit 8987ab9

File tree

3 files changed

+26
-3
lines changed

3 files changed

+26
-3
lines changed

modules/express/src/clientRoutes.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ import { handlePingEnclavedExpress } from './enclavedExpressRoutes';
4545
import { RequestTracer } from 'bitgo/dist/src/v2/internal/util';
4646

4747
import { Config } from './config';
48-
import { ApiResponseError } from './errors';
48+
import { ApiResponseError, BitGoExpressError } from './errors';
4949
import { promises as fs } from 'fs';
5050
import { retryPromise } from './retryPromise';
5151
import {
@@ -1310,16 +1310,17 @@ function handleRequestHandlerError(res: express.Response, error: unknown) {
13101310
if (error instanceof Error) {
13111311
err = error;
13121312
} else if (typeof error === 'string') {
1313-
err = new Error('(string_error) ' + error);
1313+
err = new BitGoExpressError('(string_error) ' + error);
13141314
} else {
1315-
err = new Error('(object_error) ' + JSON.stringify(error));
1315+
err = new BitGoExpressError('(object_error) ' + JSON.stringify(error));
13161316
}
13171317

13181318
const message = err.message || 'local error';
13191319
// use attached result, or make one
13201320
let result = err.result || { error: message };
13211321
result = _.extend({}, result, {
13221322
message: err.message,
1323+
name: err.name || 'BitGoExpressError',
13231324
bitgoJsVersion: version,
13241325
bitgoExpressVersion: pjson.version,
13251326
});

modules/express/src/errors.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,3 +52,10 @@ export class LightningSignerConfigError extends BitGoJsError {
5252
super(message || 'Lightning signer configuration is invalid');
5353
}
5454
}
55+
56+
export class BitGoExpressError extends BitGoJsError {
57+
public constructor(message?: string) {
58+
super(message);
59+
Object.setPrototypeOf(this, BitGoExpressError.prototype);
60+
}
61+
}

modules/express/test/unit/clientRoutes/index.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,5 +134,20 @@ describe('common methods', () => {
134134
res.status.calledWith(500).should.be.true();
135135
res.send.calledWithMatch((result: any) => result.message === 'Test error').should.be.true();
136136
});
137+
138+
it('should have name field on error request', async () => {
139+
const handler = sandbox.stub().throws({ message: 'Test error' });
140+
const req: any = {};
141+
const res: any = {
142+
status: sandbox.stub().returnsThis(),
143+
send: sandbox.stub().returnsThis(),
144+
};
145+
const next = sandbox.stub();
146+
147+
await promiseWrapper(handler)(req, res, next);
148+
149+
res.status.calledWith(500).should.be.true();
150+
res.send.calledWithMatch((result: any) => result.name === 'BitGoExpressError').should.be.true();
151+
});
137152
});
138153
});

0 commit comments

Comments
 (0)