Skip to content

Commit e6df9cc

Browse files
- PR feedback
1 parent d79ea22 commit e6df9cc

2 files changed

Lines changed: 22 additions & 24 deletions

File tree

  • x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/take_action

x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/take_action/index.test.tsx

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,22 @@
88
import { fireEvent, render, screen, waitFor } from '@testing-library/react';
99
import React from 'react';
1010

11-
import { SECURITY_FEATURE_ID } from '../../../../../common';
1211
import { useKibana } from '../../../../common/lib/kibana';
1312
import { TestProviders } from '../../../../common/mock';
1413
import { mockAttackDiscovery } from '../../mock/mock_attack_discovery';
1514
import { getMockAttackDiscoveryAlerts } from '../../mock/mock_attack_discovery_alerts';
15+
import { useAssistantAvailability } from '../../../../assistant/use_assistant_availability';
1616
import { TakeAction } from '.';
1717

1818
const mockMutateAsyncBulk = jest.fn().mockResolvedValue({});
1919
const mockMutateAsyncStatus = jest.fn().mockResolvedValue({});
2020

21+
jest.mock('../../../../assistant/use_assistant_availability', () => ({
22+
useAssistantAvailability: jest.fn(),
23+
}));
24+
25+
const mockUseAssistantAvailability = useAssistantAvailability as jest.Mock;
26+
2127
jest.mock('../../../../common/lib/kibana', () => ({
2228
useKibana: jest.fn(),
2329
}));
@@ -54,8 +60,6 @@ jest.mock('../../utils/is_attack_discovery_alert', () => ({
5460
/** helper function to open the popover */
5561
const openPopover = () => fireEvent.click(screen.getAllByTestId('takeActionPopoverButton')[0]);
5662

57-
const MOCK_SECURITY_FEATURE_ID = SECURITY_FEATURE_ID;
58-
5963
const defaultProps = {
6064
attackDiscoveries: [mockAttackDiscovery],
6165
setSelectedAttackDiscoveries: jest.fn(),
@@ -73,9 +77,6 @@ describe('TakeAction', () => {
7377
show: true,
7478
save: true,
7579
},
76-
[MOCK_SECURITY_FEATURE_ID]: {
77-
configurations: undefined, // AI for SOC is not configured
78-
},
7980
},
8081
},
8182
cases: {
@@ -104,6 +105,10 @@ describe('TakeAction', () => {
104105
},
105106
},
106107
});
108+
109+
mockUseAssistantAvailability.mockReturnValue({
110+
hasSearchAILakeConfigurations: false, // AI for SOC is not configured
111+
});
107112
});
108113

109114
it('renders the Add to new case action', () => {
@@ -316,15 +321,13 @@ describe('TakeAction', () => {
316321
setSelectedAttackDiscoveries = jest.fn();
317322
(useKibana as jest.Mock).mockReturnValue({
318323
services: {
319-
application: {
320-
capabilities: {
321-
assistant: { show: true, save: true },
322-
[MOCK_SECURITY_FEATURE_ID]: { configurations: {} },
323-
},
324-
},
325324
cases: { helpers: { canUseCases: () => ({ createComment: true, read: true }) } },
326325
},
327326
});
327+
328+
mockUseAssistantAvailability.mockReturnValue({
329+
hasSearchAILakeConfigurations: true, // AI for SOC IS configured
330+
});
328331
});
329332

330333
it('renders mark as closed action and takes action immediately (no modal)', async () => {
@@ -548,9 +551,6 @@ describe('TakeAction', () => {
548551
show: true,
549552
save: true,
550553
},
551-
[MOCK_SECURITY_FEATURE_ID]: {
552-
configurations: undefined,
553-
},
554554
},
555555
},
556556
},

x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/take_action/index.tsx

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,11 @@ import {
2121
} from '@elastic/eui';
2222
import React, { useCallback, useMemo, useState } from 'react';
2323

24+
import { useAssistantAvailability } from '../../../../assistant/use_assistant_availability';
2425
import { useAddToNewCase } from './use_add_to_case';
2526
import { useAddToExistingCase } from './use_add_to_existing_case';
2627
import { useViewInAiAssistant } from '../attack_discovery_panel/view_in_ai_assistant/use_view_in_ai_assistant';
27-
import { APP_ID, SECURITY_FEATURE_ID } from '../../../../../common';
28+
import { APP_ID } from '../../../../../common';
2829
import { useKibana } from '../../../../common/lib/kibana';
2930
import * as i18n from './translations';
3031
import { UpdateAlertsModal } from './update_alerts_modal';
@@ -55,12 +56,9 @@ const TakeActionComponent: React.FC<Props> = ({
5556
);
5657

5758
const {
58-
services: {
59-
application: { capabilities },
60-
cases,
61-
},
59+
services: { cases },
6260
} = useKibana();
63-
const aiForSoc = capabilities[SECURITY_FEATURE_ID].configurations;
61+
const { hasSearchAILakeConfigurations } = useAssistantAvailability();
6462

6563
const { attackDiscoveryAlertsEnabled } = useKibanaFeatureFlags();
6664

@@ -165,12 +163,12 @@ const TakeActionComponent: React.FC<Props> = ({
165163

166164
setPendingAction(workflowStatus);
167165

168-
if (aiForSoc) {
166+
if (hasSearchAILakeConfigurations) {
169167
// there's no modal for AI for SOC, so we call onConfirm directly
170168
onConfirm({ updateAlerts: false, workflowStatus });
171169
}
172170
},
173-
[aiForSoc, closePopover, onConfirm]
171+
[closePopover, hasSearchAILakeConfigurations, onConfirm]
174172
);
175173

176174
const onClickAddToNewCase = useCallback(async () => {
@@ -343,7 +341,7 @@ const TakeActionComponent: React.FC<Props> = ({
343341
<EuiContextMenuPanel size="s" items={allItems} />
344342
</EuiPopover>
345343

346-
{pendingAction != null && !aiForSoc && (
344+
{pendingAction != null && !hasSearchAILakeConfigurations && (
347345
<UpdateAlertsModal
348346
alertsCount={alertIds.length}
349347
attackDiscoveriesCount={attackDiscoveryIds.length}

0 commit comments

Comments
 (0)