diff --git a/opencti-platform/opencti-front/src/private/components/settings/sub_types/workflow/GlobalWorkflowSettingsCard.test.tsx b/opencti-platform/opencti-front/src/private/components/settings/sub_types/workflow/GlobalWorkflowSettingsCard.test.tsx new file mode 100644 index 000000000000..d5ade4c7e199 --- /dev/null +++ b/opencti-platform/opencti-front/src/private/components/settings/sub_types/workflow/GlobalWorkflowSettingsCard.test.tsx @@ -0,0 +1,84 @@ +import React, { ReactNode } from 'react'; +import { describe, expect, it, vi } from 'vitest'; +import { render, screen } from '@testing-library/react'; +import GlobalWorkflowSettingsCard from './GlobalWorkflowSettingsCard'; +import { useSubTypeOutletContext } from '../SubTypeOutletContext'; +import useEnterpriseEdition from '../../../../../utils/hooks/useEnterpriseEdition'; + +vi.mock('@common/card/Card', () => ({ + default: ({ title, children }: { title: string; children: ReactNode }) => ( +
+

{title}

+ {children} +
+ ), +})); + +vi.mock('../../../../../components/i18n', () => ({ + useFormatter: () => ({ + t_i18n: (value: string) => value, + }), +})); + +vi.mock('../SubTypeOutletContext', () => ({ + useSubTypeOutletContext: vi.fn(), +})); + +vi.mock('../../../../../utils/hooks/useEnterpriseEdition', () => ({ + default: vi.fn(), +})); + +vi.mock('./GlobalWorkflowSettings', () => ({ + default: () =>
global-workflow-settings
, +})); + +vi.mock('./RequestAccessSettings', () => ({ + default: () =>
request-access-settings
, +})); + +const makeSubType = (availableSettings: string[]) => ({ + id: 'sub-type-id', + workflowEnabled: true, + settings: { + availableSettings, + requestAccessConfiguration: { id: 'request-access-configuration-id' }, + }, +}); + +describe('GlobalWorkflowSettingsCard', () => { + it('renders request access settings when request_access_workflow is available', () => { + vi.mocked(useEnterpriseEdition).mockReturnValue(true); + vi.mocked(useSubTypeOutletContext).mockReturnValue({ + subType: makeSubType(['workflow_configuration', 'request_access_workflow']), + } as never); + + render(); + + expect(screen.getByText('global-workflow-settings')).toBeInTheDocument(); + expect(screen.getByText('request-access-settings')).toBeInTheDocument(); + }); + + it('does not render request access settings when request_access_workflow is not available', () => { + vi.mocked(useEnterpriseEdition).mockReturnValue(true); + vi.mocked(useSubTypeOutletContext).mockReturnValue({ + subType: makeSubType(['workflow_configuration', 'request_access_configuration']), + } as never); + + render(); + + expect(screen.getByText('global-workflow-settings')).toBeInTheDocument(); + expect(screen.queryByText('request-access-settings')).not.toBeInTheDocument(); + }); + + it('does not render request access settings in CE even when request_access_workflow is available', () => { + vi.mocked(useEnterpriseEdition).mockReturnValue(false); + vi.mocked(useSubTypeOutletContext).mockReturnValue({ + subType: makeSubType(['workflow_configuration', 'request_access_workflow']), + } as never); + + render(); + + expect(screen.getByText('global-workflow-settings')).toBeInTheDocument(); + expect(screen.queryByText('request-access-settings')).not.toBeInTheDocument(); + }); +}); diff --git a/opencti-platform/opencti-front/src/private/components/settings/sub_types/workflow/GlobalWorkflowSettingsCard.tsx b/opencti-platform/opencti-front/src/private/components/settings/sub_types/workflow/GlobalWorkflowSettingsCard.tsx index d629ce91eed6..c67827f71d6e 100644 --- a/opencti-platform/opencti-front/src/private/components/settings/sub_types/workflow/GlobalWorkflowSettingsCard.tsx +++ b/opencti-platform/opencti-front/src/private/components/settings/sub_types/workflow/GlobalWorkflowSettingsCard.tsx @@ -4,14 +4,17 @@ import { useFormatter } from '../../../../../components/i18n'; import { useSubTypeOutletContext } from '../SubTypeOutletContext'; import GlobalWorkflowSettings from './GlobalWorkflowSettings'; import RequestAccessSettings from './RequestAccessSettings'; +import useEnterpriseEdition from '../../../../../utils/hooks/useEnterpriseEdition'; const GlobalWorkflowSettingsCard = () => { const { t_i18n } = useFormatter(); const { subType } = useSubTypeOutletContext(); + const isEnterpriseEdition = useEnterpriseEdition(); const requestAccessConfiguration = subType.settings.requestAccessConfiguration; - const hasRequestAccessConfig = subType.settings.availableSettings.includes('request_access_configuration') + const hasRequestAccessConfig = isEnterpriseEdition + && subType.settings.availableSettings.includes('request_access_workflow') && !!requestAccessConfiguration; return (