Ghost/test/e2e-frontend/advanced_url_config.test.js
Fabien 'egg' O'Carroll 10c214c148
Switched AMP to be 'off' by default in all new Ghost instances (#13907)
refs https://github.com/TryGhost/Team/issues/1189

Support for AMP is slowly in decline, and makes developing new cards trickier,
since AMP no longer has an effect of SEO we're going to disable it by default
as a first step toward moving away from it.

Co-authored-by: Thibaut Patel <thibaut@ghost.org>
2022-01-14 18:55:48 +02:00

130 lines
4.2 KiB
JavaScript

const should = require('should');
const sinon = require('sinon');
const supertest = require('supertest');
const testUtils = require('../utils');
const configUtils = require('../utils/configUtils');
const urlUtils = require('../utils/urlUtils');
const settings = require('../../core/shared/settings-cache');
let request;
/**
* This file contains extra e2e tests for complex URL configurations
* Examples of e2e tests that belong here:
* - subdirectories
* - https
* - (maybe) admin + frontend URL are different
* - etc
*/
describe('Advanced URL Configurations', function () {
describe('Subdirectory config', function () {
before(async function () {
configUtils.set('url', 'http://localhost/blog/');
urlUtils.stubUrlUtilsFromConfig();
await testUtils.startGhost({forceStart: true});
request = supertest.agent(configUtils.config.get('server:host') + ':' + configUtils.config.get('server:port'));
});
after(function () {
configUtils.restore();
urlUtils.restore();
});
afterEach(function () {
sinon.restore();
});
it('http://localhost should 404', async function () {
await request.get('/')
.expect(404);
});
it('/blog should 301 to /blog/', async function () {
await request.get('/blog')
.expect(301)
.expect('Location', '/blog/');
});
it('/blog/ should 200', async function () {
await request.get('/blog/')
.expect(200);
});
it('/blog/welcome/ should 200', async function () {
await request.get('/blog/welcome/')
.expect(200);
});
it('/welcome/ should 404', async function () {
await request.get('/welcome/')
.expect(404);
});
it('/blog/tag/getting-started/ should 200', async function () {
await request.get('/blog/tag/getting-started/')
.expect(200);
});
it('/tag/getting-started/ should 404', async function () {
await request.get('/tag/getting-started/')
.expect(404);
});
it('/blog/welcome/amp/ should 200 if amp is enabled', async function () {
sinon.stub(settings, 'get').callsFake(function (key, ...rest) {
if (key === 'amp') {
return true;
}
return settings.get.wrappedMethod.call(settings, key, ...rest);
});
await request.get('/blog/welcome/amp/')
.expect(200);
});
it('/blog/welcome/amp/ should 301', async function () {
await request.get('/blog/welcome/amp/')
.expect(301);
});
it('/welcome/amp/ should 404', async function () {
await request.get('/welcome/amp/')
.expect(404);
});
});
// we'll use X-Forwarded-Proto: https to simulate an 'https://' request behind a proxy
describe('HTTPS', function () {
before(async function () {
configUtils.set('url', 'http://localhost:2370/');
urlUtils.stubUrlUtilsFromConfig();
await testUtils.startGhost({forceStart: true});
request = supertest.agent(configUtils.config.get('server:host') + ':' + configUtils.config.get('server:port'));
});
after(function () {
configUtils.restore();
urlUtils.restore();
});
it('should set links to url over non-HTTPS', async function () {
await request.get('/')
.expect(200)
.expect(/<link rel="canonical" href="http:\/\/localhost:2370\/" \/\>/)
.expect(/<a href="http:\/\/localhost:2370">Ghost<\/a\>/);
});
it('should set links over HTTPS besides canonical', async function () {
await request.get('/')
.set('X-Forwarded-Proto', 'https')
.expect(200)
.expect(/<link rel="canonical" href="http:\/\/localhost:2370\/" \/\>/)
.expect(/<a href="https:\/\/localhost:2370">Ghost<\/a\>/);
});
});
});