Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Security Solution] [Cases] Deleting files from security solution and removing feature flag #95176

Merged
merged 36 commits into from
Apr 1, 2021
Merged
Show file tree
Hide file tree
Changes from 27 commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
f77325a
wip deleting
stephmilovic Mar 23, 2021
3ab61d4
fix more things
stephmilovic Mar 23, 2021
57dfd51
being a fixer
stephmilovic Mar 23, 2021
62fd9a3
Migrate all_cases view to cases plugin
michaelolo24 Mar 17, 2021
d3ba0c3
remove problematic tsconfig
michaelolo24 Mar 22, 2021
5e2bb04
Case view (details) integration with timeline disabled
michaelolo24 Mar 24, 2021
519c857
change Ecs types
stephmilovic Mar 26, 2021
bb74caf
Hallelujah
michaelolo24 Mar 26, 2021
eaccd14
fix import paths
michaelolo24 Mar 29, 2021
346df21
merge in michaels
stephmilovic Mar 29, 2021
39a82ab
Merge branch 'cases_rac_ui' into remove_files_from_ss
stephmilovic Mar 29, 2021
2625db5
need to figure out alert_fields
stephmilovic Mar 29, 2021
0fd813e
move out p1
stephmilovic Mar 29, 2021
7a743b0
merge in cases_rac_ui
stephmilovic Mar 29, 2021
71aa9f6
update methods and readme
stephmilovic Mar 30, 2021
e65e4b3
more work
stephmilovic Mar 30, 2021
0876baa
fix tests
stephmilovic Mar 30, 2021
5c3c628
passing all jest
stephmilovic Mar 30, 2021
721b1e4
Merge branch 'cases_rac_ui' into remove_files_from_ss
stephmilovic Mar 30, 2021
31219e0
wrap connector ui plugin in feature flag
stephmilovic Mar 30, 2021
5f996ad
better test fixing
stephmilovic Mar 30, 2021
3823f5d
remove accident
stephmilovic Mar 30, 2021
9b39f08
update limits.yml
stephmilovic Mar 30, 2021
5bb1919
move container types to common
stephmilovic Mar 30, 2021
79b560a
fix types
stephmilovic Mar 30, 2021
15dc4fe
skip attach timeline cypress test
stephmilovic Mar 30, 2021
86ec77f
skip more case/timeline related tests
stephmilovic Mar 31, 2021
5bb1370
Merge branch 'cases_rac_ui' into remove_files_from_ss
stephmilovic Mar 31, 2021
d8f0704
update readme for christos
stephmilovic Mar 31, 2021
87ecb08
fix bug in recent cases
stephmilovic Mar 31, 2021
74f0e7e
Merge branch 'cases_rac_ui' into remove_files_from_ss
stephmilovic Mar 31, 2021
09e780e
fix mappings and connector issue
stephmilovic Apr 1, 2021
3e5b17e
replace toaster all over with useToasts hook
stephmilovic Apr 1, 2021
5996398
small bugfix and nits for christos
stephmilovic Apr 1, 2021
b653e1b
fix jest
stephmilovic Apr 1, 2021
2f9fddd
Merge branch 'cases_rac_ui' into remove_files_from_ss
stephmilovic Apr 1, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion packages/kbn-optimizer/limits.yml
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ pageLoadAssetSize:
searchprofiler: 67080
security: 189428
securityOss: 30806
securitySolution: 283440
securitySolution: 187863
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎉

share: 99061
snapshotRestore: 79032
spaces: 387915
Expand Down
50 changes: 46 additions & 4 deletions x-pack/plugins/cases/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,14 +52,39 @@ Arguments:
|disabledStatuses?|`CaseStatuses[];` array of disabled statuses
|getCaseDetailsHref|`(caseDetails: CaseDetailsHrefSchema) => string;` callback to generate the case details url from the case id
|isModal?|`boolean;` is All Cases table a modal
|onCaseDetailsNavClick|`(caseDetails: CaseDetailsHrefSchema) => void;` callback for nav click
|onConfigureCasesNavClick?|`(ev: React.MouseEvent) => void;` callback for nav click
|onCreateCaseNavClick?|`(ev: React.MouseEvent) => void;` callback for nav click
|onCaseDetailsNavClick|`(caseDetails: CaseDetailsHrefSchema) => void;` callback for case details nav click
|onConfigureCasesNavClick?|`(ev: React.MouseEvent) => void;` callback for configure case nav click
|onCreateCaseNavClick?|`(ev: React.MouseEvent) => void;` callback for create case nav click
|onRowClick?|`(theCase?: Case ! SubCase) => void;` callback for row click, passing case in row
|userCanCrud|boolean; user permissions to crud
|userCanCrud|`boolean;` user permissions to crud

