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 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,
|
||||
<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