mirror of
https://github.com/elastic/kibana.git
synced 2025-06-27 18:51:07 -04:00
[Security Solution] move detection_engine files out of the detections folder (#221867)
## Summary This PR is only moving files and update file paths. No code changes are implemented whatsoever. The PR focuses on moving a bunch of folders and files that lived under the `detections` folder but were actually only used within the `detection_engine` folder. - if the files/folders were used within a single `detection_engine` folder (like for example `rule_actions_overflow` is only used within `rule_details_ui`) then things were moved closest to where it was used) - if the files/folders were used within multiple `detection_engine` folders, then things were moved into a `components` folder under the existing `common` folder at the root of `detection_engine` **_If there are any folders or files that you feel should live in a specific folder, let me know. I'm happy to move things around some more!_** ### Checklist - [x] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios
This commit is contained in:
parent
dbe3a5d769
commit
9b4f96731b
55 changed files with 120 additions and 122 deletions
2
.github/CODEOWNERS
vendored
2
.github/CODEOWNERS
vendored
|
@ -2514,8 +2514,6 @@ x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout @elastic/
|
||||||
/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui @elastic/security-detection-rule-management
|
/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui @elastic/security-detection-rule-management
|
||||||
/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring @elastic/security-detection-rule-management
|
/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_monitoring @elastic/security-detection-rule-management
|
||||||
/x-pack/solutions/security/plugins/security_solution/public/detections/components/callouts @elastic/security-detection-rule-management
|
/x-pack/solutions/security/plugins/security_solution/public/detections/components/callouts @elastic/security-detection-rule-management
|
||||||
/x-pack/solutions/security/plugins/security_solution/public/detections/components/rules @elastic/security-detection-rule-management
|
|
||||||
/x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/rule_preview @elastic/security-detection-engine
|
|
||||||
/x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/rules @elastic/security-detection-rule-management
|
/x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/rules @elastic/security-detection-rule-management
|
||||||
/x-pack/solutions/security/plugins/security_solution/public/detections/mitre @elastic/security-detection-rule-management
|
/x-pack/solutions/security/plugins/security_solution/public/detections/mitre @elastic/security-detection-rule-management
|
||||||
/x-pack/solutions/security/plugins/security_solution/public/detection_engine/common @elastic/security-detection-rule-management
|
/x-pack/solutions/security/plugins/security_solution/public/detection_engine/common @elastic/security-detection-rule-management
|
||||||
|
|
|
@ -231,6 +231,11 @@ module.exports = {
|
||||||
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]common[\/\\]components[\/\\]utility_bar[\/\\]utility_bar_action.tsx/,
|
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]common[\/\\]components[\/\\]utility_bar[\/\\]utility_bar_action.tsx/,
|
||||||
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]common[\/\\]mock[\/\\]storybook_providers.tsx/,
|
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]common[\/\\]mock[\/\\]storybook_providers.tsx/,
|
||||||
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]common[\/\\]mock[\/\\]test_providers.tsx/,
|
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]common[\/\\]mock[\/\\]test_providers.tsx/,
|
||||||
|
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detection_engine[\/\\]common[\/\\]components[\/\\]related_integrations[\/\\]integrations_description[\/\\]index.tsx/,
|
||||||
|
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detection_engine[\/\\]common[\/\\]components[\/\\]related_integrations[\/\\]integrations_description[\/\\]integration_status_badge.tsx/,
|
||||||
|
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detection_engine[\/\\]common[\/\\]components[\/\\]related_integrations[\/\\]integrations_description[\/\\]integration_version_mismatch_icon.tsx/,
|
||||||
|
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detection_engine[\/\\]common[\/\\]components[\/\\]related_integrations[\/\\]integrations_popover[\/\\]index.tsx/,
|
||||||
|
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detection_engine[\/\\]common[\/\\]components[\/\\]rule_switch[\/\\]index.tsx/,
|
||||||
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detection_engine[\/\\]rule_creation[\/\\]components[\/\\]eql_query_edit[\/\\]eql_overview_link.tsx/,
|
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detection_engine[\/\\]rule_creation[\/\\]components[\/\\]eql_query_edit[\/\\]eql_overview_link.tsx/,
|
||||||
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detection_engine[\/\\]rule_creation[\/\\]components[\/\\]ml_job_link[\/\\]ml_job_link.tsx/,
|
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detection_engine[\/\\]rule_creation[\/\\]components[\/\\]ml_job_link[\/\\]ml_job_link.tsx/,
|
||||||
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detection_engine[\/\\]rule_creation[\/\\]components[\/\\]step_about_rule_details[\/\\]index.test.tsx/,
|
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detection_engine[\/\\]rule_creation[\/\\]components[\/\\]step_about_rule_details[\/\\]index.test.tsx/,
|
||||||
|
@ -256,6 +261,7 @@ module.exports = {
|
||||||
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detection_engine[\/\\]rule_creation_ui[\/\\]pages[\/\\]rule_creation[\/\\]index.tsx/,
|
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detection_engine[\/\\]rule_creation_ui[\/\\]pages[\/\\]rule_creation[\/\\]index.tsx/,
|
||||||
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detection_engine[\/\\]rule_details_ui[\/\\]pages[\/\\]rule_details[\/\\]execution_log_table[\/\\]execution_log_table.tsx/,
|
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detection_engine[\/\\]rule_details_ui[\/\\]pages[\/\\]rule_details[\/\\]execution_log_table[\/\\]execution_log_table.tsx/,
|
||||||
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detection_engine[\/\\]rule_details_ui[\/\\]pages[\/\\]rule_details[\/\\]index.tsx/,
|
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detection_engine[\/\\]rule_details_ui[\/\\]pages[\/\\]rule_details[\/\\]index.tsx/,
|
||||||
|
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detection_engine[\/\\]rule_details_ui[\/\\]pages[\/\\]rule_details[\/\\]rule_actions_overflow[\/\\]index.tsx/,
|
||||||
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detection_engine[\/\\]rule_exceptions[\/\\]components[\/\\]add_exception_flyout[\/\\]index.tsx/,
|
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detection_engine[\/\\]rule_exceptions[\/\\]components[\/\\]add_exception_flyout[\/\\]index.tsx/,
|
||||||
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detection_engine[\/\\]rule_exceptions[\/\\]components[\/\\]all_exception_items_table[\/\\]all_items.test.tsx/,
|
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detection_engine[\/\\]rule_exceptions[\/\\]components[\/\\]all_exception_items_table[\/\\]all_items.test.tsx/,
|
||||||
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detection_engine[\/\\]rule_exceptions[\/\\]components[\/\\]all_exception_items_table[\/\\]all_items.tsx/,
|
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detection_engine[\/\\]rule_exceptions[\/\\]components[\/\\]all_exception_items_table[\/\\]all_items.tsx/,
|
||||||
|
@ -278,6 +284,7 @@ module.exports = {
|
||||||
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detection_engine[\/\\]rule_management[\/\\]components[\/\\]rule_details[\/\\]badge_list.tsx/,
|
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detection_engine[\/\\]rule_management[\/\\]components[\/\\]rule_details[\/\\]badge_list.tsx/,
|
||||||
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detection_engine[\/\\]rule_management[\/\\]components[\/\\]rule_details[\/\\]rule_about_section.tsx/,
|
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detection_engine[\/\\]rule_management[\/\\]components[\/\\]rule_details[\/\\]rule_about_section.tsx/,
|
||||||
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detection_engine[\/\\]rule_management[\/\\]components[\/\\]rule_details[\/\\]rule_details_flyout.tsx/,
|
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detection_engine[\/\\]rule_management[\/\\]components[\/\\]rule_details[\/\\]rule_details_flyout.tsx/,
|
||||||
|
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detection_engine[\/\\]rule_management_ui[\/\\]components[\/\\]pre_packaged_rules[\/\\]load_empty_prompt.tsx/,
|
||||||
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detection_engine[\/\\]rule_management_ui[\/\\]components[\/\\]rules_table[\/\\]add_prebuilt_rules_table[\/\\]add_prebuilt_rules_table_filters.tsx/,
|
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detection_engine[\/\\]rule_management_ui[\/\\]components[\/\\]rules_table[\/\\]add_prebuilt_rules_table[\/\\]add_prebuilt_rules_table_filters.tsx/,
|
||||||
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detection_engine[\/\\]rule_management_ui[\/\\]components[\/\\]rules_table[\/\\]rules_table_filters[\/\\]rule_search_field.tsx/,
|
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detection_engine[\/\\]rule_management_ui[\/\\]components[\/\\]rules_table[\/\\]rules_table_filters[\/\\]rule_search_field.tsx/,
|
||||||
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detection_engine[\/\\]rule_management_ui[\/\\]components[\/\\]rules_table[\/\\]rules_table_filters[\/\\]rules_table_filters.tsx/,
|
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detection_engine[\/\\]rule_management_ui[\/\\]components[\/\\]rules_table[\/\\]rules_table_filters[\/\\]rules_table_filters.tsx/,
|
||||||
|
@ -299,13 +306,6 @@ module.exports = {
|
||||||
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detections[\/\\]components[\/\\]alerts_table[\/\\]additional_filters_action[\/\\]index.tsx/,
|
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detections[\/\\]components[\/\\]alerts_table[\/\\]additional_filters_action[\/\\]index.tsx/,
|
||||||
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detections[\/\\]components[\/\\]alerts_table[\/\\]index.tsx/,
|
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detections[\/\\]components[\/\\]alerts_table[\/\\]index.tsx/,
|
||||||
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detections[\/\\]components[\/\\]osquery[\/\\]osquery_flyout.tsx/,
|
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detections[\/\\]components[\/\\]osquery[\/\\]osquery_flyout.tsx/,
|
||||||
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detections[\/\\]components[\/\\]rules[\/\\]pre_packaged_rules[\/\\]load_empty_prompt.tsx/,
|
|
||||||
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detections[\/\\]components[\/\\]rules[\/\\]related_integrations[\/\\]integrations_description[\/\\]index.tsx/,
|
|
||||||
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detections[\/\\]components[\/\\]rules[\/\\]related_integrations[\/\\]integrations_description[\/\\]integration_status_badge.tsx/,
|
|
||||||
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detections[\/\\]components[\/\\]rules[\/\\]related_integrations[\/\\]integrations_description[\/\\]integration_version_mismatch_icon.tsx/,
|
|
||||||
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detections[\/\\]components[\/\\]rules[\/\\]related_integrations[\/\\]integrations_popover[\/\\]index.tsx/,
|
|
||||||
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detections[\/\\]components[\/\\]rules[\/\\]rule_actions_overflow[\/\\]index.tsx/,
|
|
||||||
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detections[\/\\]components[\/\\]rules[\/\\]rule_switch[\/\\]index.tsx/,
|
|
||||||
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detections[\/\\]components[\/\\]severity[\/\\]index.tsx/,
|
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detections[\/\\]components[\/\\]severity[\/\\]index.tsx/,
|
||||||
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detections[\/\\]components[\/\\]status[\/\\]index.tsx/,
|
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detections[\/\\]components[\/\\]status[\/\\]index.tsx/,
|
||||||
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detections[\/\\]components[\/\\]value_lists_management_flyout[\/\\]reference_error_modal[\/\\]reference_error_modal.tsx/,
|
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detections[\/\\]components[\/\\]value_lists_management_flyout[\/\\]reference_error_modal[\/\\]reference_error_modal.tsx/,
|
||||||
|
|
|
@ -9,7 +9,7 @@ import React from 'react';
|
||||||
import styled from 'styled-components';
|
import styled from 'styled-components';
|
||||||
|
|
||||||
import type { RelatedIntegrationArray } from '../../../../../../common/api/detection_engine/model/rule_schema';
|
import type { RelatedIntegrationArray } from '../../../../../../common/api/detection_engine/model/rule_schema';
|
||||||
import type { ListItems } from '../../../../../detection_engine/rule_creation_ui/components/description_step/types';
|
import type { ListItems } from '../../../../rule_creation_ui/components/description_step/types';
|
||||||
import type { IntegrationDetails } from '../integration_details';
|
import type { IntegrationDetails } from '../integration_details';
|
||||||
import { useRelatedIntegrations } from '../use_related_integrations';
|
import { useRelatedIntegrations } from '../use_related_integrations';
|
||||||
|
|
|
@ -5,15 +5,15 @@
|
||||||
* 2.0.
|
* 2.0.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { cleanup, waitFor, renderHook } from '@testing-library/react';
|
import { cleanup, renderHook, waitFor } from '@testing-library/react';
|
||||||
|
|
||||||
import { useIntegrations } from './use_integrations';
|
import { useIntegrations } from './use_integrations';
|
||||||
|
|
||||||
import { fleetIntegrationsApi } from '../../../../detection_engine/fleet_integrations/api';
|
import { fleetIntegrationsApi } from '../../../fleet_integrations/api';
|
||||||
import { useToasts } from '../../../../common/lib/kibana';
|
import { useToasts } from '../../../../common/lib/kibana';
|
||||||
import { createReactQueryWrapper } from '../../../../common/mock';
|
import { createReactQueryWrapper } from '../../../../common/mock';
|
||||||
|
|
||||||
jest.mock('../../../../detection_engine/fleet_integrations/api');
|
jest.mock('../../../fleet_integrations/api');
|
||||||
jest.mock('../../../../common/lib/kibana');
|
jest.mock('../../../../common/lib/kibana');
|
||||||
|
|
||||||
describe('useIntegrations', () => {
|
describe('useIntegrations', () => {
|
|
@ -8,7 +8,7 @@
|
||||||
import { useQuery } from '@tanstack/react-query';
|
import { useQuery } from '@tanstack/react-query';
|
||||||
|
|
||||||
import type { Integration } from '../../../../../common/api/detection_engine/fleet_integrations';
|
import type { Integration } from '../../../../../common/api/detection_engine/fleet_integrations';
|
||||||
import { fleetIntegrationsApi } from '../../../../detection_engine/fleet_integrations';
|
import { fleetIntegrationsApi } from '../../../fleet_integrations';
|
||||||
|
|
||||||
const ONE_MINUTE = 60000;
|
const ONE_MINUTE = 60000;
|
||||||
|
|
|
@ -5,24 +5,22 @@
|
||||||
* 2.0.
|
* 2.0.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { mount, type ComponentType as EnzymeComponentType } from 'enzyme';
|
import { type ComponentType as EnzymeComponentType, mount } from 'enzyme';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { waitFor } from '@testing-library/react';
|
import { waitFor } from '@testing-library/react';
|
||||||
|
|
||||||
import { performBulkAction } from '../../../../detection_engine/rule_management/api/api';
|
import { performBulkAction } from '../../../rule_management/api/api';
|
||||||
import { RuleSwitchComponent } from '.';
|
import { RuleSwitchComponent } from '.';
|
||||||
import { getRulesSchemaMock } from '../../../../../common/api/detection_engine/model/rule_schema/mocks';
|
import { getRulesSchemaMock } from '../../../../../common/api/detection_engine/model/rule_schema/mocks';
|
||||||
import { useRulesTableContextOptional } from '../../../../detection_engine/rule_management_ui/components/rules_table/rules_table/rules_table_context';
|
import { useRulesTableContextOptional } from '../../../rule_management_ui/components/rules_table/rules_table/rules_table_context';
|
||||||
import { useRulesTableContextMock } from '../../../../detection_engine/rule_management_ui/components/rules_table/rules_table/__mocks__/rules_table_context';
|
import { useRulesTableContextMock } from '../../../rule_management_ui/components/rules_table/rules_table/__mocks__/rules_table_context';
|
||||||
import { TestProviders } from '../../../../common/mock';
|
import { TestProviders } from '../../../../common/mock';
|
||||||
import { useAppToasts } from '../../../../common/hooks/use_app_toasts';
|
import { useAppToasts } from '../../../../common/hooks/use_app_toasts';
|
||||||
import { useAppToastsMock } from '../../../../common/hooks/use_app_toasts.mock';
|
import { useAppToastsMock } from '../../../../common/hooks/use_app_toasts.mock';
|
||||||
|
|
||||||
jest.mock('../../../../common/hooks/use_app_toasts');
|
jest.mock('../../../../common/hooks/use_app_toasts');
|
||||||
jest.mock('../../../../detection_engine/rule_management/api/api');
|
jest.mock('../../../rule_management/api/api');
|
||||||
jest.mock(
|
jest.mock('../../../rule_management_ui/components/rules_table/rules_table/rules_table_context');
|
||||||
'../../../../detection_engine/rule_management_ui/components/rules_table/rules_table/rules_table_context'
|
|
||||||
);
|
|
||||||
jest.mock('../../../../common/lib/apm/use_start_transaction');
|
jest.mock('../../../../common/lib/apm/use_start_transaction');
|
||||||
|
|
||||||
const useAppToastsValueMock = useAppToastsMock.create();
|
const useAppToastsValueMock = useAppToastsMock.create();
|
|
@ -12,8 +12,8 @@ import styled from 'styled-components';
|
||||||
import { BulkActionTypeEnum } from '../../../../../common/api/detection_engine/rule_management';
|
import { BulkActionTypeEnum } from '../../../../../common/api/detection_engine/rule_management';
|
||||||
import { SINGLE_RULE_ACTIONS } from '../../../../common/lib/apm/user_actions';
|
import { SINGLE_RULE_ACTIONS } from '../../../../common/lib/apm/user_actions';
|
||||||
import { useStartTransaction } from '../../../../common/lib/apm/use_start_transaction';
|
import { useStartTransaction } from '../../../../common/lib/apm/use_start_transaction';
|
||||||
import { useExecuteBulkAction } from '../../../../detection_engine/rule_management/logic/bulk_actions/use_execute_bulk_action';
|
import { useExecuteBulkAction } from '../../../rule_management/logic/bulk_actions/use_execute_bulk_action';
|
||||||
import { useRulesTableContextOptional } from '../../../../detection_engine/rule_management_ui/components/rules_table/rules_table/rules_table_context';
|
import { useRulesTableContextOptional } from '../../../rule_management_ui/components/rules_table/rules_table/rules_table_context';
|
||||||
import { ruleSwitchAriaLabel } from './translations';
|
import { ruleSwitchAriaLabel } from './translations';
|
||||||
|
|
||||||
const StaticSwitch = styled(EuiSwitch)`
|
const StaticSwitch = styled(EuiSwitch)`
|
|
@ -12,17 +12,17 @@ import semver from 'semver';
|
||||||
import { css } from '@emotion/css';
|
import { css } from '@emotion/css';
|
||||||
import type { EuiComboBoxOptionOption } from '@elastic/eui';
|
import type { EuiComboBoxOptionOption } from '@elastic/eui';
|
||||||
import {
|
import {
|
||||||
EuiTextTruncate,
|
|
||||||
EuiButtonIcon,
|
EuiButtonIcon,
|
||||||
EuiComboBox,
|
EuiComboBox,
|
||||||
EuiFieldText,
|
EuiFieldText,
|
||||||
EuiFlexGroup,
|
EuiFlexGroup,
|
||||||
EuiFlexItem,
|
EuiFlexItem,
|
||||||
EuiFormRow,
|
EuiFormRow,
|
||||||
|
EuiTextTruncate,
|
||||||
} from '@elastic/eui';
|
} from '@elastic/eui';
|
||||||
import type { FieldHook } from '../../../../shared_imports';
|
import type { FieldHook } from '../../../../shared_imports';
|
||||||
import type { Integration, RelatedIntegration } from '../../../../../common/api/detection_engine';
|
import type { Integration, RelatedIntegration } from '../../../../../common/api/detection_engine';
|
||||||
import { useIntegrations } from '../../../../detections/components/rules/related_integrations/use_integrations';
|
import { useIntegrations } from '../../../common/components/related_integrations/use_integrations';
|
||||||
import { IntegrationStatusBadge } from './integration_status_badge';
|
import { IntegrationStatusBadge } from './integration_status_badge';
|
||||||
import * as i18n from './translations';
|
import * as i18n from './translations';
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { EuiDescriptionList, EuiFlexGroup, EuiFlexItem } from '@elastic/eui';
|
import { EuiDescriptionList, EuiFlexGroup, EuiFlexItem } from '@elastic/eui';
|
||||||
import { isEmpty, chunk, get, pick, isNumber } from 'lodash/fp';
|
import { chunk, get, isEmpty, isNumber, pick } from 'lodash/fp';
|
||||||
import React, { memo, useState } from 'react';
|
import React, { memo, useState } from 'react';
|
||||||
import styled from 'styled-components';
|
import styled from 'styled-components';
|
||||||
import type { ThreatMapping, Threats, Type } from '@kbn/securitysolution-io-ts-alerting-types';
|
import type { ThreatMapping, Threats, Type } from '@kbn/securitysolution-io-ts-alerting-types';
|
||||||
|
@ -17,7 +17,7 @@ import type {
|
||||||
RelatedIntegrationArray,
|
RelatedIntegrationArray,
|
||||||
RequiredFieldArray,
|
RequiredFieldArray,
|
||||||
} from '../../../../../common/api/detection_engine/model/rule_schema';
|
} from '../../../../../common/api/detection_engine/model/rule_schema';
|
||||||
import { buildRelatedIntegrationsDescription } from '../../../../detections/components/rules/related_integrations/integrations_description';
|
import { buildRelatedIntegrationsDescription } from '../../../common/components/related_integrations/integrations_description';
|
||||||
import { DEFAULT_TIMELINE_TITLE } from '../../../../timelines/components/timeline/translations';
|
import { DEFAULT_TIMELINE_TITLE } from '../../../../timelines/components/timeline/translations';
|
||||||
import type { EqlOptions } from '../../../../../common/search_strategy';
|
import type { EqlOptions } from '../../../../../common/search_strategy';
|
||||||
import { useKibana } from '../../../../common/lib/kibana';
|
import { useKibana } from '../../../../common/lib/kibana';
|
||||||
|
@ -26,26 +26,26 @@ import type { FieldValueTimeline } from '../../../rule_creation/components/pick_
|
||||||
import type { FormSchema } from '../../../../shared_imports';
|
import type { FormSchema } from '../../../../shared_imports';
|
||||||
import type { ListItems } from './types';
|
import type { ListItems } from './types';
|
||||||
import {
|
import {
|
||||||
|
buildAlertSuppressionDescription,
|
||||||
|
buildAlertSuppressionMissingFieldsDescription,
|
||||||
|
buildAlertSuppressionWindowDescription,
|
||||||
|
buildEqlOptionsDescription,
|
||||||
|
buildHighlightedFieldsOverrideDescription,
|
||||||
|
buildIntervalDescription,
|
||||||
|
buildNoteDescription,
|
||||||
buildQueryBarDescription,
|
buildQueryBarDescription,
|
||||||
|
buildRequiredFieldsDescription,
|
||||||
|
buildRiskScoreDescription,
|
||||||
|
buildRuleTypeDescription,
|
||||||
|
buildSetupDescription,
|
||||||
buildSeverityDescription,
|
buildSeverityDescription,
|
||||||
buildStringArrayDescription,
|
buildStringArrayDescription,
|
||||||
buildThreatDescription,
|
buildThreatDescription,
|
||||||
|
buildThreatMappingDescription,
|
||||||
|
buildThresholdDescription,
|
||||||
buildUnorderedListArrayDescription,
|
buildUnorderedListArrayDescription,
|
||||||
buildUrlsDescription,
|
buildUrlsDescription,
|
||||||
buildNoteDescription,
|
|
||||||
buildRiskScoreDescription,
|
|
||||||
buildRuleTypeDescription,
|
|
||||||
buildThresholdDescription,
|
|
||||||
buildThreatMappingDescription,
|
|
||||||
buildEqlOptionsDescription,
|
|
||||||
buildRequiredFieldsDescription,
|
|
||||||
buildAlertSuppressionDescription,
|
|
||||||
buildAlertSuppressionWindowDescription,
|
|
||||||
buildAlertSuppressionMissingFieldsDescription,
|
|
||||||
buildHighlightedFieldsOverrideDescription,
|
|
||||||
buildSetupDescription,
|
|
||||||
getQueryLabel,
|
getQueryLabel,
|
||||||
buildIntervalDescription,
|
|
||||||
} from './helpers';
|
} from './helpers';
|
||||||
import * as i18n from './translations';
|
import * as i18n from './translations';
|
||||||
import { buildMlJobsDescription } from './build_ml_jobs_description';
|
import { buildMlJobsDescription } from './build_ml_jobs_description';
|
||||||
|
@ -55,10 +55,10 @@ import { filterEmptyThreats } from '../../pages/rule_creation/helpers';
|
||||||
import { useLicense } from '../../../../common/hooks/use_license';
|
import { useLicense } from '../../../../common/hooks/use_license';
|
||||||
import type { LicenseService } from '../../../../../common/license';
|
import type { LicenseService } from '../../../../../common/license';
|
||||||
import {
|
import {
|
||||||
isThresholdRule,
|
|
||||||
isSuppressionRuleConfiguredWithMissingFields,
|
|
||||||
isSuppressionRuleConfiguredWithGroupBy,
|
|
||||||
isSuppressionRuleConfiguredWithDuration,
|
isSuppressionRuleConfiguredWithDuration,
|
||||||
|
isSuppressionRuleConfiguredWithGroupBy,
|
||||||
|
isSuppressionRuleConfiguredWithMissingFields,
|
||||||
|
isThresholdRule,
|
||||||
} from '../../../../../common/detection_engine/utils';
|
} from '../../../../../common/detection_engine/utils';
|
||||||
import {
|
import {
|
||||||
ALERT_SUPPRESSION_DURATION_FIELD_NAME,
|
ALERT_SUPPRESSION_DURATION_FIELD_NAME,
|
||||||
|
@ -80,6 +80,7 @@ import type { FieldValueQueryBar } from '../query_bar_field';
|
||||||
|
|
||||||
const DescriptionListContainer = styled(EuiDescriptionList)`
|
const DescriptionListContainer = styled(EuiDescriptionList)`
|
||||||
max-width: 600px;
|
max-width: 600px;
|
||||||
|
|
||||||
.euiDescriptionList__description {
|
.euiDescriptionList__description {
|
||||||
overflow-wrap: anywhere;
|
overflow-wrap: anywhere;
|
||||||
}
|
}
|
||||||
|
|
|
@ -78,7 +78,7 @@ import {
|
||||||
buildShowBuildingBlockFilter,
|
buildShowBuildingBlockFilter,
|
||||||
buildThreatMatchFilter,
|
buildThreatMatchFilter,
|
||||||
} from '../../../../detections/components/alerts_table/default_config';
|
} from '../../../../detections/components/alerts_table/default_config';
|
||||||
import { RuleSwitch } from '../../../../detections/components/rules/rule_switch';
|
import { RuleSwitch } from '../../../common/components/rule_switch';
|
||||||
import { StepPanel } from '../../../rule_creation/components/step_panel';
|
import { StepPanel } from '../../../rule_creation/components/step_panel';
|
||||||
import {
|
import {
|
||||||
getMachineLearningJobId,
|
getMachineLearningJobId,
|
||||||
|
@ -89,7 +89,7 @@ import { CreatedBy, UpdatedBy } from '../../../../detections/components/rules/ru
|
||||||
import { useGlobalTime } from '../../../../common/containers/use_global_time';
|
import { useGlobalTime } from '../../../../common/containers/use_global_time';
|
||||||
import { inputsSelectors } from '../../../../common/store/inputs';
|
import { inputsSelectors } from '../../../../common/store/inputs';
|
||||||
import { setAbsoluteRangeDatePicker } from '../../../../common/store/inputs/actions';
|
import { setAbsoluteRangeDatePicker } from '../../../../common/store/inputs/actions';
|
||||||
import { RuleActionsOverflow } from '../../../../detections/components/rules/rule_actions_overflow';
|
import { RuleActionsOverflow } from './rule_actions_overflow';
|
||||||
import { useMlCapabilities } from '../../../../common/components/ml/hooks/use_ml_capabilities';
|
import { useMlCapabilities } from '../../../../common/components/ml/hooks/use_ml_capabilities';
|
||||||
import { hasMlAdminPermissions } from '../../../../../common/machine_learning/has_ml_admin_permissions';
|
import { hasMlAdminPermissions } from '../../../../../common/machine_learning/has_ml_admin_permissions';
|
||||||
import { hasMlLicense } from '../../../../../common/machine_learning/has_ml_license';
|
import { hasMlLicense } from '../../../../../common/machine_learning/has_ml_license';
|
||||||
|
@ -117,7 +117,7 @@ import {
|
||||||
RuleStatus,
|
RuleStatus,
|
||||||
RuleStatusFailedCallOut,
|
RuleStatusFailedCallOut,
|
||||||
ruleStatusI18n,
|
ruleStatusI18n,
|
||||||
} from '../../../../detections/components/rules/rule_execution_status';
|
} from '../../../common/components/rule_execution_status';
|
||||||
import { ExecutionEventsTable } from '../../../rule_monitoring';
|
import { ExecutionEventsTable } from '../../../rule_monitoring';
|
||||||
import { ExecutionLogTable } from './execution_log_table/execution_log_table';
|
import { ExecutionLogTable } from './execution_log_table/execution_log_table';
|
||||||
import { RuleBackfillsInfo } from '../../../rule_gaps/components/rule_backfills_info';
|
import { RuleBackfillsInfo } from '../../../rule_gaps/components/rule_backfills_info';
|
||||||
|
|
|
@ -8,24 +8,22 @@
|
||||||
import { fireEvent, render, waitFor } from '@testing-library/react';
|
import { fireEvent, render, waitFor } from '@testing-library/react';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { RuleActionsOverflow } from '.';
|
import { RuleActionsOverflow } from '.';
|
||||||
import { ManualRuleRunEventTypes } from '../../../../common/lib/telemetry';
|
import { ManualRuleRunEventTypes } from '../../../../../common/lib/telemetry';
|
||||||
import { TestProviders } from '../../../../common/mock';
|
import { TestProviders } from '../../../../../common/mock';
|
||||||
import { useBulkExport } from '../../../../detection_engine/rule_management/logic/bulk_actions/use_bulk_export';
|
import { useBulkExport } from '../../../../rule_management/logic/bulk_actions/use_bulk_export';
|
||||||
import { useExecuteBulkAction } from '../../../../detection_engine/rule_management/logic/bulk_actions/use_execute_bulk_action';
|
import { useExecuteBulkAction } from '../../../../rule_management/logic/bulk_actions/use_execute_bulk_action';
|
||||||
import { mockRule } from '../../../../detection_engine/rule_management_ui/components/rules_table/__mocks__/mock';
|
import { mockRule } from '../../../../rule_management_ui/components/rules_table/__mocks__/mock';
|
||||||
|
|
||||||
const showBulkDuplicateExceptionsConfirmation = () => Promise.resolve(null);
|
const showBulkDuplicateExceptionsConfirmation = () => Promise.resolve(null);
|
||||||
const showManualRuleRunConfirmation = () => Promise.resolve(null);
|
const showManualRuleRunConfirmation = () => Promise.resolve(null);
|
||||||
|
|
||||||
jest.mock('../../../../common/hooks/use_experimental_features');
|
jest.mock('../../../../../common/hooks/use_experimental_features');
|
||||||
jest.mock(
|
jest.mock('../../../../rule_management/logic/bulk_actions/use_execute_bulk_action');
|
||||||
'../../../../detection_engine/rule_management/logic/bulk_actions/use_execute_bulk_action'
|
jest.mock('../../../../rule_management/logic/bulk_actions/use_bulk_export');
|
||||||
);
|
|
||||||
jest.mock('../../../../detection_engine/rule_management/logic/bulk_actions/use_bulk_export');
|
|
||||||
|
|
||||||
const mockReportEvent = jest.fn();
|
const mockReportEvent = jest.fn();
|
||||||
jest.mock('../../../../common/lib/kibana', () => {
|
jest.mock('../../../../../common/lib/kibana', () => {
|
||||||
const actual = jest.requireActual('../../../../common/lib/kibana');
|
const actual = jest.requireActual('../../../../../common/lib/kibana');
|
||||||
return {
|
return {
|
||||||
...actual,
|
...actual,
|
||||||
useKibana: jest.fn().mockImplementation(() => {
|
useKibana: jest.fn().mockImplementation(() => {
|
|
@ -14,27 +14,27 @@ import {
|
||||||
} from '@elastic/eui';
|
} from '@elastic/eui';
|
||||||
import React, { useCallback, useMemo } from 'react';
|
import React, { useCallback, useMemo } from 'react';
|
||||||
import styled from 'styled-components';
|
import styled from 'styled-components';
|
||||||
import { useScheduleRuleRun } from '../../../../detection_engine/rule_gaps/logic/use_schedule_rule_run';
|
import { useScheduleRuleRun } from '../../../../rule_gaps/logic/use_schedule_rule_run';
|
||||||
import type { TimeRange } from '../../../../detection_engine/rule_gaps/types';
|
import type { TimeRange } from '../../../../rule_gaps/types';
|
||||||
import { APP_UI_ID, SecurityPageName } from '../../../../../common/constants';
|
import { APP_UI_ID, SecurityPageName } from '../../../../../../common';
|
||||||
import { DuplicateOptions } from '../../../../../common/detection_engine/rule_management/constants';
|
import { DuplicateOptions } from '../../../../../../common/detection_engine/rule_management/constants';
|
||||||
import { BulkActionTypeEnum } from '../../../../../common/api/detection_engine/rule_management';
|
import { BulkActionTypeEnum } from '../../../../../../common/api/detection_engine/rule_management';
|
||||||
import { getRulesUrl } from '../../../../common/components/link_to/redirect_to_detection_engine';
|
import { getRulesUrl } from '../../../../../common/components/link_to/redirect_to_detection_engine';
|
||||||
import { useBoolState } from '../../../../common/hooks/use_bool_state';
|
import { useBoolState } from '../../../../../common/hooks/use_bool_state';
|
||||||
import { SINGLE_RULE_ACTIONS } from '../../../../common/lib/apm/user_actions';
|
import { SINGLE_RULE_ACTIONS } from '../../../../../common/lib/apm/user_actions';
|
||||||
import { useStartTransaction } from '../../../../common/lib/apm/use_start_transaction';
|
import { useStartTransaction } from '../../../../../common/lib/apm/use_start_transaction';
|
||||||
import { useKibana } from '../../../../common/lib/kibana';
|
import { useKibana } from '../../../../../common/lib/kibana';
|
||||||
import { canEditRuleWithActions } from '../../../../common/utils/privileges';
|
import { canEditRuleWithActions } from '../../../../../common/utils/privileges';
|
||||||
import type { Rule } from '../../../../detection_engine/rule_management/logic';
|
import type { Rule } from '../../../../rule_management/logic';
|
||||||
import { useBulkExport } from '../../../../detection_engine/rule_management/logic/bulk_actions/use_bulk_export';
|
import { useBulkExport } from '../../../../rule_management/logic/bulk_actions/use_bulk_export';
|
||||||
import {
|
import {
|
||||||
goToRuleEditPage,
|
goToRuleEditPage,
|
||||||
useExecuteBulkAction,
|
useExecuteBulkAction,
|
||||||
} from '../../../../detection_engine/rule_management/logic/bulk_actions/use_execute_bulk_action';
|
} from '../../../../rule_management/logic/bulk_actions/use_execute_bulk_action';
|
||||||
import { useDownloadExportedRules } from '../../../../detection_engine/rule_management/logic/bulk_actions/use_download_exported_rules';
|
import { useDownloadExportedRules } from '../../../../rule_management/logic/bulk_actions/use_download_exported_rules';
|
||||||
import * as i18nActions from '../../../../detection_engine/common/translations';
|
import * as i18nActions from '../../../../common/translations';
|
||||||
import * as i18n from './translations';
|
import * as i18n from './translations';
|
||||||
import { ManualRuleRunEventTypes } from '../../../../common/lib/telemetry';
|
import { ManualRuleRunEventTypes } from '../../../../../common/lib/telemetry';
|
||||||
|
|
||||||
const MyEuiButtonIcon = styled(EuiButtonIcon)`
|
const MyEuiButtonIcon = styled(EuiButtonIcon)`
|
||||||
&.euiButtonIcon {
|
&.euiButtonIcon {
|
|
@ -7,20 +7,20 @@
|
||||||
|
|
||||||
import React, { useMemo } from 'react';
|
import React, { useMemo } from 'react';
|
||||||
import { isEmpty } from 'lodash/fp';
|
import { isEmpty } from 'lodash/fp';
|
||||||
import {
|
|
||||||
EuiDescriptionList,
|
|
||||||
EuiText,
|
|
||||||
EuiFlexGrid,
|
|
||||||
EuiFlexItem,
|
|
||||||
EuiFlexGroup,
|
|
||||||
EuiLoadingSpinner,
|
|
||||||
EuiButtonIcon,
|
|
||||||
EuiPopover,
|
|
||||||
} from '@elastic/eui';
|
|
||||||
import type { EuiDescriptionListProps } from '@elastic/eui';
|
import type { EuiDescriptionListProps } from '@elastic/eui';
|
||||||
|
import {
|
||||||
|
EuiButtonIcon,
|
||||||
|
EuiDescriptionList,
|
||||||
|
EuiFlexGrid,
|
||||||
|
EuiFlexGroup,
|
||||||
|
EuiFlexItem,
|
||||||
|
EuiLoadingSpinner,
|
||||||
|
EuiPopover,
|
||||||
|
EuiText,
|
||||||
|
} from '@elastic/eui';
|
||||||
import type {
|
import type {
|
||||||
Type,
|
|
||||||
ThreatMapping as ThreatMappingType,
|
ThreatMapping as ThreatMappingType,
|
||||||
|
Type,
|
||||||
} from '@kbn/securitysolution-io-ts-alerting-types';
|
} from '@kbn/securitysolution-io-ts-alerting-types';
|
||||||
import type { Filter } from '@kbn/es-query';
|
import type { Filter } from '@kbn/es-query';
|
||||||
import type { SavedQuery } from '@kbn/data-plugin/public';
|
import type { SavedQuery } from '@kbn/data-plugin/public';
|
||||||
|
@ -38,7 +38,7 @@ import type {
|
||||||
import { AlertSuppressionMissingFieldsStrategyEnum } from '../../../../../common/api/detection_engine/model/rule_schema';
|
import { AlertSuppressionMissingFieldsStrategyEnum } from '../../../../../common/api/detection_engine/model/rule_schema';
|
||||||
import { assertUnreachable } from '../../../../../common/utility_types';
|
import { assertUnreachable } from '../../../../../common/utility_types';
|
||||||
import * as descriptionStepI18n from '../../../rule_creation_ui/components/description_step/translations';
|
import * as descriptionStepI18n from '../../../rule_creation_ui/components/description_step/translations';
|
||||||
import { RelatedIntegrationsDescription } from '../../../../detections/components/rules/related_integrations/integrations_description';
|
import { RelatedIntegrationsDescription } from '../../../common/components/related_integrations/integrations_description';
|
||||||
import { AlertSuppressionLabel } from '../../../rule_creation_ui/components/description_step/alert_suppression_label';
|
import { AlertSuppressionLabel } from '../../../rule_creation_ui/components/description_step/alert_suppression_label';
|
||||||
import { useGetSavedQuery } from '../../../common/use_get_saved_query';
|
import { useGetSavedQuery } from '../../../common/use_get_saved_query';
|
||||||
import * as threatMatchI18n from '../../../../common/components/threat_match/translations';
|
import * as threatMatchI18n from '../../../../common/components/threat_match/translations';
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { EuiDescriptionList } from '@elastic/eui';
|
import { EuiDescriptionList } from '@elastic/eui';
|
||||||
import * as ruleDetailsI18n from '../../../../translations';
|
import * as ruleDetailsI18n from '../../../../translations';
|
||||||
import { RelatedIntegrationsDescription } from '../../../../../../../../detections/components/rules/related_integrations/integrations_description';
|
import { RelatedIntegrationsDescription } from '../../../../../../../common/components/related_integrations/integrations_description';
|
||||||
import type { RelatedIntegrationArray } from '../../../../../../../../../common/api/detection_engine';
|
import type { RelatedIntegrationArray } from '../../../../../../../../../common/api/detection_engine';
|
||||||
import { EmptyFieldValuePlaceholder } from '../../empty_field_value_placeholder';
|
import { EmptyFieldValuePlaceholder } from '../../empty_field_value_placeholder';
|
||||||
|
|
||||||
|
|
|
@ -7,12 +7,12 @@
|
||||||
|
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import {
|
import {
|
||||||
|
EuiButtonIcon,
|
||||||
EuiPopover,
|
EuiPopover,
|
||||||
EuiText,
|
EuiPopoverFooter,
|
||||||
EuiPopoverTitle,
|
EuiPopoverTitle,
|
||||||
EuiSpacer,
|
EuiSpacer,
|
||||||
EuiPopoverFooter,
|
EuiText,
|
||||||
EuiButtonIcon,
|
|
||||||
} from '@elastic/eui';
|
} from '@elastic/eui';
|
||||||
|
|
||||||
import { RuleExecutionStatusEnum } from '../../../../../common/api/detection_engine/rule_monitoring';
|
import { RuleExecutionStatusEnum } from '../../../../../common/api/detection_engine/rule_monitoring';
|
||||||
|
@ -24,7 +24,7 @@ import { getRuleDetailsTabUrl } from '../../../../common/components/link_to/redi
|
||||||
import { SecurityPageName } from '../../../../../common/constants';
|
import { SecurityPageName } from '../../../../../common/constants';
|
||||||
import { SecuritySolutionLinkButton } from '../../../../common/components/links';
|
import { SecuritySolutionLinkButton } from '../../../../common/components/links';
|
||||||
import { isMlRule } from '../../../../../common/detection_engine/utils';
|
import { isMlRule } from '../../../../../common/detection_engine/utils';
|
||||||
import { getCapitalizedStatusText } from '../../../../detections/components/rules/rule_execution_status/utils';
|
import { getCapitalizedStatusText } from '../../../common/components/rule_execution_status/utils';
|
||||||
import type { Rule } from '../../../rule_management/logic';
|
import type { Rule } from '../../../rule_management/logic';
|
||||||
import { isJobStarted } from '../../../../../common/machine_learning/helpers';
|
import { isJobStarted } from '../../../../../common/machine_learning/helpers';
|
||||||
import { RuleDetailTabs } from '../../../rule_details_ui/pages/rule_details/use_rule_details_tabs';
|
import { RuleDetailTabs } from '../../../rule_details_ui/pages/rule_details/use_rule_details_tabs';
|
||||||
|
|
|
@ -8,11 +8,11 @@
|
||||||
import { EuiBadge, EuiButton, EuiButtonEmpty } from '@elastic/eui';
|
import { EuiBadge, EuiButton, EuiButtonEmpty } from '@elastic/eui';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { css } from '@emotion/react';
|
import { css } from '@emotion/react';
|
||||||
import { INSTALL_PREBUILT_RULES_ANCHOR } from '../../../../detection_engine/rule_management_ui/components/rules_table/rules_table/guided_onboarding/rules_management_tour';
|
import { INSTALL_PREBUILT_RULES_ANCHOR } from '../rules_table/rules_table/guided_onboarding/rules_management_tour';
|
||||||
import * as i18n from './translations';
|
import * as i18n from './translations';
|
||||||
import { useGetSecuritySolutionLinkProps } from '../../../../common/components/links';
|
import { useGetSecuritySolutionLinkProps } from '../../../../common/components/links';
|
||||||
import { SecurityPageName } from '../../../../../common';
|
import { SecurityPageName } from '../../../../../common';
|
||||||
import { usePrebuiltRulesStatus } from '../../../../detection_engine/rule_management/logic/prebuilt_rules/use_prebuilt_rules_status';
|
import { usePrebuiltRulesStatus } from '../../../rule_management/logic/prebuilt_rules/use_prebuilt_rules_status';
|
||||||
|
|
||||||
interface AddElasticRulesButtonProps {
|
interface AddElasticRulesButtonProps {
|
||||||
'data-test-subj'?: string;
|
'data-test-subj'?: string;
|
|
@ -8,7 +8,7 @@
|
||||||
import { EuiEmptyPrompt, EuiFlexGroup, EuiFlexItem } from '@elastic/eui';
|
import { EuiEmptyPrompt, EuiFlexGroup, EuiFlexItem } from '@elastic/eui';
|
||||||
import React, { memo } from 'react';
|
import React, { memo } from 'react';
|
||||||
import styled from 'styled-components';
|
import styled from 'styled-components';
|
||||||
import { useUserData } from '../../user_info';
|
import { useUserData } from '../../../../detections/components/user_info';
|
||||||
import { AddElasticRulesButton } from './add_elastic_rules_button';
|
import { AddElasticRulesButton } from './add_elastic_rules_button';
|
||||||
import * as i18n from './translations';
|
import * as i18n from './translations';
|
||||||
|
|
|
@ -6,13 +6,13 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import type { EuiBasicTableColumn } from '@elastic/eui';
|
import type { EuiBasicTableColumn } from '@elastic/eui';
|
||||||
import { EuiBadge, EuiText, EuiLink } from '@elastic/eui';
|
import { EuiBadge, EuiLink, EuiText } from '@elastic/eui';
|
||||||
import React, { useMemo } from 'react';
|
import React, { useMemo } from 'react';
|
||||||
import { RulesTableEmptyColumnName } from '../rules_table_empty_column_name';
|
import { RulesTableEmptyColumnName } from '../rules_table_empty_column_name';
|
||||||
import { SHOW_RELATED_INTEGRATIONS_SETTING } from '../../../../../../common/constants';
|
import { SHOW_RELATED_INTEGRATIONS_SETTING } from '../../../../../../common/constants';
|
||||||
import { PopoverItems } from '../../../../../common/components/popover_items';
|
import { PopoverItems } from '../../../../../common/components/popover_items';
|
||||||
import { useUiSetting$ } from '../../../../../common/lib/kibana';
|
import { useUiSetting$ } from '../../../../../common/lib/kibana';
|
||||||
import { IntegrationsPopover } from '../../../../../detections/components/rules/related_integrations/integrations_popover';
|
import { IntegrationsPopover } from '../../../../common/components/related_integrations/integrations_popover';
|
||||||
import { SeverityBadge } from '../../../../../common/components/severity_badge';
|
import { SeverityBadge } from '../../../../../common/components/severity_badge';
|
||||||
import * as i18n from '../../../../common/translations';
|
import * as i18n from '../../../../common/translations';
|
||||||
import type { Rule } from '../../../../rule_management/logic';
|
import type { Rule } from '../../../../rule_management/logic';
|
||||||
|
@ -21,8 +21,8 @@ import { hasUserCRUDPermission } from '../../../../../common/utils/privileges';
|
||||||
import type { AddPrebuiltRulesTableActions } from './add_prebuilt_rules_table_context';
|
import type { AddPrebuiltRulesTableActions } from './add_prebuilt_rules_table_context';
|
||||||
import { useAddPrebuiltRulesTableContext } from './add_prebuilt_rules_table_context';
|
import { useAddPrebuiltRulesTableContext } from './add_prebuilt_rules_table_context';
|
||||||
import type {
|
import type {
|
||||||
RuleSignatureId,
|
|
||||||
RuleResponse,
|
RuleResponse,
|
||||||
|
RuleSignatureId,
|
||||||
} from '../../../../../../common/api/detection_engine/model/rule_schema';
|
} from '../../../../../../common/api/detection_engine/model/rule_schema';
|
||||||
import { getNormalizedSeverity } from '../helpers';
|
import { getNormalizedSeverity } from '../helpers';
|
||||||
import { PrebuiltRulesInstallButton } from './add_prebuilt_rules_install_button';
|
import { PrebuiltRulesInstallButton } from './add_prebuilt_rules_install_button';
|
||||||
|
|
|
@ -7,12 +7,12 @@
|
||||||
|
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import {
|
import {
|
||||||
|
EuiButtonIcon,
|
||||||
EuiPopover,
|
EuiPopover,
|
||||||
EuiText,
|
EuiPopoverFooter,
|
||||||
EuiPopoverTitle,
|
EuiPopoverTitle,
|
||||||
EuiSpacer,
|
EuiSpacer,
|
||||||
EuiPopoverFooter,
|
EuiText,
|
||||||
EuiButtonIcon,
|
|
||||||
} from '@elastic/eui';
|
} from '@elastic/eui';
|
||||||
|
|
||||||
import { RuleExecutionStatusEnum } from '../../../../../common/api/detection_engine/rule_monitoring';
|
import { RuleExecutionStatusEnum } from '../../../../../common/api/detection_engine/rule_monitoring';
|
||||||
|
@ -24,7 +24,7 @@ import { getRuleDetailsTabUrl } from '../../../../common/components/link_to/redi
|
||||||
import { SecurityPageName } from '../../../../../common/constants';
|
import { SecurityPageName } from '../../../../../common/constants';
|
||||||
import { SecuritySolutionLinkButton } from '../../../../common/components/links';
|
import { SecuritySolutionLinkButton } from '../../../../common/components/links';
|
||||||
import { isMlRule } from '../../../../../common/detection_engine/utils';
|
import { isMlRule } from '../../../../../common/detection_engine/utils';
|
||||||
import { getCapitalizedStatusText } from '../../../../detections/components/rules/rule_execution_status/utils';
|
import { getCapitalizedStatusText } from '../../../common/components/rule_execution_status/utils';
|
||||||
import type { Rule } from '../../../rule_management/logic';
|
import type { Rule } from '../../../rule_management/logic';
|
||||||
import { isJobStarted } from '../../../../../common/machine_learning/helpers';
|
import { isJobStarted } from '../../../../../common/machine_learning/helpers';
|
||||||
import { RuleDetailTabs } from '../../../rule_details_ui/pages/rule_details/use_rule_details_tabs';
|
import { RuleDetailTabs } from '../../../rule_details_ui/pages/rule_details/use_rule_details_tabs';
|
||||||
|
|
|
@ -12,8 +12,8 @@ import { EuiFilterButton, EuiPopover, EuiSelectable } from '@elastic/eui';
|
||||||
import * as i18n from '../../../../common/translations';
|
import * as i18n from '../../../../common/translations';
|
||||||
import type { RuleExecutionStatus } from '../../../../../../common/api/detection_engine';
|
import type { RuleExecutionStatus } from '../../../../../../common/api/detection_engine';
|
||||||
import { RuleExecutionStatusEnum } from '../../../../../../common/api/detection_engine';
|
import { RuleExecutionStatusEnum } from '../../../../../../common/api/detection_engine';
|
||||||
import { getCapitalizedStatusText } from '../../../../../detections/components/rules/rule_execution_status/utils';
|
import { getCapitalizedStatusText } from '../../../../common/components/rule_execution_status/utils';
|
||||||
import { RuleStatusBadge } from '../../../../../detections/components/rules/rule_execution_status/rule_status_badge';
|
import { RuleStatusBadge } from '../../../../common/components/rule_execution_status';
|
||||||
|
|
||||||
interface OptionData {
|
interface OptionData {
|
||||||
status: RuleExecutionStatus;
|
status: RuleExecutionStatus;
|
||||||
|
|
|
@ -16,7 +16,7 @@ import { FormattedMessage } from '@kbn/i18n-react';
|
||||||
import React, { useCallback, useMemo, useRef } from 'react';
|
import React, { useCallback, useMemo, useRef } from 'react';
|
||||||
import { Loader } from '../../../../common/components/loader';
|
import { Loader } from '../../../../common/components/loader';
|
||||||
import { useBoolState } from '../../../../common/hooks/use_bool_state';
|
import { useBoolState } from '../../../../common/hooks/use_bool_state';
|
||||||
import { PrePackagedRulesPrompt } from '../../../../detections/components/rules/pre_packaged_rules/load_empty_prompt';
|
import { PrePackagedRulesPrompt } from '../pre_packaged_rules/load_empty_prompt';
|
||||||
import type { Rule } from '../../../rule_management/logic';
|
import type { Rule } from '../../../rule_management/logic';
|
||||||
import * as i18n from '../../../common/translations';
|
import * as i18n from '../../../common/translations';
|
||||||
import type { EuiBasicTableOnChange } from '../../../common/types';
|
import type { EuiBasicTableOnChange } from '../../../common/types';
|
||||||
|
|
|
@ -23,7 +23,7 @@ import type { RuleSignatureId } from '../../../../../../common/api/detection_eng
|
||||||
import { PopoverItems } from '../../../../../common/components/popover_items';
|
import { PopoverItems } from '../../../../../common/components/popover_items';
|
||||||
import { useUiSetting$ } from '../../../../../common/lib/kibana';
|
import { useUiSetting$ } from '../../../../../common/lib/kibana';
|
||||||
import { hasUserCRUDPermission } from '../../../../../common/utils/privileges';
|
import { hasUserCRUDPermission } from '../../../../../common/utils/privileges';
|
||||||
import { IntegrationsPopover } from '../../../../../detections/components/rules/related_integrations/integrations_popover';
|
import { IntegrationsPopover } from '../../../../common/components/related_integrations/integrations_popover';
|
||||||
import { SeverityBadge } from '../../../../../common/components/severity_badge';
|
import { SeverityBadge } from '../../../../../common/components/severity_badge';
|
||||||
import { useUserData } from '../../../../../detections/components/user_info';
|
import { useUserData } from '../../../../../detections/components/user_info';
|
||||||
import * as i18n from '../../../../common/translations';
|
import * as i18n from '../../../../common/translations';
|
||||||
|
|
|
@ -30,9 +30,9 @@ import {
|
||||||
canEditRuleWithActions,
|
canEditRuleWithActions,
|
||||||
explainLackOfPermission,
|
explainLackOfPermission,
|
||||||
} from '../../../../common/utils/privileges';
|
} from '../../../../common/utils/privileges';
|
||||||
import { IntegrationsPopover } from '../../../../detections/components/rules/related_integrations/integrations_popover';
|
import { IntegrationsPopover } from '../../../common/components/related_integrations/integrations_popover';
|
||||||
import { RuleStatusBadge } from '../../../../detections/components/rules/rule_execution_status';
|
import { RuleStatusBadge } from '../../../common/components/rule_execution_status';
|
||||||
import { RuleSwitch } from '../../../../detections/components/rules/rule_switch';
|
import { RuleSwitch } from '../../../common/components/rule_switch';
|
||||||
import { SeverityBadge } from '../../../../common/components/severity_badge';
|
import { SeverityBadge } from '../../../../common/components/severity_badge';
|
||||||
import * as i18n from '../../../common/translations';
|
import * as i18n from '../../../common/translations';
|
||||||
import { RuleDetailTabs } from '../../../rule_details_ui/pages/rule_details/use_rule_details_tabs';
|
import { RuleDetailTabs } from '../../../rule_details_ui/pages/rule_details/use_rule_details_tabs';
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { EuiButtonEmpty, EuiFlexGroup, EuiFlexItem, EuiToolTip, EuiSpacer } from '@elastic/eui';
|
import { EuiButtonEmpty, EuiFlexGroup, EuiFlexItem, EuiSpacer, EuiToolTip } from '@elastic/eui';
|
||||||
import { MaintenanceWindowCallout } from '@kbn/alerts-ui-shared';
|
import { MaintenanceWindowCallout } from '@kbn/alerts-ui-shared';
|
||||||
import { DEFAULT_APP_CATEGORIES } from '@kbn/core-application-common';
|
import { DEFAULT_APP_CATEGORIES } from '@kbn/core-application-common';
|
||||||
import { APP_UI_ID } from '../../../../../common/constants';
|
import { APP_UI_ID } from '../../../../../common/constants';
|
||||||
|
@ -19,9 +19,9 @@ import { useKibana } from '../../../../common/lib/kibana';
|
||||||
import { hasUserCRUDPermission } from '../../../../common/utils/privileges';
|
import { hasUserCRUDPermission } from '../../../../common/utils/privileges';
|
||||||
import { SpyRoute } from '../../../../common/utils/route/spy_routes';
|
import { SpyRoute } from '../../../../common/utils/route/spy_routes';
|
||||||
import { MissingPrivilegesCallOut } from '../../../../detections/components/callouts/missing_privileges_callout';
|
import { MissingPrivilegesCallOut } from '../../../../detections/components/callouts/missing_privileges_callout';
|
||||||
import { MlJobCompatibilityCallout } from '../../../../detections/components/callouts/ml_job_compatibility_callout';
|
import { MlJobCompatibilityCallout } from '../../components/ml_job_compatibility_callout';
|
||||||
import { NeedAdminForUpdateRulesCallOut } from '../../../../detections/components/callouts/need_admin_for_update_callout';
|
import { NeedAdminForUpdateRulesCallOut } from '../../../../detections/components/callouts/need_admin_for_update_callout';
|
||||||
import { AddElasticRulesButton } from '../../../../detections/components/rules/pre_packaged_rules/add_elastic_rules_button';
|
import { AddElasticRulesButton } from '../../components/pre_packaged_rules/add_elastic_rules_button';
|
||||||
import { ValueListsFlyout } from '../../../../detections/components/value_lists_management_flyout';
|
import { ValueListsFlyout } from '../../../../detections/components/value_lists_management_flyout';
|
||||||
import { useUserData } from '../../../../detections/components/user_info';
|
import { useUserData } from '../../../../detections/components/user_info';
|
||||||
import { useListsConfig } from '../../../../detections/containers/detection_engine/lists/use_lists_config';
|
import { useListsConfig } from '../../../../detections/containers/detection_engine/lists/use_lists_config';
|
||||||
|
@ -31,7 +31,7 @@ import { AllRules } from '../../components/rules_table';
|
||||||
import { RulesTableContextProvider } from '../../components/rules_table/rules_table/rules_table_context';
|
import { RulesTableContextProvider } from '../../components/rules_table/rules_table/rules_table_context';
|
||||||
import { HeaderPage } from '../../../../common/components/header_page';
|
import { HeaderPage } from '../../../../common/components/header_page';
|
||||||
import { RuleUpdateCallouts } from '../../components/rule_update_callouts/rule_update_callouts';
|
import { RuleUpdateCallouts } from '../../components/rule_update_callouts/rule_update_callouts';
|
||||||
import { BlogPostPrebuiltRuleCustomizationCallout } from '../../../../detections/components/callouts/blog_post_prebuilt_rule_customization_callout';
|
import { BlogPostPrebuiltRuleCustomizationCallout } from '../../components/blog_post_prebuilt_rule_customization_callout';
|
||||||
import { RuleImportModal } from '../../components/rule_import_modal/rule_import_modal';
|
import { RuleImportModal } from '../../components/rule_import_modal/rule_import_modal';
|
||||||
|
|
||||||
const RulesPageComponent: React.FC = () => {
|
const RulesPageComponent: React.FC = () => {
|
||||||
|
|
|
@ -10,11 +10,11 @@ import { EuiHealth } from '@elastic/eui';
|
||||||
|
|
||||||
import type { RuleExecutionStatus } from '../../../../../../../common/api/detection_engine/rule_monitoring';
|
import type { RuleExecutionStatus } from '../../../../../../../common/api/detection_engine/rule_monitoring';
|
||||||
import { getEmptyTagValue } from '../../../../../../common/components/empty_value';
|
import { getEmptyTagValue } from '../../../../../../common/components/empty_value';
|
||||||
import { RuleStatusBadge } from '../../../../../../detections/components/rules/rule_execution_status';
|
import { RuleStatusBadge } from '../../../../../common/components/rule_execution_status';
|
||||||
import {
|
import {
|
||||||
getCapitalizedStatusText,
|
getCapitalizedStatusText,
|
||||||
getStatusColor,
|
getStatusColor,
|
||||||
} from '../../../../../../detections/components/rules/rule_execution_status/utils';
|
} from '../../../../../common/components/rule_execution_status/utils';
|
||||||
|
|
||||||
const EMPTY_STATUS_TEXT = getEmptyTagValue();
|
const EMPTY_STATUS_TEXT = getEmptyTagValue();
|
||||||
|
|
||||||
|
|
|
@ -26,9 +26,12 @@ const mockUseIntegrations = jest.fn().mockReturnValue({
|
||||||
data: [],
|
data: [],
|
||||||
});
|
});
|
||||||
|
|
||||||
jest.mock('../../../../detections/components/rules/related_integrations/use_integrations', () => ({
|
jest.mock(
|
||||||
useIntegrations: () => mockUseIntegrations(),
|
'../../../../detection_engine/common/components/related_integrations/use_integrations',
|
||||||
}));
|
() => ({
|
||||||
|
useIntegrations: () => mockUseIntegrations(),
|
||||||
|
})
|
||||||
|
);
|
||||||
|
|
||||||
jest.mock('../../../../common/hooks/use_space_id', () => ({
|
jest.mock('../../../../common/hooks/use_space_id', () => ({
|
||||||
useSpaceId: () => 'test-space-id',
|
useSpaceId: () => 'test-space-id',
|
||||||
|
|
|
@ -9,7 +9,7 @@ import { useEffect, useMemo } from 'react';
|
||||||
|
|
||||||
import { useIsExperimentalFeatureEnabled } from '../../../../common/hooks/use_experimental_features';
|
import { useIsExperimentalFeatureEnabled } from '../../../../common/hooks/use_experimental_features';
|
||||||
import type { ManagedUserHits } from '../../../../../common/search_strategy/security_solution/users/managed_details';
|
import type { ManagedUserHits } from '../../../../../common/search_strategy/security_solution/users/managed_details';
|
||||||
import { useIntegrations } from '../../../../detections/components/rules/related_integrations/use_integrations';
|
import { useIntegrations } from '../../../../detection_engine/common/components/related_integrations/use_integrations';
|
||||||
import { UsersQueries } from '../../../../../common/api/search_strategy';
|
import { UsersQueries } from '../../../../../common/api/search_strategy';
|
||||||
import { useSpaceId } from '../../../../common/hooks/use_space_id';
|
import { useSpaceId } from '../../../../common/hooks/use_space_id';
|
||||||
import { useSearchStrategy } from '../../../../common/containers/use_search_strategy';
|
import { useSearchStrategy } from '../../../../common/containers/use_search_strategy';
|
||||||
|
@ -17,10 +17,10 @@ import { useGlobalTime } from '../../../../common/containers/use_global_time';
|
||||||
import { useQueryInspector } from '../../../../common/components/page/manage_query';
|
import { useQueryInspector } from '../../../../common/components/page/manage_query';
|
||||||
import {
|
import {
|
||||||
ENTRA_ID_PACKAGE_NAME,
|
ENTRA_ID_PACKAGE_NAME,
|
||||||
OKTA_PACKAGE_NAME,
|
|
||||||
getEntraUserIndex,
|
getEntraUserIndex,
|
||||||
getOktaUserIndex,
|
getOktaUserIndex,
|
||||||
MANAGED_USER_QUERY_ID,
|
MANAGED_USER_QUERY_ID,
|
||||||
|
OKTA_PACKAGE_NAME,
|
||||||
} from '../constants';
|
} from '../constants';
|
||||||
import * as i18n from '../translations';
|
import * as i18n from '../translations';
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@ import React from 'react';
|
||||||
import { EuiHorizontalRule, EuiLoadingSpinner, EuiText } from '@elastic/eui';
|
import { EuiHorizontalRule, EuiLoadingSpinner, EuiText } from '@elastic/eui';
|
||||||
import { FormattedMessage } from '@kbn/i18n-react';
|
import { FormattedMessage } from '@kbn/i18n-react';
|
||||||
import type { RelatedIntegration } from '../../../../../common/api/detection_engine';
|
import type { RelatedIntegration } from '../../../../../common/api/detection_engine';
|
||||||
import { IntegrationsPopover } from '../../../../detections/components/rules/related_integrations/integrations_popover';
|
import { IntegrationsPopover } from '../../../../detection_engine/common/components/related_integrations/integrations_popover';
|
||||||
import type { RuleMigrationRule } from '../../../../../common/siem_migrations/model/rule_migration.gen';
|
import type { RuleMigrationRule } from '../../../../../common/siem_migrations/model/rule_migration.gen';
|
||||||
import * as i18n from './translations';
|
import * as i18n from './translations';
|
||||||
import type { TableColumn } from './constants';
|
import type { TableColumn } from './constants';
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue