mirror of
https://github.com/TryGhost/Ghost.git
synced 2024-12-26 20:34:02 +03:00
Added unit test coverage for invalid redirects config
refs https://linear.app/tryghost/issue/CORE-86/fix-failing-site-instance-when-redirects-file-is-invalid
refs 260a47da83
- Refed commit was missing a unit test coverage.
- The approach here introduces a new pattern - using `supertest` in unit tests. I've found this to be the most expressive way to test an express app which receives certain middleware dynamically. Because there are very few moving parts the test is still extremely quick to run
This commit is contained in:
parent
260a47da83
commit
8f5186995d
@ -5,6 +5,7 @@ const express = require('express');
|
|||||||
|
|
||||||
const customRedirects = rewire('../../../../../core/server/web/shared/middlewares/custom-redirects');
|
const customRedirects = rewire('../../../../../core/server/web/shared/middlewares/custom-redirects');
|
||||||
const registerRoutes = customRedirects.__get__('_private.registerRoutes');
|
const registerRoutes = customRedirects.__get__('_private.registerRoutes');
|
||||||
|
const supertest = require('supertest');
|
||||||
|
|
||||||
describe('UNIT: custom redirects', function () {
|
describe('UNIT: custom redirects', function () {
|
||||||
let res;
|
let res;
|
||||||
@ -17,7 +18,8 @@ describe('UNIT: custom redirects', function () {
|
|||||||
};
|
};
|
||||||
res = {
|
res = {
|
||||||
redirect: sinon.spy(),
|
redirect: sinon.spy(),
|
||||||
set: sinon.spy()
|
set: sinon.spy(),
|
||||||
|
writeHead: sinon.spy()
|
||||||
};
|
};
|
||||||
|
|
||||||
next = sinon.spy();
|
next = sinon.spy();
|
||||||
@ -46,4 +48,22 @@ describe('UNIT: custom redirects', function () {
|
|||||||
'Cache-Control': `public, max-age=0`
|
'Cache-Control': `public, max-age=0`
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('the parent app functions even when the middleware gets an invalid redirects configuration', function (done) {
|
||||||
|
const redirectsConfig = [{
|
||||||
|
permanent: true,
|
||||||
|
from: '/invalid_regex/(/size/[a-zA-Z0-9_-.]*/[a-zA-Z0-9_-.]*/[0-9]*/[0-9]*/)([a-zA-Z0-9_-.]*)',
|
||||||
|
to: '/'
|
||||||
|
}];
|
||||||
|
const redirectsService = customRedirects.__get__('redirectsService');
|
||||||
|
sinon.stub(redirectsService, 'loadRedirectsFile').returns(redirectsConfig);
|
||||||
|
|
||||||
|
const app = express('test');
|
||||||
|
customRedirects.use(app);
|
||||||
|
app.get('/', (_req, _res) => _res.status(200).end());
|
||||||
|
|
||||||
|
supertest(app)
|
||||||
|
.get('/')
|
||||||
|
.expect(200, done);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user