mirror of
https://github.com/langgenius/dify.git
synced 2026-09-01 13:47:18 +08:00
63 lines
1.9 KiB
TypeScript
63 lines
1.9 KiB
TypeScript
import type { ResourceUserAccessPoliciesResponse } from '@dify/contracts/api/console/workspaces/types.gen'
|
|
import { normalizeAppUserAccessPolicies, normalizeDatasetUserAccessPolicies } from '../normalizers'
|
|
|
|
const createResourceUserAccessPoliciesResponse = (
|
|
overrides: Partial<ResourceUserAccessPoliciesResponse> = {},
|
|
): ResourceUserAccessPoliciesResponse => ({
|
|
data: [],
|
|
...overrides,
|
|
})
|
|
|
|
describe('access-control normalizers', () => {
|
|
describe('Resource user access policies', () => {
|
|
it('should preserve pagination metadata', () => {
|
|
const response = createResourceUserAccessPoliciesResponse({
|
|
pagination: {
|
|
current_page: 2,
|
|
per_page: 20,
|
|
total_count: 45,
|
|
total_pages: 3,
|
|
},
|
|
})
|
|
const result = normalizeAppUserAccessPolicies(response)
|
|
|
|
expect(result.pagination).toEqual({
|
|
current_page: 2,
|
|
per_page: 20,
|
|
total_count: 45,
|
|
total_pages: 3,
|
|
})
|
|
})
|
|
|
|
it.each([
|
|
['app', normalizeAppUserAccessPolicies],
|
|
['dataset', normalizeDatasetUserAccessPolicies],
|
|
] as const)('should preserve the workspace owner role tag for %s access', (_, normalize) => {
|
|
const response = createResourceUserAccessPoliciesResponse({
|
|
data: [
|
|
{
|
|
account: {
|
|
account_id: 'owner-account',
|
|
account_name: 'Workspace Owner',
|
|
},
|
|
roles: [
|
|
{
|
|
id: 'owner-role',
|
|
type: 'workspace',
|
|
category: 'global_system_default',
|
|
name: 'Owner',
|
|
is_builtin: true,
|
|
permission_keys: [],
|
|
role_tag: 'owner',
|
|
},
|
|
],
|
|
access_policies: [],
|
|
},
|
|
],
|
|
})
|
|
|
|
expect(normalize(response).data[0]?.roles[0]?.role_tag).toBe('owner')
|
|
})
|
|
})
|
|
})
|