diff --git a/packages/koa/package.json b/packages/koa/package.json index 307c6fa6bf00a88036a9e3f7f5d061b6c22cedfe..e45357d3ce9aef368ef77a1ca0d150b74225614c 100644 --- a/packages/koa/package.json +++ b/packages/koa/package.json @@ -56,7 +56,8 @@ "files": [ "tests/*.test.js", "!tests/helpers/*.*", - "!tests/fixtures/*.*" + "!tests/fixtures/*.*", + "!tests/node-client.test.js" ], "require": [ "esm" @@ -73,7 +74,7 @@ "esm": "^3.2.25", "fs-extra": "^8.1.0", "jsonql-constants": "^1.8.9", - "jsonql-contract": "^1.8.3", + "jsonql-contract": "^1.8.4", "jsonql-errors": "^1.1.5", "jsonql-jwt": "^1.3.3", "jsonql-node-client": "^1.2.0", @@ -90,7 +91,7 @@ "jsonql-ws-server": "^1.3.5", "jwt-decode": "^2.2.0", "koa-bodyparser": "^4.2.1", - "nb-split-tasks": "^0.5.3", + "nb-split-tasks": "^0.6.0", "nyc": "^14.1.1", "request": "^2.88.0", "server-io-core": "^1.2.0", diff --git a/packages/koa/src/contracts/get-contract.js b/packages/koa/src/contracts/get-contract.js index f77235d4552c6be7dde0a3066ce84dc635c6eedf..72afbecb2ddd03feb6989e2334968f9ec52a201d 100644 --- a/packages/koa/src/contracts/get-contract.js +++ b/packages/koa/src/contracts/get-contract.js @@ -1,6 +1,6 @@ // move all the code into it's folder // we are going to fork the process to lighten the load when it start -import { splitContractGenerator } from 'jsonql-contract/extra' +import { splitContractGenerator, contractGenerator } from 'jsonql-contract/extra' /** * getContract main - all the contract related methods move back to contract-cli @@ -10,4 +10,11 @@ import { splitContractGenerator } from 'jsonql-contract/extra' */ export function getContract(config, pub = false) { return splitContractGenerator(config, pub) + /* + @TODO not using this for now + if (config.enableSplitTask) { + return splitContractGenerator(config, pub) + } + return contractGenerator(config, pub) + */ } diff --git a/packages/koa/src/middlewares/init-middleware.js b/packages/koa/src/middlewares/init-middleware.js index 214c900cf7fe59785575331879efd13a6a391948..feda87a92659890b292ba5b5a5f48f90d0050a65 100644 --- a/packages/koa/src/middlewares/init-middleware.js +++ b/packages/koa/src/middlewares/init-middleware.js @@ -126,7 +126,7 @@ export default function initMiddleware(opts) { throw new JsonqlError(`[init-middleware] ${type} is unknown!`) } if (type !== CONTRACT_NAME) { - let name = params[RESOLVER_PARAM_NAME]; + let name = params[RESOLVER_PARAM_NAME] ctx.state.jsonql.resolverName = name; ctx.state.jsonql.payload = params; ctx.state.jsonql.resolverType = isAuthType(type, name, opts) @@ -136,7 +136,7 @@ export default function initMiddleware(opts) { message: 'Payload is not the expected object type', payload } - ); + ) } } await next() diff --git a/packages/koa/src/options/options.js b/packages/koa/src/options/options.js index 3c6a75d0182c935005924b7136895167bf2e8f81..11d5fc07be5ce2d5ed3e6412048f695fbe477596 100644 --- a/packages/koa/src/options/options.js +++ b/packages/koa/src/options/options.js @@ -107,8 +107,10 @@ const appProps = { // @1.4.0 switch on the file upload useFileUpload: createConfig(false, [BOOLEAN_TYPE]), fileUploadName: createConfig('file', [STRING_TYPE]), - fileUploadDist: createConfig(false, [STRING_TYPE]) -}; + fileUploadDist: createConfig(false, [STRING_TYPE]), + // same as the contract-cli + enableSplitTask: createConfig(false, [BOOLEAN_TYPE]) +} const jwtProcessKey = 'INIT_JWT_KEYS' // just for id the promise call export { constProps, diff --git a/packages/koa/tests/helpers/server.js b/packages/koa/tests/helpers/server.js index c5b00497ab6c34971e4ed2b21b089dbcd52c6263..f4f89f5d02dae551446b1f11278d9bfe4380779c 100644 --- a/packages/koa/tests/helpers/server.js +++ b/packages/koa/tests/helpers/server.js @@ -12,29 +12,21 @@ const contractDir = join(dir, 'tmp') const baseResolverDir = join(dir, 'resolvers') const msResolverDir = join(dir, 'sub') +const debug = require('debug')('jsonql-koa:helpers:server') + // add a dir to seperate the contract files -function createServer(config={}, dir = '') { +module.exports = function createServer(config={}, dir = '') { const opts = Object.assign({},{ + resolverDir: baseResolverDir, contractDir: join(contractDir, dir) }, config) + debug('createServer raw config', config) + const app = new Koa() app.use(bodyparser()) app.use(jsonqlKoa(opts)) return app; } - -function createBaseServer() { - -} - -function createMsServer() { - -} - -module.exports = { - createBaseServer, - createMsServer -} diff --git a/packages/koa/tests/jwt-auth.test.js b/packages/koa/tests/jwt-auth.test.js index e3eacc10a0148546eb1f2c8d94279bfea8b82ac6..82919bd1269b6ce21a8c7e131ae7ad8a413ad953 100644 --- a/packages/koa/tests/jwt-auth.test.js +++ b/packages/koa/tests/jwt-auth.test.js @@ -24,20 +24,22 @@ const name = 'Joel'; test.before( t => { t.context.app = createServer({ enableAuth: true, - useJwt: true, loginHandlerName: 'customLogin', - validatorHandlerName: false, //'customValidator', + validatorHandlerName: false, privateMethodDir: 'private', keysDir }, dir) const privateKey = fsx.readFileSync(join(keysDir, 'privateKey.pem')) - const options = { exp: 60*60 }; - + const options = { exp: 60*60 } t.context.encoder = loginResultToJwt(privateKey, options, RSA_ALGO) - t.context.token = t.context.encoder({ name }) +}) + +test.after(t => { + fsx.removeSync(join(__dirname, 'fixtures', 'tmp', 'jwt')) + // fsx.removeSync(join(__dirname, 'fixtures', 'tmp', '')) }) diff --git a/packages/koa/tests/jwt.test.js b/packages/koa/tests/jwt.test.js index 2a928ecb2b7318f423b203533cc67546fce42644..603837e503ab0a1b42cd8e233abec4dcaa5d7465 100644 --- a/packages/koa/tests/jwt.test.js +++ b/packages/koa/tests/jwt.test.js @@ -14,7 +14,7 @@ const debug = require('debug')('jsonql-koa:test:jwt'); const { type, headers, dirs } = require('./fixtures/options'); const createServer = require('./helpers/server') const dir = 'jwt'; -const keysDir = join(__dirname, 'fixtures', 'tmp', 'keys') +const keysDir = join(__dirname, 'fixtures', 'keys') const { createTokenValidator, loginResultToJwt } = require('jsonql-jwt') @@ -29,7 +29,7 @@ test.before( t => { }, dir) const publicKey = fsx.readFileSync(join(keysDir, 'publicKey.pem')) - + t.context.validator = createTokenValidator({ publicKey, useJwt: true