dify/web/hooks/use-credential-permissions.spec.ts
Stephen Zhou a84c2d36a3
style: format with vp fmt (#38803)
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-07-12 15:57:46 +00:00

85 lines
3.1 KiB
TypeScript

import { renderHook } from '@testing-library/react'
import { useCredentialPermissions } from './use-credential-permissions'
let mockWorkspacePermissionKeys: string[] = []
vi.mock('@/context/account-state', async (importOriginal) => {
const { createAppContextStateAtomMock } = await import('@/__tests__/utils/mock-app-context-state')
return createAppContextStateAtomMock(importOriginal, () => ({
workspacePermissionKeys: mockWorkspacePermissionKeys,
}))
})
vi.mock('@/context/workspace-state', async (importOriginal) => {
const { createAppContextStateAtomMock } = await import('@/__tests__/utils/mock-app-context-state')
return createAppContextStateAtomMock(importOriginal, () => ({
workspacePermissionKeys: mockWorkspacePermissionKeys,
}))
})
vi.mock('@/context/permission-state', async (importOriginal) => {
const { createAppContextStateAtomMock } = await import('@/__tests__/utils/mock-app-context-state')
return createAppContextStateAtomMock(importOriginal, () => ({
workspacePermissionKeys: mockWorkspacePermissionKeys,
}))
})
vi.mock('@/context/version-state', async (importOriginal) => {
const { createAppContextStateAtomMock } = await import('@/__tests__/utils/mock-app-context-state')
return createAppContextStateAtomMock(importOriginal, () => ({
workspacePermissionKeys: mockWorkspacePermissionKeys,
}))
})
vi.mock('@/context/system-features-state', async (importOriginal) => {
const { createAppContextStateAtomMock } = await import('@/__tests__/utils/mock-app-context-state')
return createAppContextStateAtomMock(importOriginal, () => ({
workspacePermissionKeys: mockWorkspacePermissionKeys,
}))
})
vi.mock('jotai', async (importOriginal) => {
const { createAppContextStateJotaiMock } =
await import('@/__tests__/utils/mock-app-context-state')
return createAppContextStateJotaiMock(importOriginal)
})
describe('useCredentialPermissions', () => {
beforeEach(() => {
vi.clearAllMocks()
mockWorkspacePermissionKeys = []
})
it('should expose separate use, create, and manage credential capabilities', () => {
mockWorkspacePermissionKeys = ['credential.use', 'credential.create', 'credential.manage']
const { result } = renderHook(() => useCredentialPermissions())
expect(result.current).toEqual({
canUseCredential: true,
canCreateCredential: true,
canManageCredential: true,
})
})
it('should not grant credential use from create or manage permissions', () => {
mockWorkspacePermissionKeys = ['credential.create', 'credential.manage']
const { result } = renderHook(() => useCredentialPermissions())
expect(result.current).toEqual({
canUseCredential: false,
canCreateCredential: true,
canManageCredential: true,
})
})
it('should handle empty workspace permissions as no credential capabilities', () => {
mockWorkspacePermissionKeys = []
const { result } = renderHook(() => useCredentialPermissions())
expect(result.current).toEqual({
canUseCredential: false,
canCreateCredential: false,
canManageCredential: false,
})
})
})