flnxi-Wu/lib/__tests__/admin-permissions.test.ts
2026-06-01 11:40:02 +08:00

48 lines
1.3 KiB
TypeScript

jest.mock('@/lib/prisma', () => ({
prisma: {
user: {
findUnique: jest.fn(),
},
},
}))
const { prisma } = require('@/lib/prisma')
import { isCurrentAdmin, isCurrentSuperAdmin } from '../admin-permissions'
describe('admin permission helpers', () => {
beforeEach(() => {
jest.resetAllMocks()
})
it('禁用的普通管理员不再通过后台权限 helper', async () => {
prisma.user.findUnique.mockResolvedValue({
role: 'ADMIN',
isSuperAdmin: false,
isActive: false,
})
await expect(isCurrentAdmin({ user: { id: 'admin-1' } })).resolves.toBe(false)
})
it('禁用的最高权限账号不再通过最高权限 helper', async () => {
prisma.user.findUnique.mockResolvedValue({
isSuperAdmin: true,
isActive: false,
})
await expect(isCurrentSuperAdmin({ user: { id: 'super-1' } })).resolves.toBe(false)
})
it('可用的最高权限账号仍然通过管理员和最高权限判断', async () => {
prisma.user.findUnique.mockResolvedValue({
role: 'USER',
isSuperAdmin: true,
isActive: true,
})
await expect(isCurrentAdmin({ user: { id: 'super-1' } })).resolves.toBe(true)
await expect(isCurrentSuperAdmin({ user: { id: 'super-1' } })).resolves.toBe(true)
})
})