Tests and tweaks for public node middleware

This commit is contained in:
maciejhirsz
2017-04-06 17:13:53 +02:00
parent 8d0fde6f60
commit 564a1b0fbb
16 changed files with 241 additions and 64 deletions

View File

@@ -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);

View File

@@ -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;

View File

@@ -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', () => {