48 lines
1.3 KiB
TypeScript
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)
|
|
})
|
|
})
|