From 2edc7ad95ccda6f0795b1fb62926c02875ff783e Mon Sep 17 00:00:00 2001 From: benoitguigal Date: Wed, 7 Oct 2015 16:38:21 +0200 Subject: [PATCH] create test to reproduce issue --- package.json | 1 + src/__tests__/http-test.js | 38 +++++++++++++++++++++++++++++++++++++- 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 181556a0..421aa39c 100644 --- a/package.json +++ b/package.json @@ -65,6 +65,7 @@ "eslint-plugin-babel": "2.1.1", "express": "4.13.3", "express3": "*", + "express-session": "^1.11.3", "flow-bin": "0.14.0", "graphql": "0.4.5", "isparta": "3.0.3", diff --git a/src/__tests__/http-test.js b/src/__tests__/http-test.js index 582f04ab..9b59340f 100644 --- a/src/__tests__/http-test.js +++ b/src/__tests__/http-test.js @@ -27,6 +27,7 @@ import { GraphQLString } from 'graphql'; import graphqlHTTP from '../'; +import session from 'express-session'; var QueryRootType = new GraphQLObjectType({ name: 'QueryRoot', @@ -43,7 +44,11 @@ var QueryRootType = new GraphQLObjectType({ thrower: { type: new GraphQLNonNull(GraphQLString), resolve: () => { throw new Error('Throws!'); } - } + }, + sessionId: { + type: new GraphQLNonNull(GraphQLString), + resolve: rootValue => rootValue.session.id + }, } }); @@ -1215,5 +1220,36 @@ describe('test harness', () => { ); }); }); + describe('Session available in Graphql', () => { + + it('sessionId should be the same across requests', async () => { + var app = express(); + + app.use(session({ secret: 'keyboard cat', cookie: { maxAge: 60000 }, saveUninitialized: true })); + + app.use(urlString(), graphqlHTTP(req => ({ + schema: TestSchema, + pretty: true, + rootValue: { session: req.session } + }))); + + var response = await request(app) + .get(urlString({ + query: '{sessionId}', + })); + + expect(response.status).to.equal(200); + var sessionIdFirstRequest = JSON.parse(response.text).data.sessionId; + expect(sessionIdFirstRequest).to.not.equal(null); + + response = await request(app) + .get(urlString({ + query: '{sessionId}', + })); + + var sessionIdSecondRequest = JSON.parse(response.text).data.sessionId; + expect(sessionIdSecondRequest).to.equal(sessionIdFirstRequest); + }); + }); }); });