Fix infinite redirect on www subdomain
Add first route tests
This commit is contained in:
@ -70,13 +70,19 @@ router.get('/', async ctx => {
|
|||||||
const subdomain = domain ? domain.subdomain : undefined;
|
const subdomain = domain ? domain.subdomain : undefined;
|
||||||
const accessToken = ctx.cookies.get('accessToken');
|
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');
|
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) {
|
if (accessToken) {
|
||||||
return renderapp(ctx);
|
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({
|
const team = await Team.find({
|
||||||
where: { subdomain },
|
where: { subdomain },
|
||||||
});
|
});
|
||||||
@ -98,6 +104,7 @@ router.get('/', async ctx => {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Otherwise, go ahead and render the homepage
|
||||||
return renderpage(
|
return renderpage(
|
||||||
ctx,
|
ctx,
|
||||||
<Home
|
<Home
|
||||||
|
27
server/routes.test.js
Normal file
27
server/routes.test.js
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
/* eslint-disable flowtype/require-valid-file-annotation */
|
||||||
|
import TestServer from 'fetch-test-server';
|
||||||
|
import app from '.';
|
||||||
|
import { flushdb } from './test/support';
|
||||||
|
|
||||||
|
const server = new TestServer(app.callback());
|
||||||
|
|
||||||
|
beforeEach(flushdb);
|
||||||
|
afterAll(server.close);
|
||||||
|
|
||||||
|
describe('#index', async () => {
|
||||||
|
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);
|
||||||
|
});
|
||||||
|
});
|
Reference in New Issue
Block a user