import { DefaultBodyType, PathParams, rest } from 'msw'; import { Edition, LicenseInfo, LicenseType, } from '@/react/portainer/licenses/types'; import { EnvironmentGroup } from '@/react/portainer/environments/environment-groups/types'; import { Tag } from '@/portainer/tags/types'; import { StatusResponse } from '@/react/portainer/system/useSystemStatus'; import { createMockTeams } from '@/react-tools/test-mocks'; import { PublicSettingsResponse } from '@/react/portainer/settings/types'; import { UserId } from '@/portainer/users/types'; import { azureHandlers } from './setup-handlers/azure'; import { dockerHandlers } from './setup-handlers/docker'; import { userHandlers } from './setup-handlers/users'; const tags: Tag[] = [ { ID: 1, Name: 'tag1' }, { ID: 2, Name: 'tag2' }, ]; const licenseInfo: LicenseInfo = { nodes: 1000, type: LicenseType.Subscription, company: 'company', createdAt: 0, email: 'email@company.com', expiresAt: Number.MAX_SAFE_INTEGER, productEdition: Edition.EE, valid: true, enforcedAt: 0, enforced: false, }; export const handlers = [ rest.get('/api/teams', async (req, res, ctx) => res(ctx.json(createMockTeams(10))) ), rest.post<{ name: string }>('/api/teams', (req, res, ctx) => res(ctx.status(204)) ), rest.post<{ userId: UserId }>('/api/team_memberships', (req, res, ctx) => res(ctx.status(204)) ), ...azureHandlers, ...dockerHandlers, ...userHandlers, rest.get('/api/licenses/info', (req, res, ctx) => res(ctx.json(licenseInfo))), rest.get('/api/status/nodes', (req, res, ctx) => res(ctx.json({ nodes: 3 }))), rest.get('/api/backup/s3/status', (req, res, ctx) => res(ctx.json({ Failed: false })) ), rest.get('/api/endpoint_groups', (req, res, ctx) => res(ctx.json([]))), rest.get('/api/endpoint_groups/:groupId', (req, res, ctx) => { if (req.params.groupId instanceof Array) { throw new Error('should be string'); } const id = parseInt(req.params.groupId, 10); const group: Partial = { Id: id, Name: `group${id}`, }; return res(ctx.json(group)); }), rest.get('/api/tags', (req, res, ctx) => res(ctx.json(tags))), rest.post<{ name: string }>('/api/tags', (req, res, ctx) => { const tagName = req.body.name; const tag = { ID: tags.length + 1, Name: tagName }; tags.push(tag); return res(ctx.json(tag)); }), rest.get>( '/api/settings/public', (req, res, ctx) => res( ctx.json({ Edge: { AsyncMode: false, CheckinInterval: 60, CommandInterval: 60, PingInterval: 60, SnapshotInterval: 60, }, }) ) ), rest.get>( '/api/status', (req, res, ctx) => res(ctx.json({})) ), ];