From a95632b9def170055a455dfa524bb9f74d524296 Mon Sep 17 00:00:00 2001 From: Tom Moor Date: Mon, 12 Nov 2018 22:45:51 -0800 Subject: [PATCH] Fix infinite redirect on www subdomain Add first route tests --- server/routes.js | 9 ++++++++- server/routes.test.js | 27 +++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 server/routes.test.js diff --git a/server/routes.js b/server/routes.js index cd979f12..bee64f05 100644 --- a/server/routes.js +++ b/server/routes.js @@ -70,13 +70,19 @@ router.get('/', async ctx => { const subdomain = domain ? domain.subdomain : undefined; const accessToken = ctx.cookies.get('accessToken'); + // Because we render both the signed in and signed out views depending + // on a cookie it's important that the browser does not render from cache. ctx.set('Cache-Control', 'no-cache'); + // If we have an accessToken we can just go ahead and render the app – if + // the accessToken turns out to be invalid the user will be redirected. if (accessToken) { return renderapp(ctx); } - if (subdomain) { + // If we're on a custom subdomain then we display a slightly different signed + // out view that includes the teams basic information. + if (subdomain && subdomain !== 'www') { const team = await Team.find({ where: { subdomain }, }); @@ -98,6 +104,7 @@ router.get('/', async ctx => { return; } + // Otherwise, go ahead and render the homepage return renderpage( ctx, { + it('should render homepage', async () => { + const res = await server.get('/'); + const html = await res.text(); + expect(res.status).toEqual(200); + expect(html.includes('Your team’s knowledge base')).toEqual(true); + }); + + it('should render app if there is an accessToken', async () => { + const res = await server.get('/', { + headers: { authorization: 'Bearer thisIsAnAccessToken' }, + }); + const html = await res.text(); + expect(res.status).toEqual(200); + expect(html.includes('id="root"')).toEqual(true); + }); +});