Files
zhilu-admin/frontend/src/api/mocks/userHandlers.ts
Chuck1sn 082312db7c fix bugs
2025-05-15 21:48:09 +08:00

189 lines
5.7 KiB
TypeScript

import { faker } from "@faker-js/faker";
import { http, HttpResponse } from "msw";
import { ERole } from "../../router/constants";
export default [
http.get("/iam/user", () => {
const generatePermission = () => ({
id: faker.number.int({ min: 1, max: 100 }),
code: `perm_${faker.lorem.words({ min: 1, max: 1 })}`,
name: faker.lorem.words({ min: 1, max: 1 }),
});
const generateRole = () => ({
id: faker.number.int({ min: 1, max: 100 }),
code: faker.helpers.arrayElement([
ERole.ADMIN,
"editor",
"viewer",
"manager",
]),
name: faker.person.jobTitle(),
permissions: faker.helpers.multiple(generatePermission, {
count: { min: 1, max: 5 },
}),
});
const generateDepartment = () => ({
id: faker.number.int({ min: 1, max: 100 }),
code: `dept_${faker.lorem.word()}`,
name: faker.company.name(),
parentId: faker.number.int({ min: 1, max: 30 }),
enable: faker.datatype.boolean(),
});
const generateUser = () => ({
id: faker.number.int({ min: 1, max: 100 }),
username: faker.internet.email(),
password: faker.internet.password(),
enable: faker.datatype.boolean(),
roles: faker.helpers.multiple(generateRole, {
count: { min: 1, max: 3 },
}),
createTime: faker.date.recent({ days: 30 }).toISOString(),
permissions: faker.helpers.multiple(generatePermission, {
count: { min: 1, max: 5 },
}),
departments: faker.helpers.multiple(generateDepartment, {
count: { min: 0, max: 3 },
}),
});
return HttpResponse.json(generateUser());
}),
http.get("/iam/users", () => {
const generatePermission = () => ({
id: faker.number.int({ min: 1, max: 100 }),
code: `perm_${faker.lorem.word()}`,
name: faker.lorem.words({ min: 1, max: 3 }),
});
const generateRole = () => ({
id: faker.number.int({ min: 1, max: 100 }),
code: [ERole.ADMIN, "editor", "viewer", "manager"],
name: faker.person.jobTitle(),
permissions: faker.helpers.multiple(generatePermission, {
count: { min: 1, max: 5 },
}),
});
const generateDepartment = () => ({
id: faker.number.int({ min: 1, max: 100 }),
code: `dept_${faker.lorem.word()}`,
name: faker.company.name(),
parentId: faker.number.int({ min: 1, max: 30 }),
enable: faker.datatype.boolean(),
});
const generateUser = () => ({
id: faker.number.int({ min: 1, max: 100 }),
username: faker.internet.email(),
password: faker.internet.password(),
enable: faker.datatype.boolean(),
roles: faker.helpers.multiple(generateRole, {
count: { min: 1, max: 3 },
}),
createTime: faker.date.recent({ days: 30 }).toISOString(),
permissions: faker.helpers.multiple(generatePermission, {
count: { min: 1, max: 5 },
}),
departments: faker.helpers.multiple(generateDepartment, {
count: { min: 0, max: 3 },
}),
});
const mockData = {
data: faker.helpers.multiple(generateUser, { count: 10 }),
total: 30,
};
return HttpResponse.json(mockData);
}),
http.post("/api/users/:userId/departments", () => {
console.log('Captured a "POST /api/users/:userId/departments" request');
return HttpResponse.json({ success: true });
}),
http.delete("/api/users/:userId/departments", () => {
console.log('Captured a "DELETE /api/users/:userId/departments" request');
return HttpResponse.json({ success: true });
}),
http.post("/iam/user", () => {
console.log('Captured a "POST /posts" request');
return HttpResponse.json();
}),
http.delete("/iam/user", ({ params }) => {
console.log(`Captured a "DELETE /posts/${params.id}" request`);
return HttpResponse.json();
}),
http.post("/iam/me", () => {
console.log('Captured a "POST /posts" request');
return HttpResponse.json();
}),
http.post("/iam/role/bind", () => {
console.log('Captured a "POST /posts" request');
return HttpResponse.json();
}),
http.post("/iam/role/unbind", () => {
console.log('Captured a "POST /posts" request');
return HttpResponse.json();
}),
http.get("/iam/me", () => {
const generatePermission = () => ({
id: faker.number.int({ min: 1, max: 1000 }),
code: `perm_${faker.lorem.word()}`,
name: faker.lorem.words({ min: 1, max: 3 }),
});
const generateRole = () => ({
id: faker.number.int({ min: 1, max: 100 }),
code: [ERole.ADMIN, "editor", "viewer", "manager"],
name: faker.person.jobTitle(),
permissions: faker.helpers.multiple(generatePermission, {
count: { min: 1, max: 5 },
}),
});
const generateDepartment = () => ({
id: faker.number.int({ min: 1, max: 100 }),
code: `dept_${faker.lorem.word()}`,
name: faker.company.name(),
parentId: faker.number.int({ min: 1, max: 30 }),
enable: faker.datatype.boolean(),
});
const generateUser = () => ({
id: faker.number.int({ min: 1, max: 100 }),
username: faker.internet.email(),
password: faker.internet.password(),
enable: faker.datatype.boolean(),
roles: faker.helpers.multiple(generateRole, {
count: { min: 1, max: 3 },
}),
createTime: faker.date.recent({ days: 30 }).toISOString(),
permissions: faker.helpers.multiple(generatePermission, {
count: { min: 1, max: 5 },
}),
departments: faker.helpers.multiple(generateDepartment, {
count: { min: 0, max: 3 },
}),
});
const mockData = generateUser();
return HttpResponse.json(mockData);
}),
http.post("/department/unbind", () => {
console.log("Captured a 'POST /department/unbind' request");
return HttpResponse.json();
}),
http.post("/department/bind", () => {
console.log("Captured a 'POST /department/bind' request");
return HttpResponse.json();
}),
http.post("/iam/position/bind", () => {
console.log('Captured a "POST /posts" request');
return HttpResponse.json();
}),
http.post("/iam/position/unbind", () => {
console.log('Captured a "POST /posts" request');
return HttpResponse.json();
}),
];