strapi/tests/api/core/strapi/plugin-routes-extension-bc.test.api.ts
Jamie Howard e5d4b412da
Fix plugin content-api route extensions (#24147)
* fix: content-api route extension for i18n and users-permissions

* refactor: simplify tests to catch breaking change

* test: cli for openapi plugin routes

* refactor: implement createcontentapiroutesfactory for content-api routes across multiple packages

* fix: more accurate message

* chore: formatting

* chore: cleanup backward compatibility tests

---------

Co-authored-by: Ziyi Yuan <daydreamnation@live.com>
2025-08-18 12:28:39 +01:00

47 lines
1.3 KiB
TypeScript

import path from 'path';
import fs from 'node:fs/promises';
import { createStrapiInstance } from 'api-tests/strapi';
const writeFileSafe = async (filePath, contents) => {
await fs.mkdir(path.dirname(filePath), { recursive: true });
await fs.writeFile(filePath, contents);
};
const pluginExtensionSource = `
module.exports = (plugin) => {
plugin.routes["content-api"].routes = plugin.routes["content-api"].routes.map((route) => {
return route;
});
return plugin;
};
`;
describe('Plugin route extension backward compatibility', () => {
let strapi;
beforeAll(async () => {
const appRoot = path.resolve(__dirname, '../../../../test-apps/api');
const upExtPath = path.join(appRoot, 'src/extensions/users-permissions/strapi-server.js');
const i18nExtPath = path.join(appRoot, 'src/extensions/i18n/strapi-server.js');
await Promise.all([
writeFileSafe(upExtPath, pluginExtensionSource),
writeFileSafe(i18nExtPath, pluginExtensionSource),
]);
strapi = await createStrapiInstance();
});
afterAll(async () => {
await strapi.destroy();
});
test('server starts when plugins mutate content-api routes', async () => {
expect(strapi.server).toBeDefined();
expect(strapi.server.httpServer.listening).toBe(true);
});
});