UNPKG

fusion-plugin-rpc

Version:

Fetch data on the server and client with an RPC style interface.

76 lines (74 loc) 9.66 kB
"use strict"; var _events = _interopRequireDefault(require("events")); var _fusionCore = _interopRequireWildcard(require("fusion-core")); var _fusionTestUtils = require("fusion-test-utils"); var _fusionPluginUniversalEvents = require("fusion-plugin-universal-events"); var _tokens = require("../tokens"); var _mock = _interopRequireDefault(require("../mock")); function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** Copyright (c) 2018 Uber Technologies, Inc. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * */ const MockPluginToken = (0, _fusionCore.createToken)('test-plugin-token'); const mockCtx = {}; function createTestFixture() { const mockHandlers = {}; // @ts-ignore const mockEmitter = new _events.default(); mockEmitter.from = () => mockEmitter; const mockEmitterPlugin = (0, _fusionCore.createPlugin)({ provides: () => mockEmitter }); const app = new _fusionCore.default('content', el => el); app.register(_fusionPluginUniversalEvents.UniversalEventsToken, mockEmitterPlugin); app.register(_tokens.RPCHandlersToken, mockHandlers); app.register(MockPluginToken, _mock.default); return app; } test('mock with missing handler', done => { const app = createTestFixture(); expect.assertions(1); (0, _fusionTestUtils.getSimulator)(app, (0, _fusionCore.createPlugin)({ deps: { rpcFactory: MockPluginToken }, provides: async deps => { const rpc = deps.rpcFactory.from(mockCtx); // @ts-ignore await expect(rpc.request('test')).rejects.toThrowError('Missing RPC handler for test'); done(); } })); }); test('mock with handler', done => { const mockHandlers = { test: args => { expect(args).toStrictEqual({ test: 'args' }); return 10; } }; const app = createTestFixture(); app.register(_tokens.RPCHandlersToken, mockHandlers); expect.assertions(2); (0, _fusionTestUtils.getSimulator)(app, (0, _fusionCore.createPlugin)({ deps: { rpcFactory: MockPluginToken }, provides: async deps => { const rpc = deps.rpcFactory.from(mockCtx); const result = await rpc.request('test', { test: 'args' }); expect(result).toBe(10); done(); } })); }); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNb2NrUGx1Z2luVG9rZW4iLCJjcmVhdGVUb2tlbiIsIm1vY2tDdHgiLCJjcmVhdGVUZXN0Rml4dHVyZSIsIm1vY2tIYW5kbGVycyIsIm1vY2tFbWl0dGVyIiwiTW9ja0VtaXR0ZXIiLCJmcm9tIiwibW9ja0VtaXR0ZXJQbHVnaW4iLCJjcmVhdGVQbHVnaW4iLCJwcm92aWRlcyIsImFwcCIsIkFwcCIsImVsIiwicmVnaXN0ZXIiLCJVbml2ZXJzYWxFdmVudHNUb2tlbiIsIlJQQ0hhbmRsZXJzVG9rZW4iLCJSUENQbHVnaW4iLCJ0ZXN0IiwiZG9uZSIsImV4cGVjdCIsImFzc2VydGlvbnMiLCJnZXRTaW11bGF0b3IiLCJkZXBzIiwicnBjRmFjdG9yeSIsInJwYyIsInJlcXVlc3QiLCJyZWplY3RzIiwidG9UaHJvd0Vycm9yIiwiYXJncyIsInRvU3RyaWN0RXF1YWwiLCJyZXN1bHQiLCJ0b0JlIl0sInNvdXJjZXMiOlsic3JjL19fdGVzdHNfXy90ZXN0LW1vY2sudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIENvcHlyaWdodCAoYykgMjAxOCBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICpcbiAqL1xuXG5pbXBvcnQgTW9ja0VtaXR0ZXIgZnJvbSAnZXZlbnRzJztcblxuaW1wb3J0IEFwcCwge1xuICBjcmVhdGVQbHVnaW4sXG4gIGNyZWF0ZVRva2VuLFxuICB0eXBlIFRva2VuLFxuICB0eXBlIENvbnRleHQsXG59IGZyb20gJ2Z1c2lvbi1jb3JlJztcbmltcG9ydCB7Z2V0U2ltdWxhdG9yfSBmcm9tICdmdXNpb24tdGVzdC11dGlscyc7XG5pbXBvcnQge1VuaXZlcnNhbEV2ZW50c1Rva2VufSBmcm9tICdmdXNpb24tcGx1Z2luLXVuaXZlcnNhbC1ldmVudHMnO1xuXG5pbXBvcnQge1JQQ0hhbmRsZXJzVG9rZW59IGZyb20gJy4uL3Rva2Vucyc7XG5pbXBvcnQgUlBDUGx1Z2luIGZyb20gJy4uL21vY2snO1xuaW1wb3J0IHR5cGUge1JQQ1NlcnZpY2VUeXBlLCBJRW1pdHRlcn0gZnJvbSAnLi4vdHlwZXMnO1xuXG5jb25zdCBNb2NrUGx1Z2luVG9rZW46IFRva2VuPFJQQ1NlcnZpY2VUeXBlPiA9IGNyZWF0ZVRva2VuKCd0ZXN0LXBsdWdpbi10b2tlbicpO1xuY29uc3QgbW9ja0N0eCA9IHt9IGFzIGFueSBhcyBDb250ZXh0O1xuZnVuY3Rpb24gY3JlYXRlVGVzdEZpeHR1cmUoKSB7XG4gIGNvbnN0IG1vY2tIYW5kbGVycyA9IHt9O1xuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IG1vY2tFbWl0dGVyOiBJRW1pdHRlciA9IG5ldyBNb2NrRW1pdHRlcigpIGFzIGFueTtcbiAgbW9ja0VtaXR0ZXIuZnJvbSA9ICgpID0+IG1vY2tFbWl0dGVyO1xuICBjb25zdCBtb2NrRW1pdHRlclBsdWdpbiA9IGNyZWF0ZVBsdWdpbih7XG4gICAgcHJvdmlkZXM6ICgpID0+IG1vY2tFbWl0dGVyLFxuICB9KTtcblxuICBjb25zdCBhcHAgPSBuZXcgQXBwKCdjb250ZW50JywgKGVsKSA9PiBlbCk7XG4gIGFwcC5yZWdpc3RlcihVbml2ZXJzYWxFdmVudHNUb2tlbiwgbW9ja0VtaXR0ZXJQbHVnaW4pO1xuICBhcHAucmVnaXN0ZXIoUlBDSGFuZGxlcnNUb2tlbiwgbW9ja0hhbmRsZXJzKTtcbiAgYXBwLnJlZ2lzdGVyKE1vY2tQbHVnaW5Ub2tlbiwgUlBDUGx1Z2luKTtcbiAgcmV0dXJuIGFwcDtcbn1cblxudGVzdCgnbW9jayB3aXRoIG1pc3NpbmcgaGFuZGxlcicsIChkb25lKSA9PiB7XG4gIGNvbnN0IGFwcCA9IGNyZWF0ZVRlc3RGaXh0dXJlKCk7XG5cbiAgZXhwZWN0LmFzc2VydGlvbnMoMSk7XG4gIGdldFNpbXVsYXRvcihcbiAgICBhcHAsXG4gICAgY3JlYXRlUGx1Z2luKHtcbiAgICAgIGRlcHM6IHtycGNGYWN0b3J5OiBNb2NrUGx1Z2luVG9rZW59LFxuICAgICAgcHJvdmlkZXM6IGFzeW5jIChkZXBzKSA9PiB7XG4gICAgICAgIGNvbnN0IHJwYyA9IGRlcHMucnBjRmFjdG9yeS5mcm9tKG1vY2tDdHgpO1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGF3YWl0IGV4cGVjdChycGMucmVxdWVzdCgndGVzdCcpKS5yZWplY3RzLnRvVGhyb3dFcnJvcihcbiAgICAgICAgICAnTWlzc2luZyBSUEMgaGFuZGxlciBmb3IgdGVzdCdcbiAgICAgICAgKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSxcbiAgICB9KVxuICApO1xufSk7XG5cbnRlc3QoJ21vY2sgd2l0aCBoYW5kbGVyJywgKGRvbmUpID0+IHtcbiAgY29uc3QgbW9ja0hhbmRsZXJzID0ge1xuICAgIHRlc3Q6IChhcmdzKSA9PiB7XG4gICAgICBleHBlY3QoYXJncykudG9TdHJpY3RFcXVhbCh7dGVzdDogJ2FyZ3MnfSk7XG4gICAgICByZXR1cm4gMTA7XG4gICAgfSxcbiAgfTtcblxuICBjb25zdCBhcHAgPSBjcmVhdGVUZXN0Rml4dHVyZSgpO1xuICBhcHAucmVnaXN0ZXIoUlBDSGFuZGxlcnNUb2tlbiwgbW9ja0hhbmRsZXJzKTtcblxuICBleHBlY3QuYXNzZXJ0aW9ucygyKTtcbiAgZ2V0U2ltdWxhdG9yKFxuICAgIGFwcCxcbiAgICBjcmVhdGVQbHVnaW4oe1xuICAgICAgZGVwczoge3JwY0ZhY3Rvcnk6IE1vY2tQbHVnaW5Ub2tlbn0sXG4gICAgICBwcm92aWRlczogYXN5bmMgKGRlcHMpID0+IHtcbiAgICAgICAgY29uc3QgcnBjID0gZGVwcy5ycGNGYWN0b3J5LmZyb20obW9ja0N0eCk7XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcnBjLnJlcXVlc3QoJ3Rlc3QnLCB7dGVzdDogJ2FyZ3MnfSk7XG4gICAgICAgIGV4cGVjdChyZXN1bHQp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