UI component:
![All Cases Component][all-cases-img]

### `getCaseView`
Arguments:

|Property|Description|
|---|---|
|allCasesHref|`string;` route for all cases page
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for adding these :) I'm gonna try and clean up this API once everything is deleted to make it easier to consume now that we know what most of them are (apart from the timeline ones left)

|backToAllCasesOnClick|`(ev: MouseEvent) => void;` handler for back to all cases click
|caseDetailsHref|`string;` route for configure cases page
|caseId|`string;` ID of the case
|configureCasesHref|`string;` route for configure cases page
|getCaseDetailHrefWithCommentId|`(commentId: string) => string;` callback to generate the case details url with a comment id reference from the case id and comment id
|getRuleDetailsHref|`(ruleId: string, null, undefined) => string;` callback to generate the rule details url from the rule id
|onComponentInitialized?|`() => void;` callback when component has initialized
|onConfigureCasesNavClick|`(ev: React.MouseEvent) => void;` callback for configure case nav click
|onRuleDetailsClick|`(ruleId: string, null, undefined) => void;` callback for rule details nav click
|renderInvestigateInTimelineActionComponent?|: `(alertIds: string[]) => JSX.Element;` space to render `InvestigateInTimelineActionComponent`
|renderTimelineDetailsPanel?|: `() => JSX.Element;` space to render `TimelineDetailsPanel`
|showAlertDetails|: `(alertId: string, index: string) => void;` callback to show alert details
|subCaseId?|: `string;` subcase id
|useFetchAlertData|: `(alertIds: string[]) => [boolean, Record<string, Ecs>];` fetch alerts
|userCanCrud|: `boolean;` user permissions to crud

UI component:
![Case View Component][case-view-img]

### `getCreateCase`
Arguments:
Expand All @@ -83,6 +108,21 @@ UI component:
UI component:
![Configure Component][configure-img]

### `getRecentCases`
Arguments:

|Property|Description|
|---|---|
|allCasesHref|`string;` href of all cases page
|createCaseHref|`string;`
|getCaseDetailsHref|`(caseDetails: CaseDetailsHrefSchema) => string;`
|goToAllCases|`(ev: React.MouseEvent) => void;` callback for all cases link click
|onCaseDetailsNavClick|`(caseDetails: CaseDetailsHrefSchema) => void;` callback for case details nav click
|perPage|`number;` number of cases to show in widget

UI component:
![Recent Cases Component][recent-cases-img]

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I know is out of the scope of this PR but could you add a note that the case action type is disabled by default and the connector is not supported?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

## Case Action Type

See [Kibana Actions](https://github.com/elastic/kibana/tree/master/x-pack/plugins/actions) for more information.
Expand Down Expand Up @@ -192,4 +232,6 @@ For IBM Resilient connectors:
[configure-img]: images/configure.png
[create-img]: images/create.png
[all-cases-img]: images/all_cases.png
[recent-cases-img]: images/recent_cases.png
[case-view-img]: images/case_view.png

1 change: 1 addition & 0 deletions x-pack/plugins/cases/common/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,4 @@

export * from './constants';
export * from './api';
export * from './ui/types';
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why the ui types are being exported? Will they be used by another plugin?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes, security solution uses the types on the UI

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see! Thanks!

Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@
* 2.0.
*/

export * from '../../translations';
export * from './types';
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,12 @@ import {
User,
UserAction,
UserActionField,
} from '../../../../cases/common';
import { CaseStatusWithAllStatus } from '../components/status';
} from '../api';

export { CaseConnector, ActionConnector, CaseStatuses } from '../../../../cases/common';
export const StatusAll = 'all' as const;
export type StatusAllType = typeof StatusAll;

export type CaseStatusWithAllStatus = CaseStatuses | StatusAllType;

