mirror of
https://github.com/langgenius/dify.git
synced 2026-07-21 18:58:35 +08:00
85 lines
3.1 KiB
TypeScript
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,
|
|
})
|
|
})
|
|
})
|