Export a function in server.js and test teardown

This commit is contained in:
Robert Schäfer 2018-12-21 00:37:58 +01:00
parent 6b216be05c
commit ec9c205bee
3 changed files with 46 additions and 38 deletions

View File

@ -1,5 +1,20 @@
import { request } from 'graphql-request' 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('login', () => {
describe('asking for a `token`', () => { describe('asking for a `token`', () => {
@ -15,14 +30,6 @@ describe('login', () => {
}) })
describe('with a non-existing email', () => { 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 = ` const mutation = `
mutation { mutation {
login(email:"user@example.com", password:"asdfasd"){ login(email:"user@example.com", password:"asdfasd"){

View File

@ -1,4 +1,4 @@
import server from './server' import createServer from './server'
const serverConfig = { const serverConfig = {
port: process.env.GRAPHQL_PORT || 4000 port: process.env.GRAPHQL_PORT || 4000
@ -8,6 +8,7 @@ const serverConfig = {
// } // }
} }
const server = createServer()
server.start(serverConfig, options => { server.start(serverConfig, options => {
/* eslint-disable-next-line no-console */ /* eslint-disable-next-line no-console */
console.log(`Server ready at ${process.env.GRAPHQL_URI} 🚀`) console.log(`Server ready at ${process.env.GRAPHQL_URI} 🚀`)

View File

@ -22,10 +22,6 @@ let schema = makeExecutableSchema({
const driver = neo4j().getDriver() const driver = neo4j().getDriver()
const MOCK = (process.env.MOCK === 'true')
/* eslint-disable-next-line no-console */
console.log('MOCK:', MOCK)
schema = augmentSchema(schema, { schema = augmentSchema(schema, {
query: { query: {
exclude: ['Statistics', 'LoggedInUser'] exclude: ['Statistics', 'LoggedInUser']
@ -36,31 +32,35 @@ schema = augmentSchema(schema, {
}) })
schema = applyScalars(applyDirectives(schema)) schema = applyScalars(applyDirectives(schema))
const server = new GraphQLServer({ const createServer = (options) => {
context: async (req) => { const defaults = {
const payload = { context: async (req) => {
driver, const payload = {
user: null, driver,
req: req.request user: null,
} req: req.request
try { }
const token = payload.req.headers.authorization.replace('Bearer ', '') try {
payload.user = await jwt.verify(token, process.env.JWT_SECRET) const token = payload.req.headers.authorization.replace('Bearer ', '')
} catch (err) { payload.user = await jwt.verify(token, process.env.JWT_SECRET)
// nothing } catch (err) {
} // nothing
}
return payload return payload
}, },
schema: schema, schema: schema,
tracing: true, tracing: true,
middlewares: middleware(schema), middlewares: middleware(schema),
mocks: MOCK ? mocks : false mocks: (process.env.MOCK === 'true') ? mocks : false
}) }
const server = new GraphQLServer(Object.assign({}, defaults, options))
passport.use('jwt', jwtStrategy()) passport.use('jwt', jwtStrategy())
server.express.use(passport.initialize()) 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