export type Comment = CommentRequest & {
associationType: AssociationType;
Expand Down
Binary file added x-pack/plugins/cases/images/case_view.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added x-pack/plugins/cases/images/recent_cases.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import { TestProviders } from '../../common/mock';
import { casesStatus, useGetCasesMockState, collectionCase } from '../../containers/mock';
import * as i18n from './translations';

import { CaseStatuses, CaseType } from '../../../common';
import { CaseStatuses, CaseType, StatusAll } from '../../../common';
import { getEmptyTagValue } from '../empty_value';
import { useDeleteCases } from '../../containers/use_delete_cases';
import { useGetCases } from '../../containers/use_get_cases';
Expand All @@ -23,7 +23,6 @@ import { useUpdateCases } from '../../containers/use_bulk_update_case';
import { useGetActionLicense } from '../../containers/use_get_action_license';
import { getCasesColumns } from './columns';
import { AllCases } from '.';
import { StatusAll } from '../status';

jest.mock('../../containers/use_bulk_update_case');
jest.mock('../../containers/use_delete_cases');
Expand Down
34 changes: 26 additions & 8 deletions x-pack/plugins/cases/public/components/all_cases/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import styled, { css } from 'styled-components';
import classnames from 'classnames';

import * as i18n from './translations';
import { CaseStatuses, CaseType } from '../../../common';
import { CaseStatuses, CaseType, CommentRequestAlertType, CommentType } from '../../../common';
import { getCasesColumns } from './columns';
import { Case, DeleteCase, FilterOptions, SortFieldCase, SubCase } from '../../containers/types';
import { useGetCases, UpdateCase } from '../../containers/use_get_cases';
Expand All @@ -44,6 +44,7 @@ import { getActions } from './actions';
import { CasesTableFilters } from './table_filters';
import { useUpdateCases } from '../../containers/use_bulk_update_case';
import { useGetActionLicense } from '../../containers/use_get_action_license';
import { usePostComment } from '../../containers/use_post_comment';
import { getActionLicenseError } from '../use_push_to_service/helpers';
import { CaseCallOut } from '../callout';
import { ConfigureCaseButton } from '../configure_cases/button';
Expand Down Expand Up @@ -112,9 +113,9 @@ const BasicTable = styled(EuiBasicTable)`
BasicTable.displayName = 'BasicTable';

export interface AllCasesProps {
alertData?: Omit<CommentRequestAlertType, 'type'>;
configureCasesHref: string;
createCaseHref: string;
disabledCases?: CaseType[];
disabledStatuses?: CaseStatuses[];
getCaseDetailsHref: (caseDetails: CaseDetailsHrefSchema) => string;
isModal?: boolean;
Expand All @@ -123,13 +124,14 @@ export interface AllCasesProps {
onCreateCaseNavClick?: (ev: React.MouseEvent) => void;
onRowClick?: (theCase?: Case | SubCase) => void;
userCanCrud: boolean;
updateCase?: (newCase: Case) => void;
}

export const AllCases = React.memo<AllCasesProps>(
({
alertData,
configureCasesHref,
createCaseHref,
disabledCases = [],
disabledStatuses,
getCaseDetailsHref,
isModal = false,
Expand All @@ -138,6 +140,7 @@ export const AllCases = React.memo<AllCasesProps>(
onCreateCaseNavClick,
onRowClick,
userCanCrud,
updateCase,
}) => {
const { actionLicense } = useGetActionLicense();
const {
Expand Down Expand Up @@ -177,6 +180,10 @@ export const AllCases = React.memo<AllCasesProps>(
isUpdated,
updateBulkStatus,
} = useUpdateCases();

// Post Comment to Case
const { postComment, isLoading: isCommentsUpdating } = usePostComment();

const [deleteThisCase, setDeleteThisCase] = useState<DeleteCase>({
title: '',
id: '',
Expand Down Expand Up @@ -371,12 +378,12 @@ export const AllCases = React.memo<AllCasesProps>(
onCaseDetailsNavClick,
}),
[
userCanCrud,
actions,
filterOptions.status,
isModal,
getCaseDetailsHref,
isModal,
onCaseDetailsNavClick,
userCanCrud,
]
);

Expand Down Expand Up @@ -422,7 +429,17 @@ export const AllCases = React.memo<AllCasesProps>(

const tableRowProps = useCallback(
(theCase: Case) => {
const onTableRowClick = memoize(() => {
const onTableRowClick = memoize(async () => {
if (alertData != null) {
await postComment({
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this was previously in security_solution/public/cases/components/timeline_actions/add_to_case_action.tsx

Copy link
Member

@cnasikas cnasikas Apr 1, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Imo, this shouldn't be inside the component. It is better to be implemented inside the onRowClick where the consumer of the component pass it as a prop. If security solution, needs access to the postComment function we can provided it through our casesClient (backend).

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i didnt want the ui components to rely on any api methods since actions dont, they should just work

Copy link
Member

@cnasikas cnasikas Apr 1, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see what you mean. I talk about it with @XavierM and we think that we should break the AllCases components into smaller components and remove the isModal logic. This way we can move the onTableRowClick and alertData logic inside a new modal called, for example, AttachToCaseModal which can be exported through the CasesUiClient.

Example:

// AllCases component
interface Props {
  configureCasesHref: string;
  createCaseHref: string;
  disabledStatuses?: CaseStatuses[];
  getCaseDetailsHref: (caseDetails: CaseDetailsHrefSchema) => string;
  onCaseDetailsNavClick: (caseDetails: CaseDetailsHrefSchema) => void;
  onConfigureCasesNavClick?: (ev: React.MouseEvent) => void;
  onCreateCaseNavClick?: (ev: React.MouseEvent) => void;
  userCanCrud: boolean;
}

<>
  <AllCasesHeader>
  <AllCasesFilters>
  <AllCasesTable>
</>

// AttachToCase modal
interface Props {
   onAttachment: () => void;
}

<>
  <AllCasesFilters>
  <AllCasesTable>
</>

I think is a good opportunity to do it in this PR. It will be much cleaner. The AllCases is too compact, does a lot of things without reason.

caseId: theCase.id,
data: {
type: CommentType.alert,
...alertData,
},
updateCase,
});
}
if (onRowClick) {
onRowClick(theCase);
}
Expand All @@ -434,7 +451,7 @@ export const AllCases = React.memo<AllCasesProps>(
...(isModal && theCase.type !== CaseType.collection ? { onClick: onTableRowClick } : {}),
};
},
[isModal, onRowClick]
[isModal, alertData, onRowClick, postComment, updateCase]
);

const enableBuckActions = userCanCrud && !isModal;
Expand Down Expand Up @@ -503,7 +520,7 @@ export const AllCases = React.memo<AllCasesProps>(
</EuiFlexGroup>
</CaseHeaderPage>
)}
{(isCasesLoading || isDeleting || isUpdating) && !isDataEmpty && (
{(isCasesLoading || isDeleting || isUpdating || isCommentsUpdating) && !isDataEmpty && (
<ProgressLoader size="xs" color="accent" className="essentialAnimation" />
)}
<TableWrap data-test-subj="table-wrap" loading={!isModal ? isCasesLoading : undefined}>
Expand Down Expand Up @@ -565,6 +582,7 @@ export const AllCases = React.memo<AllCasesProps>(
itemId="id"
items={data.cases}
itemIdToExpandedRowMap={itemIdToExpandedRowMap}
loading={isCommentsUpdating}
noItemsMessage={
<EuiEmptyPrompt
title={<h3>{i18n.NO_CASES}</h3>}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,8 @@ import React from 'react';
import { mount } from 'enzyme';
import { waitFor } from '@testing-library/react';

import { CaseStatuses } from '../../../common';
import { CaseStatuses, StatusAll } from '../../../common';
import { StatusFilter } from './status_filter';
import { StatusAll } from '../status';

const stats = {
[StatusAll]: 0,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@

import React, { memo } from 'react';
import { EuiSuperSelect, EuiSuperSelectOption, EuiFlexGroup, EuiFlexItem } from '@elastic/eui';
import { Status, statuses, StatusAll, CaseStatusWithAllStatus } from '../status';
import { Status, statuses } from '../status';
import { CaseStatusWithAllStatus, StatusAll } from '../../../common';

interface Props {
stats: Record<CaseStatusWithAllStatus, number | null>;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,11 @@ import { isEqual } from 'lodash/fp';
import styled from 'styled-components';
import { EuiFlexGroup, EuiFlexItem, EuiFieldSearch, EuiFilterGroup } from '@elastic/eui';

import { CaseStatuses } from '../../../common';
import { CaseStatuses, CaseStatusWithAllStatus, StatusAll } from '../../../common';
import { FilterOptions } from '../../containers/types';
import { useGetTags } from '../../containers/use_get_tags';
import { useGetReporters } from '../../containers/use_get_reporters';
import { FilterPopover } from '../filter_popover';
import { CaseStatusWithAllStatus, StatusAll } from '../status';
import { StatusFilter } from './status_filter';

import * as i18n from './translations';
Expand Down
4 changes: 2 additions & 2 deletions x-pack/plugins/cases/public/components/bulk_actions/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
import React from 'react';
import { EuiContextMenuItem } from '@elastic/eui';

import { CaseStatuses } from '../../../common';
import { statuses, CaseStatusWithAllStatus } from '../status';
import { CaseStatuses, CaseStatusWithAllStatus } from '../../../common';
import { statuses } from '../status';
import * as i18n from './translations';
import { Case } from '../../containers/types';

Expand Down
3 changes: 1 addition & 2 deletions x-pack/plugins/cases/public/components/case_view/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,7 @@ import {
EuiHorizontalRule,
} from '@elastic/eui';

import { CaseStatuses, CaseAttributes, CaseType } from '../../../common';
import { Case, CaseConnector } from '../../containers/types';
import { CaseStatuses, CaseAttributes, CaseType, Case, CaseConnector } from '../../../common';
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍🏾

import { HeaderPage } from '../header_page';
import { EditableTitle } from '../header_page/editable_title';
import { TagList } from '../tag_list';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,6 @@ const CaseParamsFields: React.FunctionComponent<ActionParamsProps<CaseActionPara
actionParams,
editAction,
index,
errors,
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

these were unused

messageVariables,
actionConnector,
}) => {
const { caseId = null, comment = defaultAlertComment } = actionParams.subActionParams ?? {};
Expand Down
2 changes: 1 addition & 1 deletion x-pack/plugins/cases/public/components/connectors/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import {
ResilientFieldsType,
} from '../../../common';

export { getActionType as getCaseConnectorUI } from './case';
export { getActionType as getCaseConnectorUi } from './case';

export * from './config';
export * from './types';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import React, { useMemo, useEffect, useCallback, useState, memo } from 'react';
import { EuiComboBox, EuiComboBoxOptionOption } from '@elastic/eui';

import { useKibana } from '../../../common/lib/kibana';
import { ActionConnector } from '../../../containers/types';
import { ActionConnector } from '../../../../common';
import { useGetIssues } from './use_get_issues';
import { useGetSingleIssue } from './use_get_single_issue';
import * as i18n from './translations';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

import { useState, useEffect, useRef } from 'react';
import { HttpSetup, ToastsApi } from 'kibana/public';
import { ActionConnector } from '../../../containers/types';
import { ActionConnector } from '../../../../common';
import { getFieldsByIssueType } from './api';
import { Fields } from './types';
import * as i18n from './translations';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

import { useState, useEffect, useRef } from 'react';
import { HttpSetup, ToastsApi } from 'kibana/public';
import { ActionConnector } from '../../../containers/types';
import { ActionConnector } from '../../../../common';
import { getIssueTypes } from './api';
import { IssueTypes } from './types';
import * as i18n from './translations';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import { isEmpty, debounce } from 'lodash/fp';
import { useState, useEffect, useRef } from 'react';
import { HttpSetup, ToastsApi } from 'kibana/public';
import { ActionConnector } from '../../../containers/types';
import { ActionConnector } from '../../../../common';
import { getIssues } from './api';
import { Issues } from './types';
import * as i18n from './translations';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

import { useState, useEffect, useRef } from 'react';
import { HttpSetup, ToastsApi } from 'kibana/public';
import { ActionConnector } from '../../../containers/types';
import { ActionConnector } from '../../../../common';
import { getIssue } from './api';
import { Issue } from './types';
import * as i18n from './translations';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

import { useState, useEffect, useRef } from 'react';
import { HttpSetup, ToastsApi } from 'kibana/public';
import { ActionConnector } from '../../../containers/types';
import { ActionConnector } from '../../../../common';
import { getIncidentTypes } from './api';
import * as i18n from './translations';

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

import { useState, useEffect, useRef } from 'react';
import { HttpSetup, ToastsApi } from 'kibana/public';
import { ActionConnector } from '../../../containers/types';
import { ActionConnector } from '../../../../common';
import { getSeverity } from './api';
import * as i18n from './translations';

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import { renderHook } from '@testing-library/react-hooks';

import { useKibana } from '../../../common/lib/kibana';
import { ActionConnector } from '../../../containers/types';
import { ActionConnector } from '../../../../common';
import { choices } from '../mock';
import { useGetChoices, UseGetChoices, UseGetChoicesProps } from './use_get_choices';
import * as api from './api';
Expand Down
Loading