0
Fork 0
mirror of https://github.com/TryGhost/Ghost.git synced 2025-02-10 23:36:14 -05:00
ghost/test/unit/server/services/api-version-compatibility/legacy-api-path-match.test.js
Hannah Wolfe b911c66bb6
Fixed legacyApiPathMatch not working with subdirs
- The recently refactored path matching code forgot to take into account that originalUrl can include the subdir
- Added more permutations to tests and ensured that all tests pass
- This means we don't have to worry about what sort of path we pass to the function, it'll figure out the version and api info
2022-05-10 13:57:06 +01:00

86 lines
3.3 KiB
JavaScript

const assert = require('assert');
const legacyApiPathMatch = require('../../../../../core/server/services/api-version-compatibility/legacy-api-path-match');
describe('Legacy Path Match', function () {
it('returns null, admin for all supported permutations', function () {
const permutations = [
'/subdir/ghost/api/admin/',
'/ghost/api/admin/',
'/admin/',
'/subdir/ghost/api/admin',
'/ghost/api/admin',
'/admin',
'/subdir/ghost/api/admin/session/',
'/ghost/api/admin/session/',
'/admin/session/',
'/subdir/ghost/api/admin/session',
'/ghost/api/admin/session',
'/admin/session',
'/subdir/ghost/api/admin/session/something/',
'/ghost/api/admin/session/something/',
'/admin/session/something/',
'/subdir/ghost/api/admin/session/something',
'/ghost/api/admin/session/something',
'/admin/session/something'
];
permutations.forEach((url) => {
assert.deepEqual(legacyApiPathMatch(url), {version: null, api: 'admin'}, url);
});
});
it('returns canary, admin for all supported permutations', function () {
const permutations = [
'/subdir/ghost/api/canary/admin/',
'/ghost/api/canary/admin/',
'/canary/admin/',
'/subdir/ghost/api/canary/admin',
'/ghost/api/canary/admin',
'/canary/admin',
'/subdir/ghost/api/canary/admin/session/',
'/ghost/api/canary/admin/session/',
'/canary/admin/session/',
'/subdir/ghost/api/canary/admin/session',
'/ghost/api/canary/admin/session',
'/canary/admin/session',
'/subdir/ghost/api/canary/admin/session/something/',
'/ghost/api/canary/admin/session/something/',
'/canary/admin/session/something/',
'/subdir/ghost/api/canary/admin/session/something',
'/ghost/api/canary/admin/session/something',
'/canary/admin/session/something'
];
permutations.forEach((url) => {
assert.deepEqual(legacyApiPathMatch(url), {version: 'canary', api: 'admin'}, url);
});
});
it('returns v4, admin for all permutations', function () {
const permutations = [
'/subdir/ghost/api/v4/admin/',
'/ghost/api/v4/admin/',
'/v4/admin/',
'/subdir/ghost/api/v4/admin',
'/ghost/api/v4/admin',
'/v4/admin',
'/subdir/ghost/api/v4/admin/session/',
'/ghost/api/v4/admin/session/',
'/v4/admin/session/',
'/subdir/ghost/api/v4/admin/session',
'/ghost/api/v4/admin/session',
'/v4/admin/session',
'/subdir/ghost/api/v4/admin/session/something/',
'/ghost/api/v4/admin/session/something/',
'/v4/admin/session/something/',
'/subdir/ghost/api/v4/admin/session/something',
'/ghost/api/v4/admin/session/something',
'/v4/admin/session/something'
];
permutations.forEach((url) => {
assert.deepEqual(legacyApiPathMatch(url), {version: 'v4', api: 'admin'}, url);
});
});
});