From 003a62aa1a80a783e528f6b11da76dfc0fc22c77 Mon Sep 17 00:00:00 2001 From: joelchu Date: Tue, 10 Mar 2020 22:26:58 +0800 Subject: [PATCH 01/10] Hook up the new code and ready to debug --- .../src/handles/get-socket-handler.js | 13 ++-- .../ws-server/src/core/setup-socket-server.js | 76 ++++--------------- packages/ws-server/src/modules.js | 16 +--- 3 files changed, 27 insertions(+), 78 deletions(-) diff --git a/packages/ws-server-core/src/handles/get-socket-handler.js b/packages/ws-server-core/src/handles/get-socket-handler.js index 1e4f5d32..804c717c 100644 --- a/packages/ws-server-core/src/handles/get-socket-handler.js +++ b/packages/ws-server-core/src/handles/get-socket-handler.js @@ -3,7 +3,7 @@ const { SA_LOGIN_EVENT_NAME, INTER_COM_EVENT_NAME } = require('jsonql-constants') -const { SOCKET_STATE_KEY } = require('../options/constants') +// const { SOCKET_STATE_KEY } = require('../options/constants') const { handleInterCom } = require('./handle-intercom') const { handleLogout } = require('./handle-logout') @@ -52,7 +52,6 @@ function getSocketHandler(config, ws, deliverFn, req, connectedNamespace, payloa const args = payload[resolverName] // it might be the special internal event? switch (true) { - case resolverName === LOGOUT_EVENT_NAME: // we don't need to send anything back @TBC do we need the config return handleLogout(ws, req, args, config) @@ -66,9 +65,11 @@ function getSocketHandler(config, ws, deliverFn, req, connectedNamespace, payloa default: - const params = matchResolverByNamespace(resolverName, namespace, nspGroup) - - handleNspResolvers(deliverFn, ws, resolverName, args, params, config, userdata) + const params = matchResolverByNamespace(resolverName, connectedNamespace, nspGroup) + if (params !== false) { + handleNspResolvers(deliverFn, ws, resolverName, args, params, config, userdata) + } } - } + +module.exports = { getSocketHandler } \ No newline at end of file diff --git a/packages/ws-server/src/core/setup-socket-server.js b/packages/ws-server/src/core/setup-socket-server.js index 2b51a25c..e0372c67 100644 --- a/packages/ws-server/src/core/setup-socket-server.js +++ b/packages/ws-server/src/core/setup-socket-server.js @@ -2,23 +2,14 @@ // const { finalCatch } = require('jsonql-errors') const { parseJson } = require('jsonql-utils') const { - LOGOUT_EVENT_NAME, - SA_LOGIN_EVENT_NAME, - INTER_COM_EVENT_NAME -} = require('jsonql-constants') -const { - handleNspResolvers, - handleInterCom, - handleLogout, - handleStandaloneLogin, - handleUnknownPayload, + getSocketHandler, getDebug, getRainbowDebug, - getUserdata, - SOCKET_STATE_KEY + getUserdata + // SOCKET_STATE_KEY } = require('../modules') -const debug = getDebug('ws-setup') +// const debug = getDebug('ws-setup') const rdebug = getRainbowDebug('ws-setup') const { createWsServer } = require('./create-ws-server') @@ -30,65 +21,30 @@ const { createWsServer } = require('./create-ws-server') * @return {object} nspObj itself with addtional properties */ function setupSocketServer(opts, server) { - const nspObj = createWsServer(opts, server) - const socketFns = opts.contract.socket - const { publicNamespace, nspGroup } = opts.nspInfo + const nsps = createWsServer(opts, server) + // const { publicNamespace, nspGroup } = opts.nspInfo // rdebug('nspInfo', nspInfo) - let deliverFn + // nspObj is coming from the ws-create-server // it contains the namespace --> WebSocket instance - for (let namespace in nspObj) { - let userdata + for (let namespace in nsps) { + nspObj[namespace].on('connection', (ws, req) => { - deliverFn = msg => ws.send(msg) - + let deliverFn = msg => ws.send(msg) + let userdata = getUserdata(req) rdebug(namespace, 'connected') // @TODO need to redo here the nspGroup can be empty??? ws.on('message', data => { - let json = parseJson(data) - debug('ws.on.message called with: ', json) - // need to rethink about how this should get handle when it's mix with public and private methods - // 1) extract the resolver name and it should ONLY be in this particular obj + let payload = parseJson(data) + // we now wrap everything in one generic method + getSocketHandler(opts, ws, deliverFn, req, namespace, payload, userdata) - - if (nspGroup) { - let methodsInNsp = nspGroup[namespace] - // debug('nspGroup', namespace, methodsInNsp) - for (let resolverName in json) { - debug('inside the loop', resolverName, json) - switch (true) { - case resolverName === LOGOUT_EVENT_NAME: - return handleLogout(ws, req, json, opts) - case resolverName === SA_LOGIN_EVENT_NAME: - return handleStandaloneLogin(ws, req, json, opts) - case resolverName === INTER_COM_EVENT_NAME: - return handleInterCom(ws, req, json, socketFns, opts, getUserdata(req)) - case methodsInNsp[resolverName] !== undefined: - debug('methodsInNsp[resolverName]', methodsInNsp[resolverName]) - // only the private one will get a userdata property - if (namespace !== publicNamespace) { - debug(`call get userdata`, req[SOCKET_STATE_KEY]) - userdata = getUserdata(req) - } - // this parameter is problematic too - handleNspResolvers(deliverFn, ws, json, socketFns, opts, userdata) - break - default: - handleUnknownPayload(ws, req, json, socketFns, opts, getUserdata(req)) - } - } - } else { // just public nsp - // the bug is here but how come the client disconnect and reconnect can affect - // the server setup? - debug(`using public nsp`, namespace) - handleNspResolvers(deliverFn, ws, json, socketFns, opts) - } }) }) } - return nspObj + + return nsps } - module.exports = { setupSocketServer } diff --git a/packages/ws-server/src/modules.js b/packages/ws-server/src/modules.js index d2ce1cf6..7fddab51 100644 --- a/packages/ws-server/src/modules.js +++ b/packages/ws-server/src/modules.js @@ -12,18 +12,14 @@ const { getRainbowDebug, createWsReply, - resolveSocketMethod, + // resolveSocketMethod, getUserdata, isUserdata, prepareUserdata, SOCKET_STATE_KEY, - handleInterCom, - handleLogout, - handleStandaloneLogin, - handleUnknownPayload, - handleNspResolvers + getSocketHandler } = require('../../ws-server-core') // require('jsonql-ws-server-core') module.exports = { @@ -40,7 +36,7 @@ module.exports = { getRainbowDebug, createWsReply, - resolveSocketMethod, + // resolveSocketMethod, getUserdata, isUserdata, @@ -48,9 +44,5 @@ module.exports = { SOCKET_STATE_KEY, - handleInterCom, - handleLogout, - handleStandaloneLogin, - handleUnknownPayload, - handleNspResolvers + getSocketHandler } -- Gitee From 80c25db641443649e6a2aff468992536d5a77e91 Mon Sep 17 00:00:00 2001 From: joelchu Date: Tue, 10 Mar 2020 22:33:12 +0800 Subject: [PATCH 02/10] fix the code but the connection still hang --- packages/ws-server-core/src/handles/get-socket-handler.js | 2 +- packages/ws-server-core/src/handles/handle-nsp-resolvers.js | 2 +- packages/ws-server/src/core/create-ws-server.js | 2 +- packages/ws-server/src/core/setup-socket-server.js | 6 ++---- 4 files changed, 5 insertions(+), 7 deletions(-) diff --git a/packages/ws-server-core/src/handles/get-socket-handler.js b/packages/ws-server-core/src/handles/get-socket-handler.js index 804c717c..fbcd0f5c 100644 --- a/packages/ws-server-core/src/handles/get-socket-handler.js +++ b/packages/ws-server-core/src/handles/get-socket-handler.js @@ -4,7 +4,7 @@ const { INTER_COM_EVENT_NAME } = require('jsonql-constants') // const { SOCKET_STATE_KEY } = require('../options/constants') - +const { getNameFromPayload } = require('jsonql-utils') const { handleInterCom } = require('./handle-intercom') const { handleLogout } = require('./handle-logout') const { handleStandaloneLogin } = require('./handle-standalone-login') diff --git a/packages/ws-server-core/src/handles/handle-nsp-resolvers.js b/packages/ws-server-core/src/handles/handle-nsp-resolvers.js index 6d133541..d6150d05 100644 --- a/packages/ws-server-core/src/handles/handle-nsp-resolvers.js +++ b/packages/ws-server-core/src/handles/handle-nsp-resolvers.js @@ -4,7 +4,7 @@ // get the resolver to handle the request const { validateInput, deliverMsg } = require('../share/resolver-methods') const { resolveSocketMethod } = require('../share/resolve-socket-method') -const { getDebug } = require('./helpers') +const { getDebug } = require('../share/helpers') const debug = getDebug('share:get-resolver') /** diff --git a/packages/ws-server/src/core/create-ws-server.js b/packages/ws-server/src/core/create-ws-server.js index c99ef00a..1850229d 100644 --- a/packages/ws-server/src/core/create-ws-server.js +++ b/packages/ws-server/src/core/create-ws-server.js @@ -14,7 +14,7 @@ const colors = require('colors/safe') const generateNsp = config => { const namespaces = getNamespace(config) return namespaces - .map((name, i) => { + .map(name => { const verifyClient = createVerifyClient(name, config, config.publicKey) const opt = Object.assign({}, config.serverInitOption, { noServer: true, verifyClient }) // How do we pass more options here diff --git a/packages/ws-server/src/core/setup-socket-server.js b/packages/ws-server/src/core/setup-socket-server.js index e0372c67..dd639cb3 100644 --- a/packages/ws-server/src/core/setup-socket-server.js +++ b/packages/ws-server/src/core/setup-socket-server.js @@ -28,8 +28,7 @@ function setupSocketServer(opts, server) { // nspObj is coming from the ws-create-server // it contains the namespace --> WebSocket instance for (let namespace in nsps) { - - nspObj[namespace].on('connection', (ws, req) => { + nsps[namespace].on('connection', (ws, req) => { let deliverFn = msg => ws.send(msg) let userdata = getUserdata(req) rdebug(namespace, 'connected') @@ -38,11 +37,10 @@ function setupSocketServer(opts, server) { let payload = parseJson(data) // we now wrap everything in one generic method getSocketHandler(opts, ws, deliverFn, req, namespace, payload, userdata) - }) }) } - + return nsps } -- Gitee From 248ea5e9192c082b25dfccaf2b673a8acb871e70 Mon Sep 17 00:00:00 2001 From: joelchu Date: Wed, 11 Mar 2020 00:01:55 +0800 Subject: [PATCH 03/10] Finally got all the parameters correct --- .../src/handles/get-socket-handler.js | 9 ++++---- .../src/handles/handle-nsp-resolvers.js | 18 +++++++++------ packages/ws-server-core/src/share/helpers.js | 6 +++-- .../src/share/resolve-socket-method.js | 4 ++-- .../src/share/resolver-methods.js | 22 +++++++++---------- .../ws-server/src/core/setup-socket-server.js | 1 + 6 files changed, 34 insertions(+), 26 deletions(-) diff --git a/packages/ws-server-core/src/handles/get-socket-handler.js b/packages/ws-server-core/src/handles/get-socket-handler.js index fbcd0f5c..c6d99f03 100644 --- a/packages/ws-server-core/src/handles/get-socket-handler.js +++ b/packages/ws-server-core/src/handles/get-socket-handler.js @@ -12,7 +12,7 @@ const { handleNspResolvers } = require('./handle-nsp-resolvers') // @TBC do we need this const { handleUnknownPayload } = require('./handle-unknown-payload') const { getRainbowDebug } = require('../share/helpers') -const debug = getRainbowDebug('handles:get-socket-handler') +const debug = getRainbowDebug('handles:get-socket-handler', 'whatever') /** * Make sure the resolver is belongs to this namespace @@ -65,9 +65,10 @@ function getSocketHandler(config, ws, deliverFn, req, connectedNamespace, payloa default: - const params = matchResolverByNamespace(resolverName, connectedNamespace, nspGroup) - if (params !== false) { - handleNspResolvers(deliverFn, ws, resolverName, args, params, config, userdata) + const contractParam = matchResolverByNamespace(resolverName, connectedNamespace, nspGroup) + debug('default', contractParam) + if (contractParam !== false) { + handleNspResolvers(deliverFn, ws, resolverName, args, contractParam.params, config, userdata) } } } diff --git a/packages/ws-server-core/src/handles/handle-nsp-resolvers.js b/packages/ws-server-core/src/handles/handle-nsp-resolvers.js index d6150d05..007f032f 100644 --- a/packages/ws-server-core/src/handles/handle-nsp-resolvers.js +++ b/packages/ws-server-core/src/handles/handle-nsp-resolvers.js @@ -2,10 +2,10 @@ // @TODO this property still not create correctly // const { TIMESTAMP_PARAM_NAME } = require('jsonql-constants') // get the resolver to handle the request -const { validateInput, deliverMsg } = require('../share/resolver-methods') +const { validateInput, deliverMsg, handleError } = require('../share/resolver-methods') const { resolveSocketMethod } = require('../share/resolve-socket-method') -const { getDebug } = require('../share/helpers') -const debug = getDebug('share:get-resolver') +const { getRainbowDebug } = require('../share/helpers') +const debug = getRainbowDebug('share:get-resolver', 'x') /** * handle resolvers @@ -19,6 +19,8 @@ const debug = getDebug('share:get-resolver') * @return {promise} resolve the result */ const handleNspResolvers = (deliverFn, ws, resolverName, args, params, opts, userdata) => { + debug(resolverName, args, params) + // debug('TIMESTAMP_PARAM_NAME', json[TIMESTAMP_PARAM_NAME], TIMESTAMP_PARAM_NAME) // const ts = json[TIMESTAMP_PARAM_NAME] // keep this for use later // @NOTE the params.params is from the contract @@ -27,15 +29,17 @@ const handleNspResolvers = (deliverFn, ws, resolverName, args, params, opts, use deliverFn, resolverName, args, // this is the clean value from validateAsync - params, opts, ws, userdata ) ) - .then( - result => deliveryMsg(deliverFn, result, resolverName) - ) + .then(result => { + debug(`${resolverName} return result`, result) + + return deliverMsg(deliverFn, resolverName, result) + }) + .catch(err => handleError(deliverFn, resolverName, err)) } module.exports = { handleNspResolvers } diff --git a/packages/ws-server-core/src/share/helpers.js b/packages/ws-server-core/src/share/helpers.js index 9ff343c0..ab51c8c6 100644 --- a/packages/ws-server-core/src/share/helpers.js +++ b/packages/ws-server-core/src/share/helpers.js @@ -59,12 +59,14 @@ const getDebug = name => debug(MODULE_NAME).extend(name) * Create a rainbow effect debug on the first string * help to id where the hell things coming from * @param {string} name the extended name + * @param {string} type just a switch to change color * @return {function} the debug function */ -const getRainbowDebug = name => { +const getRainbowDebug = (name, type = 'rainbow') => { const fn = getDebug(name) + const method = type === 'rainbow' ? colors.rainbow : colors.black.bgBrightYellow return (str, ...args) => { - Reflect.apply(fn, null, [colors.rainbow(str+'')].concat(args)) + Reflect.apply(fn, null, [method(str+'')].concat(args)) } } diff --git a/packages/ws-server-core/src/share/resolve-socket-method.js b/packages/ws-server-core/src/share/resolve-socket-method.js index 06ab183a..d1524555 100644 --- a/packages/ws-server-core/src/share/resolve-socket-method.js +++ b/packages/ws-server-core/src/share/resolve-socket-method.js @@ -11,13 +11,12 @@ const debug = getRainbowDebug('resolve-method') * @param {function} deliverFn framework specific method * @param {string} resolverName name to call * @param {array} args arguments - * @param {object} params from contract.json <-- why is this NOT IN USE? * @param {object} opts for search later * @param {object} ws the WebSocket instance * @param {object} [userdata=false] userdata * @return {promise} depends on the contract */ -const resolveSocketMethod = function(deliverFn, resolverName, args, params, opts, ws, userdata = false) { +const resolveSocketMethod = function(deliverFn, resolverName, args, opts, ws, userdata) { // debug('wsServerCore.resolveSocketMethod', params) // check what is this then decided what to do later // debug(`resolveMethod userdata`, userdata) // the contract is always part of the options here @@ -26,6 +25,7 @@ const resolveSocketMethod = function(deliverFn, resolverName, args, params, opts return addProperty(deliverFn, fn, resolverName, ws, userdata, opts) .then(resolver => { + debug(`calling ${resolver} with`, args) try { return Reflect.apply(resolver, null, args) } catch(e) { diff --git a/packages/ws-server-core/src/share/resolver-methods.js b/packages/ws-server-core/src/share/resolver-methods.js index 0b5120bf..a5808265 100644 --- a/packages/ws-server-core/src/share/resolver-methods.js +++ b/packages/ws-server-core/src/share/resolver-methods.js @@ -1,12 +1,12 @@ // Take the code out from the run-resolver to share between other method const { packError } = require('jsonql-utils') const { isNotEmpty, validateAsync } = require('jsonql-params-validator') -const { getDebug, createWsReply } = require('./helpers') +const { getRainbowDebug, createWsReply } = require('./helpers') const { ACKNOWLEDGE_REPLY_TYPE, ERROR_TYPE } = require('jsonql-constants') -const debug = getDebug('share:resolver-methods') +const debug = getRainbowDebug('share:resolver-methods', 'y') /** @@ -23,11 +23,11 @@ function validateInput(args, params) { /** * the final step to delivery the result to the client * @param {function} deliverFn framework specific method to delivery - * @param {*} result from the resolver process * @param {string} resolverName that perform this method + * @param {*} result from the resolver process * @return {void} */ -function handleResult(deliverFn, result, resolverName) { +function handleResult(deliverFn, resolverName, result) { debug('resolver return result', result) // decide if we need to call the cb or not here if (isNotEmpty(result)) { @@ -40,11 +40,11 @@ function handleResult(deliverFn, result, resolverName) { /** * the final step to delivery the error to the client * @param {function} deliverFn framework specific method to delivery - * @param {*} result from the resolver process * @param {string} resolverName that perform this method + * @param {*} err the error * @return {void} */ -function handleError(deliverFn, result, resolverName) { +function handleError(deliverFn, resolverName, err) { debug('CATCH RESOLVER ERROR', err) deliverFn(createWsReply(ERROR_TYPE, resolverName, packError(err))) } @@ -53,19 +53,19 @@ function handleError(deliverFn, result, resolverName) { /** * The final step to delivery the message * @param {function} deliverFn framework specific method to delivery - * @param {*} result from the resolver process * @param {string} resolverName that perform this method + * @param {*} result from the resolver process * @return {void} */ -function deliverMsg(deliverFn, result, resolverName) { +function deliverMsg(deliverFn, resolverName, result) { return Promise .resolve(result) - .then(result => handleResult(deliverFn, result, resolverName)) - .catch(err => handleError(deliverFn, err, resolverName)) + .then(result => handleResult(deliverFn, resolverName, result)) } module.exports = { validateInput, - deliverMsg + deliverMsg, + handleError } diff --git a/packages/ws-server/src/core/setup-socket-server.js b/packages/ws-server/src/core/setup-socket-server.js index dd639cb3..7e6ecfd5 100644 --- a/packages/ws-server/src/core/setup-socket-server.js +++ b/packages/ws-server/src/core/setup-socket-server.js @@ -35,6 +35,7 @@ function setupSocketServer(opts, server) { // @TODO need to redo here the nspGroup can be empty??? ws.on('message', data => { let payload = parseJson(data) + rdebug(`${namespace} --> message`, payload) // we now wrap everything in one generic method getSocketHandler(opts, ws, deliverFn, req, namespace, payload, userdata) }) -- Gitee From 64984697977af54b55dd82aaf1c2c8268f0a4bfc Mon Sep 17 00:00:00 2001 From: joelchu Date: Wed, 11 Mar 2020 00:17:01 +0800 Subject: [PATCH 04/10] basic test is done --- packages/ws-server/tests/basic.test.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/ws-server/tests/basic.test.js b/packages/ws-server/tests/basic.test.js index 4e66e889..4e78be3e 100644 --- a/packages/ws-server/tests/basic.test.js +++ b/packages/ws-server/tests/basic.test.js @@ -65,8 +65,8 @@ test.cb('It should able to connect to public namespace without a token', t => { client.on('message', data => { let json = extractWsPayload(data) - // debug('reply', json) - t.truthy(json.data) + debug('reply', json) + t.is(json.data, 'You get a public message') // client.close() t.end() }) -- Gitee From 286d1acbe3b13fdc513b977070961231f6e6807e Mon Sep 17 00:00:00 2001 From: joelchu Date: Wed, 11 Mar 2020 08:40:36 +0800 Subject: [PATCH 05/10] Just clean up the code in ws-server --- .../src/handles/get-socket-handler.js | 8 +++++--- packages/ws-server/src/core/setup-socket-server.js | 14 +++----------- packages/ws-server/tests/ws-connect-error.test.js | 4 +++- 3 files changed, 11 insertions(+), 15 deletions(-) diff --git a/packages/ws-server-core/src/handles/get-socket-handler.js b/packages/ws-server-core/src/handles/get-socket-handler.js index c6d99f03..7d9a2e3c 100644 --- a/packages/ws-server-core/src/handles/get-socket-handler.js +++ b/packages/ws-server-core/src/handles/get-socket-handler.js @@ -66,10 +66,12 @@ function getSocketHandler(config, ws, deliverFn, req, connectedNamespace, payloa default: const contractParam = matchResolverByNamespace(resolverName, connectedNamespace, nspGroup) - debug('default', contractParam) - if (contractParam !== false) { - handleNspResolvers(deliverFn, ws, resolverName, args, contractParam.params, config, userdata) + if (contractParam === false) { + return // exit } + debug('default', contractParam) + handleNspResolvers(deliverFn, ws, resolverName, args, contractParam.params, config, userdata) + } } diff --git a/packages/ws-server/src/core/setup-socket-server.js b/packages/ws-server/src/core/setup-socket-server.js index 7e6ecfd5..5e699013 100644 --- a/packages/ws-server/src/core/setup-socket-server.js +++ b/packages/ws-server/src/core/setup-socket-server.js @@ -3,30 +3,22 @@ const { parseJson } = require('jsonql-utils') const { getSocketHandler, - getDebug, getRainbowDebug, getUserdata - // SOCKET_STATE_KEY } = require('../modules') - -// const debug = getDebug('ws-setup') const rdebug = getRainbowDebug('ws-setup') - const { createWsServer } = require('./create-ws-server') /** - * This method get pass back to the ws-server-core to finish the setup + * This is the core of the communicaton engine + * and this method get pass back to the ws-server-core to finish the setup * @param {object} opts configuration * @param {object} server the http server instance * @return {object} nspObj itself with addtional properties */ function setupSocketServer(opts, server) { const nsps = createWsServer(opts, server) - // const { publicNamespace, nspGroup } = opts.nspInfo - // rdebug('nspInfo', nspInfo) - - // nspObj is coming from the ws-create-server - // it contains the namespace --> WebSocket instance + // nsps[namespace] contains the namespace --> WebSocket instance for (let namespace in nsps) { nsps[namespace].on('connection', (ws, req) => { let deliverFn = msg => ws.send(msg) diff --git a/packages/ws-server/tests/ws-connect-error.test.js b/packages/ws-server/tests/ws-connect-error.test.js index 19631b46..b24809d9 100644 --- a/packages/ws-server/tests/ws-connect-error.test.js +++ b/packages/ws-server/tests/ws-connect-error.test.js @@ -56,8 +56,10 @@ test.cb(`It should able to extract the error object when error throw from the se debug('json decoded from msg: %O', data) // data.error = typeof data.error === 'string' ? JSON.parse(data.error) : data.error; - t.truthy(data.error, 'causeError should have error field') + t.is(data.error.className, 'JsonqlResolverAppError') + + t.truthy(data.error, 'causeError should have error field') t.is(json.type, ERROR_TYPE) // The same problem happens again -- Gitee From de50bb1c9b70d0260529ffc203393368bbc5cd0a Mon Sep 17 00:00:00 2001 From: joelchu Date: Wed, 11 Mar 2020 09:10:30 +0800 Subject: [PATCH 06/10] Fix the wrong function name in the createSend --- packages/ws-server-core/src/handles/get-socket-handler.js | 1 - packages/ws-server-core/src/share/add-property.js | 6 ++---- packages/ws-server-core/src/share/create-send.js | 8 ++++---- .../ws-server-core/src/share/resolve-socket-method.js | 2 +- packages/ws-server/src/core/setup-socket-server.js | 1 - 5 files changed, 7 insertions(+), 11 deletions(-) diff --git a/packages/ws-server-core/src/handles/get-socket-handler.js b/packages/ws-server-core/src/handles/get-socket-handler.js index 7d9a2e3c..96ac3a9d 100644 --- a/packages/ws-server-core/src/handles/get-socket-handler.js +++ b/packages/ws-server-core/src/handles/get-socket-handler.js @@ -9,7 +9,6 @@ const { handleInterCom } = require('./handle-intercom') const { handleLogout } = require('./handle-logout') const { handleStandaloneLogin } = require('./handle-standalone-login') const { handleNspResolvers } = require('./handle-nsp-resolvers') -// @TBC do we need this const { handleUnknownPayload } = require('./handle-unknown-payload') const { getRainbowDebug } = require('../share/helpers') const debug = getRainbowDebug('handles:get-socket-handler', 'whatever') diff --git a/packages/ws-server-core/src/share/add-property.js b/packages/ws-server-core/src/share/add-property.js index 68d37984..35a96d7b 100644 --- a/packages/ws-server-core/src/share/add-property.js +++ b/packages/ws-server-core/src/share/add-property.js @@ -1,16 +1,14 @@ // add required properties to the resolver const { - EMIT_REPLY_TYPE, - SEND_MSG_FN_NAME, SOCKET_NAME, INIT_CLIENT_PROP_KEY } = require('jsonql-constants') // @BUG it's weird this file is not here but no error was throw -const { objDefineProps, injectToFn } = require('jsonql-utils') +const { injectToFn } = require('jsonql-utils') const { provideUserdata } = require('jsonql-jwt') const { injectNodeClient } = require('jsonql-resolver') const { createSend } = require('./create-send') -const { nil, createWsReply, getDebug } = require('../share/helpers') +const { getDebug } = require('../share/helpers') const debug = getDebug(`addProperty`) /** diff --git a/packages/ws-server-core/src/share/create-send.js b/packages/ws-server-core/src/share/create-send.js index 9e047cba..ded162c1 100644 --- a/packages/ws-server-core/src/share/create-send.js +++ b/packages/ws-server-core/src/share/create-send.js @@ -1,6 +1,6 @@ const { SEND_MSG_FN_NAME } = require('jsonql-constants') const { objDefineProps } = require('jsonql-utils') -const { deliveryMsg } = require('./resolver-methods') +const { deliverMsg } = require('./resolver-methods') const { nil, getDebug } = require('./helpers') const debug = getDebug('create-send') @@ -13,8 +13,8 @@ const debug = getDebug('create-send') * @param {object} opts configuration * @return {function} resolver with a `send` method property */ -const createSend = function(deliveryFn, resolver, resolverName, opts) { - const params = opts.contract.socket[resolverName] +const createSend = function(deliverFn, resolver, resolverName, opts) { + // const params = opts.contract.socket[resolverName] return objDefineProps( resolver, @@ -25,7 +25,7 @@ const createSend = function(deliveryFn, resolver, resolverName, opts) { // we should validate it against the return params return function sendCallback(...args) { debug('sendCallback', args) - deliveryMsg(deliverFn, args, resolverName) + deliverMsg(deliverFn, args, resolverName) } } ) diff --git a/packages/ws-server-core/src/share/resolve-socket-method.js b/packages/ws-server-core/src/share/resolve-socket-method.js index d1524555..153803a9 100644 --- a/packages/ws-server-core/src/share/resolve-socket-method.js +++ b/packages/ws-server-core/src/share/resolve-socket-method.js @@ -29,7 +29,7 @@ const resolveSocketMethod = function(deliverFn, resolverName, args, opts, ws, us try { return Reflect.apply(resolver, null, args) } catch(e) { - debug(`resolveMethod Error`, e) + debug(`resolveSocketMethod Error`, e) throw new JsonqlResolverAppError(resolverName, e) } }) diff --git a/packages/ws-server/src/core/setup-socket-server.js b/packages/ws-server/src/core/setup-socket-server.js index 5e699013..80f5fad9 100644 --- a/packages/ws-server/src/core/setup-socket-server.js +++ b/packages/ws-server/src/core/setup-socket-server.js @@ -1,5 +1,4 @@ // ws setup all the listener to handle the incoming calls -// const { finalCatch } = require('jsonql-errors') const { parseJson } = require('jsonql-utils') const { getSocketHandler, -- Gitee From 4889623b40145261019f0be443c3f9160b508bcf Mon Sep 17 00:00:00 2001 From: joelchu Date: Wed, 11 Mar 2020 09:15:42 +0800 Subject: [PATCH 07/10] fix the createSend wrong parameters order --- packages/ws-server-core/src/share/create-send.js | 5 ++--- packages/ws-server-core/src/share/helpers.js | 3 --- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/packages/ws-server-core/src/share/create-send.js b/packages/ws-server-core/src/share/create-send.js index ded162c1..6146ab8e 100644 --- a/packages/ws-server-core/src/share/create-send.js +++ b/packages/ws-server-core/src/share/create-send.js @@ -10,10 +10,9 @@ const debug = getDebug('create-send') * @param {function} deliveryFn framework specific to deliver message to client * @param {function} resolver the function itself * @param {string} resolverName the name of this resolver - * @param {object} opts configuration * @return {function} resolver with a `send` method property */ -const createSend = function(deliverFn, resolver, resolverName, opts) { +const createSend = function(deliverFn, resolver, resolverName) { // const params = opts.contract.socket[resolverName] return objDefineProps( @@ -25,7 +24,7 @@ const createSend = function(deliverFn, resolver, resolverName, opts) { // we should validate it against the return params return function sendCallback(...args) { debug('sendCallback', args) - deliverMsg(deliverFn, args, resolverName) + deliverMsg(deliverFn, resolverName, args) } } ) diff --git a/packages/ws-server-core/src/share/helpers.js b/packages/ws-server-core/src/share/helpers.js index ab51c8c6..7fd801ba 100644 --- a/packages/ws-server-core/src/share/helpers.js +++ b/packages/ws-server-core/src/share/helpers.js @@ -25,7 +25,6 @@ const { chainFns, objDefineProps, objHasProp, - groupByNamespace, getNspInfoByConfig } = require('jsonql-utils') const { isString } = require('jsonql-params-validator') @@ -46,8 +45,6 @@ const getResolverFromPayload = payload => { return keys.filter(key => key !== TIMESTAMP_PARAM_NAME)[0] } - - /** * Create the debug instance * @param {string} name -- Gitee From 70c0b037d40c18f19ba37416040fee91a2be688d Mon Sep 17 00:00:00 2001 From: joelchu Date: Wed, 11 Mar 2020 10:05:20 +0800 Subject: [PATCH 08/10] set more debug point to trace where it went --- .../ws-server-core/src/handles/get-socket-handler.js | 5 ++++- .../ws-server-core/src/handles/handle-nsp-resolvers.js | 10 +++++++--- packages/ws-server-core/src/share/helpers.js | 1 - .../ws-server-core/src/share/resolve-socket-method.js | 4 +--- packages/ws-server-core/src/share/resolver-methods.js | 2 +- packages/ws-server/package.json | 2 +- 6 files changed, 14 insertions(+), 10 deletions(-) diff --git a/packages/ws-server-core/src/handles/get-socket-handler.js b/packages/ws-server-core/src/handles/get-socket-handler.js index 96ac3a9d..05b11a53 100644 --- a/packages/ws-server-core/src/handles/get-socket-handler.js +++ b/packages/ws-server-core/src/handles/get-socket-handler.js @@ -52,13 +52,16 @@ function getSocketHandler(config, ws, deliverFn, req, connectedNamespace, payloa // it might be the special internal event? switch (true) { case resolverName === LOGOUT_EVENT_NAME: + debug('getSocketHandler:logout') // we don't need to send anything back @TBC do we need the config return handleLogout(ws, req, args, config) case resolverName === SA_LOGIN_EVENT_NAME: + debug('getSocketHandler:standaloneLogin') return handleStandaloneLogin(deliverFn, ws, req, args, config) case resolverName === INTER_COM_EVENT_NAME: + debug('getSocketHandler:intercom') // We don't need to send anything back // @TBC do we need the config return handleInterCom(config, ws, req, args, userdata) @@ -68,7 +71,7 @@ function getSocketHandler(config, ws, deliverFn, req, connectedNamespace, payloa if (contractParam === false) { return // exit } - debug('default', contractParam) + debug('getSocketHandler:default', contractParam) handleNspResolvers(deliverFn, ws, resolverName, args, contractParam.params, config, userdata) } diff --git a/packages/ws-server-core/src/handles/handle-nsp-resolvers.js b/packages/ws-server-core/src/handles/handle-nsp-resolvers.js index 007f032f..d7d1e884 100644 --- a/packages/ws-server-core/src/handles/handle-nsp-resolvers.js +++ b/packages/ws-server-core/src/handles/handle-nsp-resolvers.js @@ -6,6 +6,7 @@ const { validateInput, deliverMsg, handleError } = require('../share/resolver-me const { resolveSocketMethod } = require('../share/resolve-socket-method') const { getRainbowDebug } = require('../share/helpers') const debug = getRainbowDebug('share:get-resolver', 'x') +// const rdebug = getRainbowDebug('share:get-resolver') /** * handle resolvers @@ -19,7 +20,7 @@ const debug = getRainbowDebug('share:get-resolver', 'x') * @return {promise} resolve the result */ const handleNspResolvers = (deliverFn, ws, resolverName, args, params, opts, userdata) => { - debug(resolverName, args, params) + debug('handleNspResolvers', resolverName, args, params) // debug('TIMESTAMP_PARAM_NAME', json[TIMESTAMP_PARAM_NAME], TIMESTAMP_PARAM_NAME) // const ts = json[TIMESTAMP_PARAM_NAME] // keep this for use later @@ -36,10 +37,13 @@ const handleNspResolvers = (deliverFn, ws, resolverName, args, params, opts, use ) .then(result => { debug(`${resolverName} return result`, result) - return deliverMsg(deliverFn, resolverName, result) }) - .catch(err => handleError(deliverFn, resolverName, err)) + .catch(err => { + // By the time the error gets here already become JsonqlError??? + // rdebug('in the catch', err) + handleError(deliverFn, resolverName, err) + }) } module.exports = { handleNspResolvers } diff --git a/packages/ws-server-core/src/share/helpers.js b/packages/ws-server-core/src/share/helpers.js index 7fd801ba..526bbe93 100644 --- a/packages/ws-server-core/src/share/helpers.js +++ b/packages/ws-server-core/src/share/helpers.js @@ -1,7 +1,6 @@ // Helpers methods // jsonql libraries const { - JSONQL_PATH, WS_REPLY_TYPE, WS_EVT_NAME, WS_DATA_NAME, diff --git a/packages/ws-server-core/src/share/resolve-socket-method.js b/packages/ws-server-core/src/share/resolve-socket-method.js index 153803a9..e25545a2 100644 --- a/packages/ws-server-core/src/share/resolve-socket-method.js +++ b/packages/ws-server-core/src/share/resolve-socket-method.js @@ -17,9 +17,7 @@ const debug = getRainbowDebug('resolve-method') * @return {promise} depends on the contract */ const resolveSocketMethod = function(deliverFn, resolverName, args, opts, ws, userdata) { - // debug('wsServerCore.resolveSocketMethod', params) // check what is this then decided what to do later - // debug(`resolveMethod userdata`, userdata) - // the contract is always part of the options here + const { contract } = opts const fn = getResolver(resolverName, SOCKET_NAME, contract, opts) diff --git a/packages/ws-server-core/src/share/resolver-methods.js b/packages/ws-server-core/src/share/resolver-methods.js index a5808265..6535e3e3 100644 --- a/packages/ws-server-core/src/share/resolver-methods.js +++ b/packages/ws-server-core/src/share/resolver-methods.js @@ -6,7 +6,7 @@ const { ACKNOWLEDGE_REPLY_TYPE, ERROR_TYPE } = require('jsonql-constants') -const debug = getRainbowDebug('share:resolver-methods', 'y') +const debug = getRainbowDebug('share:resolver-methods') /** diff --git a/packages/ws-server/package.json b/packages/ws-server/package.json index b34e5944..5507ea81 100755 --- a/packages/ws-server/package.json +++ b/packages/ws-server/package.json @@ -12,7 +12,7 @@ "prepare": "npm run test", "test:basic": "DEBUG=jsonql-ws-server* ava ./tests/basic.test.js", "test:ws": "DEBUG=jsonql-ws-server* ava ./tests/ws-connect.test.js", - "test:error": "DEBUG=jsonql-ws-server* ava ./tests/ws-connect-error.test.js", + "test:error": "DEBUG=jsonql-* ava ./tests/ws-connect-error.test.js", "test:es6": "DEBUG=jsonql-ws-server* ava ./tests/ws-connect-es6.test.js", "test:jwt": "DEBUG=jsonql-ws-* ava ./tests/ws-jwt-auth.test.js", "contract": "node ./node_modules/jsonql-contract/cmd.js configFile ./tests/fixtures/contract-config.js", -- Gitee From 4c913c71b389a5f7e7214e8a106c10fe39f500af Mon Sep 17 00:00:00 2001 From: joelchu Date: Wed, 11 Mar 2020 10:28:04 +0800 Subject: [PATCH 09/10] Just stub a socket auth interceptor function and test --- packages/resolver/index.js | 6 +++++- packages/resolver/package.json | 6 +++--- packages/resolver/src/handle-auth-methods.js | 12 +++++++++++- .../tests/fixtures/contract/es/contract.json | 2 +- packages/resolver/tests/socket.test.js | 4 ++++ .../src/handles/handle-nsp-resolvers.js | 4 +--- packages/ws-server-core/src/share/add-property.js | 2 +- .../src/share/resolve-socket-method.js | 9 +++++++-- .../ws-server-core/src/share/resolver-methods.js | 2 +- 9 files changed, 34 insertions(+), 13 deletions(-) create mode 100644 packages/resolver/tests/socket.test.js diff --git a/packages/resolver/index.js b/packages/resolver/index.js index 560a7b7d..e5504000 100644 --- a/packages/resolver/index.js +++ b/packages/resolver/index.js @@ -8,7 +8,8 @@ const { } = require('./src/resolve-methods') const { getLocalValidator, - handleAuthMethods + handleAuthMethods, + handleSocketAuthInterceptors } = require('./src/handle-auth-methods') // for 1.0.0 release (first on 0.9.8) // we also export the node client generator parts @@ -33,8 +34,11 @@ module.exports = { searchResolvers, validateAndCall, getResolver, + handleAuthMethods, getLocalValidator, + handleSocketAuthInterceptors, + executeResolver, resolverRenderHandler, // for node clients diff --git a/packages/resolver/package.json b/packages/resolver/package.json index 44417916..ab86374f 100644 --- a/packages/resolver/package.json +++ b/packages/resolver/package.json @@ -28,17 +28,17 @@ }, "dependencies": { "debug": "^4.1.1", - "jsonql-constants": "^1.9.1", + "jsonql-constants": "^1.9.8", "jsonql-errors": "^1.1.10", "jsonql-jwt": "^1.3.9", "jsonql-node-client": "^1.3.1", "jsonql-params-validator": "^1.5.2", - "jsonql-utils": "^1.0.0", + "jsonql-utils": "^1.0.6", "lodash.merge": "^4.6.2" }, "devDependencies": { "ava": "^3.5.0", - "jsonql-contract": "^1.8.7", + "jsonql-contract": "^1.8.8", "jsonql-koa": "^1.6.2", "server-io-core": "^1.3.1" }, diff --git a/packages/resolver/src/handle-auth-methods.js b/packages/resolver/src/handle-auth-methods.js index 9884b0c2..508e6ab6 100644 --- a/packages/resolver/src/handle-auth-methods.js +++ b/packages/resolver/src/handle-auth-methods.js @@ -1,5 +1,6 @@ // Auth methods handler const { + SOCKET_NAME, AUTH_TYPE, QUERY_ARG_NAME, UNAUTHORIZED_STATUS @@ -85,7 +86,16 @@ const handleAuthMethods = async function(ctx, payload, opts, contract) { } } +/** + * @TODO for socket to add auth interceptors + */ +function handleSocketAuthInterceptors() { + return SOCKET_NAME +} + + module.exports = { getLocalValidator, - handleAuthMethods + handleAuthMethods, + handleSocketAuthInterceptors } diff --git a/packages/resolver/tests/fixtures/contract/es/contract.json b/packages/resolver/tests/fixtures/contract/es/contract.json index f81955d7..b712a94d 100644 --- a/packages/resolver/tests/fixtures/contract/es/contract.json +++ b/packages/resolver/tests/fixtures/contract/es/contract.json @@ -43,6 +43,6 @@ } }, "auth": {}, - "timestamp": 1583299808, + "timestamp": 1583893626, "sourceType": "module" } diff --git a/packages/resolver/tests/socket.test.js b/packages/resolver/tests/socket.test.js new file mode 100644 index 00000000..7d958a73 --- /dev/null +++ b/packages/resolver/tests/socket.test.js @@ -0,0 +1,4 @@ +const test = require('ava') + + +test.todo(`It should able to find socket auth interceptors`) \ No newline at end of file diff --git a/packages/ws-server-core/src/handles/handle-nsp-resolvers.js b/packages/ws-server-core/src/handles/handle-nsp-resolvers.js index d7d1e884..f854ec21 100644 --- a/packages/ws-server-core/src/handles/handle-nsp-resolvers.js +++ b/packages/ws-server-core/src/handles/handle-nsp-resolvers.js @@ -5,8 +5,7 @@ const { validateInput, deliverMsg, handleError } = require('../share/resolver-methods') const { resolveSocketMethod } = require('../share/resolve-socket-method') const { getRainbowDebug } = require('../share/helpers') -const debug = getRainbowDebug('share:get-resolver', 'x') -// const rdebug = getRainbowDebug('share:get-resolver') +const debug = getRainbowDebug('handles:handle-nsp-resolver', 'x') /** * handle resolvers @@ -21,7 +20,6 @@ const debug = getRainbowDebug('share:get-resolver', 'x') */ const handleNspResolvers = (deliverFn, ws, resolverName, args, params, opts, userdata) => { debug('handleNspResolvers', resolverName, args, params) - // debug('TIMESTAMP_PARAM_NAME', json[TIMESTAMP_PARAM_NAME], TIMESTAMP_PARAM_NAME) // const ts = json[TIMESTAMP_PARAM_NAME] // keep this for use later // @NOTE the params.params is from the contract diff --git a/packages/ws-server-core/src/share/add-property.js b/packages/ws-server-core/src/share/add-property.js index 35a96d7b..1d0ff2e7 100644 --- a/packages/ws-server-core/src/share/add-property.js +++ b/packages/ws-server-core/src/share/add-property.js @@ -9,7 +9,7 @@ const { provideUserdata } = require('jsonql-jwt') const { injectNodeClient } = require('jsonql-resolver') const { createSend } = require('./create-send') const { getDebug } = require('../share/helpers') -const debug = getDebug(`addProperty`) +const debug = getDebug(`share:addProperty`) /** * using the serverType to provide different addProperty method to this diff --git a/packages/ws-server-core/src/share/resolve-socket-method.js b/packages/ws-server-core/src/share/resolve-socket-method.js index e25545a2..730c5515 100644 --- a/packages/ws-server-core/src/share/resolve-socket-method.js +++ b/packages/ws-server-core/src/share/resolve-socket-method.js @@ -4,7 +4,7 @@ const { SOCKET_NAME } = require('jsonql-constants') const { getResolver } = require('jsonql-resolver') const { getRainbowDebug } = require('./helpers') const { addProperty } = require('./add-property') -const debug = getRainbowDebug('resolve-method') +const debug = getRainbowDebug('share:resolve-method') /** * similiar to the one in Koa-middleware without the ctx @@ -17,8 +17,9 @@ const debug = getRainbowDebug('resolve-method') * @return {promise} depends on the contract */ const resolveSocketMethod = function(deliverFn, resolverName, args, opts, ws, userdata) { - + debug('resolverSocketMethod') const { contract } = opts + const fn = getResolver(resolverName, SOCKET_NAME, contract, opts) return addProperty(deliverFn, fn, resolverName, ws, userdata, opts) @@ -31,6 +32,10 @@ const resolveSocketMethod = function(deliverFn, resolverName, args, opts, ws, us throw new JsonqlResolverAppError(resolverName, e) } }) + .catch(err => { + debug(`catch error in catch phrase here`, err) + throw new JsonqlResolverAppError(resolverName, e) + }) } // we only need to export one method diff --git a/packages/ws-server-core/src/share/resolver-methods.js b/packages/ws-server-core/src/share/resolver-methods.js index 6535e3e3..34bd8ae8 100644 --- a/packages/ws-server-core/src/share/resolver-methods.js +++ b/packages/ws-server-core/src/share/resolver-methods.js @@ -45,7 +45,7 @@ function handleResult(deliverFn, resolverName, result) { * @return {void} */ function handleError(deliverFn, resolverName, err) { - debug('CATCH RESOLVER ERROR', err) + debug('--> CATCH RESOLVER ERROR <--', err) deliverFn(createWsReply(ERROR_TYPE, resolverName, packError(err))) } -- Gitee From d88763ebf7a8c82393d335f51b34aac6b0043e3f Mon Sep 17 00:00:00 2001 From: joelchu Date: Wed, 11 Mar 2020 12:57:35 +0800 Subject: [PATCH 10/10] jsonql-resolver to 1.1.2 --- packages/resolver/index.js | 4 +- packages/resolver/package.json | 3 +- packages/resolver/src/handle-auth-methods.js | 50 +++++++++++++++++-- .../tests/fixtures/contract/es/contract.json | 2 +- packages/resolver/tests/socket.test.js | 8 +++ 5 files changed, 59 insertions(+), 8 deletions(-) diff --git a/packages/resolver/index.js b/packages/resolver/index.js index e5504000..4cd1a01b 100644 --- a/packages/resolver/index.js +++ b/packages/resolver/index.js @@ -9,7 +9,7 @@ const { const { getLocalValidator, handleAuthMethods, - handleSocketAuthInterceptors + getSocketAuthInterceptor } = require('./src/handle-auth-methods') // for 1.0.0 release (first on 0.9.8) // we also export the node client generator parts @@ -37,7 +37,7 @@ module.exports = { handleAuthMethods, getLocalValidator, - handleSocketAuthInterceptors, + getSocketAuthInterceptor, executeResolver, resolverRenderHandler, diff --git a/packages/resolver/package.json b/packages/resolver/package.json index ab86374f..1f16f799 100644 --- a/packages/resolver/package.json +++ b/packages/resolver/package.json @@ -1,6 +1,6 @@ { "name": "jsonql-resolver", - "version": "1.1.1", + "version": "1.1.2", "description": "This is NOT for general use, please do not install it directly. This module is part of the jsonql tools supporting modules.", "main": "index.js", "files": [ @@ -10,6 +10,7 @@ "scripts": { "test": "ava", "prepare": "npm run test", + "test:socket": "DEBUG=jsonql-resolver* ava ./tests/socket.test.js", "test:base": "DEBUG=jsonql* ava ./tests/base.test.js", "test:clients": "DEBUG=jsonql* ava ./tests/clients.test.js", "test:throw": "DEBUG=jsonql-resolver* ava ./tests/throw.test.js", diff --git a/packages/resolver/src/handle-auth-methods.js b/packages/resolver/src/handle-auth-methods.js index 508e6ab6..9ad23fa3 100644 --- a/packages/resolver/src/handle-auth-methods.js +++ b/packages/resolver/src/handle-auth-methods.js @@ -1,6 +1,14 @@ // Auth methods handler +const { join } = require('path') const { SOCKET_NAME, + LOGIN_EVENT_NAME, + SWITCH_USER_EVENT_NAME, + LOGOUT_EVENT_NAME, + SA_LOGIN_EVENT_NAME, + CONNECTED_EVENT_NAME, + DISCONNECT_EVENT_NAME, + AUTH_TYPE, QUERY_ARG_NAME, UNAUTHORIZED_STATUS @@ -87,15 +95,49 @@ const handleAuthMethods = async function(ctx, payload, opts, contract) { } /** - * @TODO for socket to add auth interceptors + * Construct the search path to find interceptors + * @param {string} evtName type of event + * @param {object} opts configuration + * @return {string} path to interceptor + */ +function getPathByInterceptorType(evtName, opts) { + const { resolverDir } = opts + const basePath = join(resolverDir, SOCKET_NAME, AUTH_TYPE) + + switch(evtName) { + case LOGIN_EVENT_NAME: + case SA_LOGIN_EVENT_NAME: + return join(basePath, opts.loginHandlerName) + case LOGOUT_EVENT_NAME: + return join(basePath, opts.logoutHandlerName) + case CONNECTED_EVENT_NAME: + // @TBC this should be an internal event handler + case DISCONNECT_EVENT_NAME: + case SWITCH_USER_EVENT_NAME: + default: + // @TODO this feature is not going to implement until a few versions later + throw new Error(`SWITCH_USER_EVENT_NAME is not implement`) + } +} + + +/** + * @TODO for socket to add auth interceptors + * @param {string} evtName of the interceptor + * @param {object} contract full contract + * @param {object} opts configuration + * @return {function} the interceptor method to handle the callback */ -function handleSocketAuthInterceptors() { - return SOCKET_NAME +function getSocketAuthInterceptor(evtName, contract, opts) { + let pathToResolver = getSocketAuthInterceptor(evtName, opts) + + return pathToResolver } module.exports = { getLocalValidator, handleAuthMethods, - handleSocketAuthInterceptors + getPathByInterceptorType, + getSocketAuthInterceptor } diff --git a/packages/resolver/tests/fixtures/contract/es/contract.json b/packages/resolver/tests/fixtures/contract/es/contract.json index b712a94d..37457228 100644 --- a/packages/resolver/tests/fixtures/contract/es/contract.json +++ b/packages/resolver/tests/fixtures/contract/es/contract.json @@ -43,6 +43,6 @@ } }, "auth": {}, - "timestamp": 1583893626, + "timestamp": 1583902632, "sourceType": "module" } diff --git a/packages/resolver/tests/socket.test.js b/packages/resolver/tests/socket.test.js index 7d958a73..2624b13d 100644 --- a/packages/resolver/tests/socket.test.js +++ b/packages/resolver/tests/socket.test.js @@ -1,4 +1,12 @@ const test = require('ava') +const { + getPathByInterceptorType, + getSocketAuthInterceptor +} = require('../src/handle-auth-methods') +test(`Just stub it here for the time being`, t => { + t.true(typeof getPathByInterceptorType === 'function') + t.true(typeof getSocketAuthInterceptor === 'function') +}) test.todo(`It should able to find socket auth interceptors`) \ No newline at end of file -- Gitee