From ec9c205beea2e94ea214c2daaf908d250b537cc0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20Sch=C3=A4fer?= Date: Fri, 21 Dec 2018 00:37:58 +0100 Subject: [PATCH] Export a function in server.js and test teardown --- src/graphql-schema.test.js | 25 +++++++++++------ src/index.js | 3 +- src/server.js | 56 +++++++++++++++++++------------------- 3 files changed, 46 insertions(+), 38 deletions(-) diff --git a/src/graphql-schema.test.js b/src/graphql-schema.test.js index 409e1ab7a..f9be026f5 100644 --- a/src/graphql-schema.test.js +++ b/src/graphql-schema.test.js @@ -1,5 +1,20 @@ import { request } from 'graphql-request' -import server from './server' +import createServer from './server' + +let getHost +let app +let port + +beforeEach(async () => { + const server = createServer() + app = await server.start({ port: 0 }) + port = app.address().port + getHost = () => `http://127.0.0.1:${port}` +}) + +afterEach(async () => { + await app.close() +}) describe('login', () => { describe('asking for a `token`', () => { @@ -15,14 +30,6 @@ describe('login', () => { }) describe('with a non-existing email', () => { - let getHost - - beforeEach(async () => { - const app = await server.start({ port: 0 }) - const { port } = app.address() - getHost = () => `http://127.0.0.1:${port}` - }) - const mutation = ` mutation { login(email:"user@example.com", password:"asdfasd"){ diff --git a/src/index.js b/src/index.js index fee7b06dd..f594cb7f7 100644 --- a/src/index.js +++ b/src/index.js @@ -1,4 +1,4 @@ -import server from './server' +import createServer from './server' const serverConfig = { port: process.env.GRAPHQL_PORT || 4000 @@ -8,6 +8,7 @@ const serverConfig = { // } } +const server = createServer() server.start(serverConfig, options => { /* eslint-disable-next-line no-console */ console.log(`Server ready at ${process.env.GRAPHQL_URI} 🚀`) diff --git a/src/server.js b/src/server.js index bf3e07248..3b0e0a561 100644 --- a/src/server.js +++ b/src/server.js @@ -22,10 +22,6 @@ let schema = makeExecutableSchema({ const driver = neo4j().getDriver() -const MOCK = (process.env.MOCK === 'true') -/* eslint-disable-next-line no-console */ -console.log('MOCK:', MOCK) - schema = augmentSchema(schema, { query: { exclude: ['Statistics', 'LoggedInUser'] @@ -36,31 +32,35 @@ schema = augmentSchema(schema, { }) schema = applyScalars(applyDirectives(schema)) -const server = new GraphQLServer({ - context: async (req) => { - const payload = { - driver, - user: null, - req: req.request - } - try { - const token = payload.req.headers.authorization.replace('Bearer ', '') - payload.user = await jwt.verify(token, process.env.JWT_SECRET) - } catch (err) { - // nothing - } +const createServer = (options) => { + const defaults = { + context: async (req) => { + const payload = { + driver, + user: null, + req: req.request + } + try { + const token = payload.req.headers.authorization.replace('Bearer ', '') + payload.user = await jwt.verify(token, process.env.JWT_SECRET) + } catch (err) { + // nothing + } - return payload - }, - schema: schema, - tracing: true, - middlewares: middleware(schema), - mocks: MOCK ? mocks : false -}) + return payload + }, + schema: schema, + tracing: true, + middlewares: middleware(schema), + mocks: (process.env.MOCK === 'true') ? mocks : false + } + const server = new GraphQLServer(Object.assign({}, defaults, options)) -passport.use('jwt', jwtStrategy()) -server.express.use(passport.initialize()) + passport.use('jwt', jwtStrategy()) + server.express.use(passport.initialize()) -server.express.post('/graphql', passport.authenticate(['jwt'], { session: false })) + server.express.post('/graphql', passport.authenticate(['jwt'], { session: false })) + return server +} -export default server +export default createServer