2025-04-01 10:38:02 +09:00

89 lines
1.9 KiB
TypeScript

import { HttpResponse, http } from 'msw';
import { SetupServer, setupServer } from 'msw/node';
import { validCloudMigrationToken } from './tokens';
function createMockAPI(): SetupServer {
const server = setupServer(
http.get('/api/dashboards/uid/:uid', ({ request, params }) => {
if (params.uid === 'dashboard-404') {
return HttpResponse.json(
{
message: 'Dashboard not found',
},
{
status: 404,
}
);
}
return HttpResponse.json({
dashboard: {
title: 'My Dashboard',
},
meta: {
folderTitle: 'Dashboards',
},
});
}),
http.get('/api/library-elements/:uid', ({ request, params }) => {
if (params.uid === 'library-element-404') {
return HttpResponse.json(
{
message: 'Library element not found',
},
{
status: 404,
}
);
}
return HttpResponse.json({
result: {
name: 'My Library Element',
meta: {
folderName: 'FolderName',
},
},
});
}),
http.post('/api/cloudmigration/migration', async ({ request }) => {
const data = await request.json();
const authToken = typeof data === 'object' && data && data.authToken;
if (authToken === validCloudMigrationToken) {
return HttpResponse.json({
created: new Date().toISOString(),
id: 1,
stack: 'abc-123',
});
}
return HttpResponse.json(
{
message: 'Invalid token',
},
{ status: 500 }
);
})
);
server.listen();
return server;
}
export function registerMockAPI() {
let server: SetupServer;
beforeAll(() => {
server = createMockAPI();
});
afterAll(() => {
server.close();
});
}