Tests and tweaks for public node middleware
This commit is contained in:
@@ -38,20 +38,20 @@ export default class JsonRpcBase extends EventEmitter {
|
||||
return json;
|
||||
}
|
||||
|
||||
addMiddleware (middleware) {
|
||||
addMiddleware (Middleware) {
|
||||
this._middlewareList = Promise
|
||||
.all([
|
||||
middleware,
|
||||
Middleware,
|
||||
this._middlewareList
|
||||
])
|
||||
.then(([middleware, middlewareList]) => {
|
||||
.then(([Middleware, middlewareList]) => {
|
||||
// Do nothing if `handlerPromise` resolves to a null-y value.
|
||||
if (middleware == null) {
|
||||
if (Middleware == null) {
|
||||
return middlewareList;
|
||||
}
|
||||
|
||||
// don't mutate the original array
|
||||
return middlewareList.concat([middleware]);
|
||||
return middlewareList.concat([new Middleware(this)]);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -80,8 +80,8 @@ export default class JsonRpcBase extends EventEmitter {
|
||||
const res = middleware.handle(method, params);
|
||||
|
||||
if (res != null) {
|
||||
// If `res` isn't a promise, we need to wrap it
|
||||
return Promise.resolve(res)
|
||||
return Promise
|
||||
.resolve(res)
|
||||
.then((res) => {
|
||||
const result = this._wrapSuccessResult(res);
|
||||
const json = this.encode(method, params);
|
||||
|
||||
@@ -28,9 +28,7 @@ export default class Middleware {
|
||||
const handler = this._handlers[method];
|
||||
|
||||
if (handler != null) {
|
||||
const response = handler(params);
|
||||
|
||||
return response;
|
||||
return handler(params);
|
||||
}
|
||||
|
||||
return null;
|
||||
|
||||
@@ -25,17 +25,21 @@ class MockTransport extends JsonRpcBase {
|
||||
}
|
||||
}
|
||||
|
||||
class MockMiddleware extends Middleware {
|
||||
constructor (transport) {
|
||||
super(transport);
|
||||
|
||||
this.register('mock_rpc', ([num]) => num);
|
||||
this.register('mock_null', () => null);
|
||||
}
|
||||
}
|
||||
|
||||
describe('api/transport/Middleware', () => {
|
||||
let middleware;
|
||||
let transport;
|
||||
|
||||
beforeEach(() => {
|
||||
transport = new MockTransport();
|
||||
middleware = new Middleware(transport);
|
||||
|
||||
middleware.register('mock_rpc', ([num]) => num);
|
||||
middleware.register('mock_null', () => null);
|
||||
transport.addMiddleware(middleware);
|
||||
transport.addMiddleware(MockMiddleware);
|
||||
});
|
||||
|
||||
it('Routes requests to middleware', () => {
|
||||
|
||||
Reference in New Issue
Block a user