[Security Solution] [Cases] rename case dir/plugin/context/i18n to cases (#94149) (#94318)

This commit is contained in:
Steph Milovic 2021-03-10 11:17:20 -07:00 committed by GitHub
parent 648c40646b
commit 0c1d56217d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
340 changed files with 1256 additions and 1248 deletions

View file

@ -21,28 +21,28 @@
"children": [
{
"tags": [],
"id": "def-server.CaseRequestContext.getCaseClient",
"id": "def-server.CaseRequestContext.getCasesClient",
"type": "Function",
"label": "getCaseClient",
"label": "getCasesClient",
"description": [],
"source": {
"path": "x-pack/plugins/case/server/types.ts",
"path": "x-pack/plugins/cases/server/types.ts",
"lineNumber": 14
},
"signature": [
"() => ",
{
"pluginId": "case",
"pluginId": "cases",
"scope": "server",
"docId": "kibCasePluginApi",
"section": "def-server.CaseClient",
"text": "CaseClient"
"section": "def-server.CasesClient",
"text": "CasesClient"
}
]
}
],
"source": {
"path": "x-pack/plugins/case/server/types.ts",
"path": "x-pack/plugins/cases/server/types.ts",
"lineNumber": 13
},
"initialIsOpen": false
@ -60,4 +60,4 @@
"misc": [],
"objects": []
}
}
}

View file

@ -316,7 +316,7 @@ Failure to have auth enabled in Kibana will make for a broken UI. UI-based error
|"Never look back. The past is done. The future is a blank canvas." ― Suzy Kassem, Rise Up and Salute the Sun
|{kib-repo}blob/{branch}/x-pack/plugins/case/README.md[case]
|{kib-repo}blob/{branch}/x-pack/plugins/cases/README.md[cases]
|Experimental Feature

View file

@ -69,7 +69,7 @@ it('produces the right watch and ignore list', () => {
<absolute path>/x-pack/plugins/apm/e2e,
<absolute path>/x-pack/plugins/apm/scripts,
<absolute path>/x-pack/plugins/canvas/canvas_plugin_src,
<absolute path>/x-pack/plugins/case/server/scripts,
<absolute path>/x-pack/plugins/cases/server/scripts,
<absolute path>/x-pack/plugins/lists/scripts,
<absolute path>/x-pack/plugins/lists/server/scripts,
<absolute path>/x-pack/plugins/security_solution/scripts,

View file

@ -69,7 +69,7 @@ export function getServerWatchPaths({ pluginPaths, pluginScanDirs }: Options) {
fromRoot('x-pack/plugins/apm/e2e'),
fromRoot('x-pack/plugins/apm/scripts'),
fromRoot('x-pack/plugins/canvas/canvas_plugin_src'), // prevents server from restarting twice for Canvas plugin changes,
fromRoot('x-pack/plugins/case/server/scripts'),
fromRoot('x-pack/plugins/cases/server/scripts'),
fromRoot('x-pack/plugins/lists/scripts'),
fromRoot('x-pack/plugins/lists/server/scripts'),
fromRoot('x-pack/plugins/security_solution/scripts'),

View file

@ -9,7 +9,7 @@
"xpack.apm": "plugins/apm",
"xpack.beatsManagement": "plugins/beats_management",
"xpack.canvas": "plugins/canvas",
"xpack.case": "plugins/case",
"xpack.cases": "plugins/cases",
"xpack.cloud": "plugins/cloud",
"xpack.dashboard": "plugins/dashboard_enhanced",
"xpack.discover": "plugins/discover_enhanced",

View file

@ -7,7 +7,7 @@
import { i18n } from '@kbn/i18n';
export const NAME = i18n.translate('xpack.actions.builtin.case.jiraTitle', {
export const NAME = i18n.translate('xpack.actions.builtin.cases.jiraTitle', {
defaultMessage: 'Jira',
});

View file

@ -7,7 +7,7 @@
import { i18n } from '@kbn/i18n';
export const NAME = i18n.translate('xpack.actions.builtin.case.resilientTitle', {
export const NAME = i18n.translate('xpack.actions.builtin.cases.resilientTitle', {
defaultMessage: 'IBM Resilient',
});

View file

@ -1,20 +0,0 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
import { CaseClientFactoryArguments, CaseClient } from './types';
import { CaseClientHandler } from './client';
export { CaseClientHandler } from './client';
export { CaseClient } from './types';
/**
* Create a CaseClientHandler to external services (other plugins).
*/
export const createExternalCaseClient = (clientArgs: CaseClientFactoryArguments): CaseClient => {
const client = new CaseClientHandler(clientArgs);
return client;
};

View file

@ -83,7 +83,7 @@ const CasePostRequestNoTypeRt = rt.type({
/**
* This type is used for validating a create case request. It requires that the type field be defined.
*/
export const CaseClientPostRequestRt = rt.type({
export const CasesClientPostRequestRt = rt.type({
...CasePostRequestNoTypeRt.props,
[caseTypeField]: CaseTypeRt,
});
@ -92,7 +92,7 @@ export const CaseClientPostRequestRt = rt.type({
* This type is not used for validation when decoding a request because intersection does not have props defined which
* required for the excess function. Instead we use this as the type used by the UI. This allows the type field to be
* optional and the server will handle setting it to a default value before validating that the request
* has all the necessary fields. CaseClientPostRequestRt is used for validation.
* has all the necessary fields. CasesClientPostRequestRt is used for validation.
*/
export const CasePostRequestRt = rt.intersection([
rt.partial({ type: CaseTypeRt }),
@ -178,7 +178,7 @@ export type CaseAttributes = rt.TypeOf<typeof CaseAttributesRt>;
* that the type field be defined. The CasePostRequest should be used in most places (the UI etc). This type is really
* only necessary for validation.
*/
export type CaseClientPostRequest = rt.TypeOf<typeof CaseClientPostRequestRt>;
export type CasesClientPostRequest = rt.TypeOf<typeof CasesClientPostRequestRt>;
export type CasePostRequest = rt.TypeOf<typeof CasePostRequestRt>;
export type CaseResponse = rt.TypeOf<typeof CaseResponseRt>;
export type CasesResponse = rt.TypeOf<typeof CasesResponseRt>;

View file

@ -10,7 +10,7 @@ import * as rt from 'io-ts';
import { UserRT } from '../user';
/* To the next developer, if you add/removed fields here
* make sure to check this file (x-pack/plugins/case/server/services/user_actions/helpers.ts) too
* make sure to check this file (x-pack/plugins/cases/server/services/user_actions/helpers.ts) too
*/
const UserActionFieldTypeRt = rt.union([
rt.literal('comment'),

View file

@ -7,7 +7,7 @@
import * as rt from 'io-ts';
// New fields should also be added at: x-pack/plugins/case/server/connectors/case/schema.ts
// New fields should also be added at: x-pack/plugins/cases/server/connectors/case/schema.ts
export const JiraFieldsRT = rt.type({
issueType: rt.union([rt.string, rt.null]),
priority: rt.union([rt.string, rt.null]),

View file

@ -7,7 +7,7 @@
import * as rt from 'io-ts';
// New fields should also be added at: x-pack/plugins/case/server/connectors/case/schema.ts
// New fields should also be added at: x-pack/plugins/cases/server/connectors/case/schema.ts
export const ResilientFieldsRT = rt.type({
incidentTypes: rt.union([rt.array(rt.string), rt.null]),
severityCode: rt.union([rt.string, rt.null]),

View file

@ -7,7 +7,7 @@
import * as rt from 'io-ts';
// New fields should also be added at: x-pack/plugins/case/server/connectors/case/schema.ts
// New fields should also be added at: x-pack/plugins/cases/server/connectors/case/schema.ts
export const ServiceNowITSMFieldsRT = rt.type({
impact: rt.union([rt.string, rt.null]),
severity: rt.union([rt.string, rt.null]),

View file

@ -7,7 +7,7 @@
import * as rt from 'io-ts';
// New fields should also be added at: x-pack/plugins/case/server/connectors/case/schema.ts
// New fields should also be added at: x-pack/plugins/cases/server/connectors/case/schema.ts
export const ServiceNowSIRFieldsRT = rt.type({
category: rt.union([rt.string, rt.null]),
destIp: rt.union([rt.boolean, rt.null]),

View file

@ -7,7 +7,7 @@
import { DEFAULT_MAX_SIGNALS } from '../../security_solution/common/constants';
export const APP_ID = 'case';
export const APP_ID = 'cases';
/**
* Case routes

View file

@ -8,5 +8,5 @@
module.exports = {
preset: '@kbn/test',
rootDir: '../../..',
roots: ['<rootDir>/x-pack/plugins/case'],
roots: ['<rootDir>/x-pack/plugins/cases'],
};

View file

@ -1,6 +1,6 @@
{
"configPath": ["xpack", "case"],
"id": "case",
"configPath": ["xpack", "cases"],
"id": "cases",
"kibanaVersion": "kibana",
"requiredPlugins": ["actions", "securitySolution"],
"optionalPlugins": [

View file

@ -1,6 +1,6 @@
{
"author": "Elastic",
"name": "case",
"name": "cases",
"version": "8.0.0",
"private": true,
"license": "Elastic-License",

View file

@ -8,7 +8,7 @@
import { ElasticsearchClient, Logger } from 'kibana/server';
import { AlertInfo } from '../../common';
import { AlertServiceContract } from '../../services';
import { CaseClientGetAlertsResponse } from './types';
import { CasesClientGetAlertsResponse } from './types';
interface GetParams {
alertsService: AlertServiceContract;
@ -22,7 +22,7 @@ export const get = async ({
alertsInfo,
scopedClusterClient,
logger,
}: GetParams): Promise<CaseClientGetAlertsResponse> => {
}: GetParams): Promise<CasesClientGetAlertsResponse> => {
if (alertsInfo.length === 0) {
return [];
}

View file

@ -16,4 +16,4 @@ interface Alert {
};
}
export type CaseClientGetAlertsResponse = Alert[];
export type CasesClientGetAlertsResponse = Alert[];

View file

@ -7,18 +7,18 @@
import { CaseStatuses } from '../../../common/api';
import { createMockSavedObjectsRepository } from '../../routes/api/__fixtures__';
import { createCaseClientWithMockSavedObjectsClient } from '../mocks';
import { createCasesClientWithMockSavedObjectsClient } from '../mocks';
describe('updateAlertsStatus', () => {
it('updates the status of the alert correctly', async () => {
const savedObjectsClient = createMockSavedObjectsRepository();
const caseClient = await createCaseClientWithMockSavedObjectsClient({ savedObjectsClient });
await caseClient.client.updateAlertsStatus({
const casesClient = await createCasesClientWithMockSavedObjectsClient({ savedObjectsClient });
await casesClient.client.updateAlertsStatus({
alerts: [{ id: 'alert-id-1', index: '.siem-signals', status: CaseStatuses.closed }],
});
expect(caseClient.services.alertsService.updateAlertsStatus).toHaveBeenCalledWith({
expect(casesClient.services.alertsService.updateAlertsStatus).toHaveBeenCalledWith({
logger: expect.anything(),
scopedClusterClient: expect.anything(),
alerts: [{ id: 'alert-id-1', index: '.siem-signals', status: CaseStatuses.closed }],

View file

@ -5,7 +5,12 @@
* 2.0.
*/
import { ConnectorTypes, CaseStatuses, CaseType, CaseClientPostRequest } from '../../../common/api';
import {
ConnectorTypes,
CaseStatuses,
CaseType,
CasesClientPostRequest,
} from '../../../common/api';
import { isCaseError } from '../../common/error';
import {
@ -13,7 +18,7 @@ import {
mockCaseConfigure,
mockCases,
} from '../../routes/api/__fixtures__';
import { createCaseClientWithMockSavedObjectsClient } from '../mocks';
import { createCasesClientWithMockSavedObjectsClient } from '../mocks';
describe('create', () => {
beforeEach(async () => {
@ -26,7 +31,7 @@ describe('create', () => {
describe('happy path', () => {
test('it creates the case correctly', async () => {
const postCase: CaseClientPostRequest = {
const postCase: CasesClientPostRequest = {
description: 'This is a brand new case of a bad meanie defacing data',
title: 'Super Bad Security Issue',
tags: ['defacement'],
@ -46,8 +51,8 @@ describe('create', () => {
caseSavedObject: mockCases,
caseConfigureSavedObject: mockCaseConfigure,
});
const caseClient = await createCaseClientWithMockSavedObjectsClient({ savedObjectsClient });
const res = await caseClient.client.create(postCase);
const casesClient = await createCasesClientWithMockSavedObjectsClient({ savedObjectsClient });
const res = await casesClient.client.create(postCase);
expect(res).toMatchInlineSnapshot(`
Object {
@ -93,7 +98,7 @@ describe('create', () => {
`);
expect(
caseClient.services.userActionService.postUserActions.mock.calls[0][0].actions
casesClient.services.userActionService.postUserActions.mock.calls[0][0].actions
// using a snapshot here so we don't have to update the text field manually each time it changes
).toMatchInlineSnapshot(`
Array [
@ -130,7 +135,7 @@ describe('create', () => {
});
test('it creates the case without connector in the configuration', async () => {
const postCase: CaseClientPostRequest = {
const postCase: CasesClientPostRequest = {
description: 'This is a brand new case of a bad meanie defacing data',
title: 'Super Bad Security Issue',
tags: ['defacement'],
@ -149,8 +154,8 @@ describe('create', () => {
const savedObjectsClient = createMockSavedObjectsRepository({
caseSavedObject: mockCases,
});
const caseClient = await createCaseClientWithMockSavedObjectsClient({ savedObjectsClient });
const res = await caseClient.client.create(postCase);
const casesClient = await createCasesClientWithMockSavedObjectsClient({ savedObjectsClient });
const res = await casesClient.client.create(postCase);
expect(res).toMatchInlineSnapshot(`
Object {
@ -193,7 +198,7 @@ describe('create', () => {
});
test('Allow user to create case without authentication', async () => {
const postCase: CaseClientPostRequest = {
const postCase: CasesClientPostRequest = {
description: 'This is a brand new case of a bad meanie defacing data',
title: 'Super Bad Security Issue',
tags: ['defacement'],
@ -212,11 +217,11 @@ describe('create', () => {
const savedObjectsClient = createMockSavedObjectsRepository({
caseSavedObject: mockCases,
});
const caseClient = await createCaseClientWithMockSavedObjectsClient({
const casesClient = await createCasesClientWithMockSavedObjectsClient({
savedObjectsClient,
badAuth: true,
});
const res = await caseClient.client.create(postCase);
const res = await casesClient.client.create(postCase);
expect(res).toMatchInlineSnapshot(`
Object {
@ -276,9 +281,9 @@ describe('create', () => {
const savedObjectsClient = createMockSavedObjectsRepository({
caseSavedObject: mockCases,
});
const caseClient = await createCaseClientWithMockSavedObjectsClient({ savedObjectsClient });
const casesClient = await createCasesClientWithMockSavedObjectsClient({ savedObjectsClient });
return (
caseClient.client
casesClient.client
// @ts-expect-error
.create({ theCase: postCase })
.catch((e) => {
@ -305,9 +310,9 @@ describe('create', () => {
const savedObjectsClient = createMockSavedObjectsRepository({
caseSavedObject: mockCases,
});
const caseClient = await createCaseClientWithMockSavedObjectsClient({ savedObjectsClient });
const casesClient = await createCasesClientWithMockSavedObjectsClient({ savedObjectsClient });
return (
caseClient.client
casesClient.client
// @ts-expect-error
.create({ theCase: postCase })
.catch((e) => {
@ -334,9 +339,9 @@ describe('create', () => {
const savedObjectsClient = createMockSavedObjectsRepository({
caseSavedObject: mockCases,
});
const caseClient = await createCaseClientWithMockSavedObjectsClient({ savedObjectsClient });
const casesClient = await createCasesClientWithMockSavedObjectsClient({ savedObjectsClient });
return (
caseClient.client
casesClient.client
// @ts-expect-error
.create({ theCase: postCase })
.catch((e) => {
@ -358,9 +363,9 @@ describe('create', () => {
const savedObjectsClient = createMockSavedObjectsRepository({
caseSavedObject: mockCases,
});
const caseClient = await createCaseClientWithMockSavedObjectsClient({ savedObjectsClient });
const casesClient = await createCasesClientWithMockSavedObjectsClient({ savedObjectsClient });
return (
caseClient.client
casesClient.client
// @ts-expect-error
.create({ theCase: postCase })
.catch((e) => {
@ -388,9 +393,9 @@ describe('create', () => {
const savedObjectsClient = createMockSavedObjectsRepository({
caseSavedObject: mockCases,
});
const caseClient = await createCaseClientWithMockSavedObjectsClient({ savedObjectsClient });
const casesClient = await createCasesClientWithMockSavedObjectsClient({ savedObjectsClient });
return (
caseClient.client
casesClient.client
// @ts-expect-error
.create({ theCase: postCase })
.catch((e) => {
@ -423,8 +428,8 @@ describe('create', () => {
const savedObjectsClient = createMockSavedObjectsRepository({
caseSavedObject: mockCases,
});
const caseClient = await createCaseClientWithMockSavedObjectsClient({ savedObjectsClient });
return caseClient.client.create(postCase).catch((e) => {
const casesClient = await createCasesClientWithMockSavedObjectsClient({ savedObjectsClient });
return casesClient.client.create(postCase).catch((e) => {
expect(e).not.toBeNull();
expect(e.isBoom).toBe(true);
expect(e.output.statusCode).toBe(400);
@ -432,7 +437,7 @@ describe('create', () => {
});
it(`Returns an error if postNewCase throws`, async () => {
const postCase: CaseClientPostRequest = {
const postCase: CasesClientPostRequest = {
description: 'Throw an error',
title: 'Super Bad Security Issue',
tags: ['error'],
@ -450,9 +455,9 @@ describe('create', () => {
const savedObjectsClient = createMockSavedObjectsRepository({
caseSavedObject: mockCases,
});
const caseClient = await createCaseClientWithMockSavedObjectsClient({ savedObjectsClient });
const casesClient = await createCasesClientWithMockSavedObjectsClient({ savedObjectsClient });
return caseClient.client.create(postCase).catch((e) => {
return casesClient.client.create(postCase).catch((e) => {
expect(e).not.toBeNull();
expect(isCaseError(e)).toBeTruthy();
const boomErr = e.boomify();

View file

@ -18,7 +18,7 @@ import {
excess,
CaseResponseRt,
CaseResponse,
CaseClientPostRequestRt,
CasesClientPostRequestRt,
CasePostRequest,
CaseType,
User,
@ -62,7 +62,7 @@ export const create = async ({
const { type = CaseType.individual, ...nonTypeCaseFields } = theCase;
const query = pipe(
// decode with the defaulted type field
excess(CaseClientPostRequestRt).decode({ type, ...nonTypeCaseFields }),
excess(CasesClientPostRequestRt).decode({ type, ...nonTypeCaseFields }),
fold(throwErrors(Boom.badRequest), identity)
);

View file

@ -38,7 +38,7 @@ import {
CaseServiceSetup,
CaseUserActionServiceSetup,
} from '../../services';
import { CaseClientHandler } from '../client';
import { CasesClientHandler } from '../client';
import { createCaseError } from '../../common/error';
/**
@ -65,7 +65,7 @@ interface PushParams {
user: User;
caseId: string;
connectorId: string;
caseClient: CaseClientHandler;
casesClient: CasesClientHandler;
actionsClient: ActionsClient;
logger: Logger;
}
@ -75,7 +75,7 @@ export const push = async ({
caseService,
caseConfigureService,
userActionService,
caseClient,
casesClient,
actionsClient,
connectorId,
caseId,
@ -92,9 +92,9 @@ export const push = async ({
try {
[theCase, connector, userActions] = await Promise.all([
caseClient.get({ id: caseId, includeComments: true, includeSubCaseComments: true }),
casesClient.get({ id: caseId, includeComments: true, includeSubCaseComments: true }),
actionsClient.get({ id: connectorId }),
caseClient.getUserActions({ caseId }),
casesClient.getUserActions({ caseId }),
]);
} catch (e) {
const message = `Error getting case and/or connector and/or user actions: ${e.message}`;
@ -111,7 +111,7 @@ export const push = async ({
const alertsInfo = getAlertInfoFromComments(theCase?.comments);
try {
alerts = await caseClient.getAlerts({
alerts = await casesClient.getAlerts({
alertsInfo,
});
} catch (e) {
@ -123,7 +123,7 @@ export const push = async ({
}
try {
connectorMappings = await caseClient.getMappings({
connectorMappings = await casesClient.getMappings({
actionsClient,
connectorId: connector.id,
connectorType: connector.actionTypeId,

View file

@ -13,7 +13,7 @@ import {
mockCases,
mockCaseComments,
} from '../../routes/api/__fixtures__';
import { createCaseClientWithMockSavedObjectsClient } from '../mocks';
import { createCasesClientWithMockSavedObjectsClient } from '../mocks';
describe('update', () => {
beforeEach(async () => {
@ -40,8 +40,8 @@ describe('update', () => {
caseSavedObject: mockCases,
});
const caseClient = await createCaseClientWithMockSavedObjectsClient({ savedObjectsClient });
const res = await caseClient.client.update(patchCases);
const casesClient = await createCasesClientWithMockSavedObjectsClient({ savedObjectsClient });
const res = await casesClient.client.update(patchCases);
expect(res).toMatchInlineSnapshot(`
Array [
@ -93,7 +93,7 @@ describe('update', () => {
`);
expect(
caseClient.services.userActionService.postUserActions.mock.calls[0][0].actions
casesClient.services.userActionService.postUserActions.mock.calls[0][0].actions
).toEqual([
{
attributes: {
@ -140,8 +140,8 @@ describe('update', () => {
],
});
const caseClient = await createCaseClientWithMockSavedObjectsClient({ savedObjectsClient });
const res = await caseClient.client.update(patchCases);
const casesClient = await createCasesClientWithMockSavedObjectsClient({ savedObjectsClient });
const res = await casesClient.client.update(patchCases);
expect(res).toMatchInlineSnapshot(`
Array [
@ -204,8 +204,8 @@ describe('update', () => {
caseSavedObject: mockCases,
});
const caseClient = await createCaseClientWithMockSavedObjectsClient({ savedObjectsClient });
const res = await caseClient.client.update(patchCases);
const casesClient = await createCasesClientWithMockSavedObjectsClient({ savedObjectsClient });
const res = await casesClient.client.update(patchCases);
expect(res).toMatchInlineSnapshot(`
Array [
@ -272,8 +272,8 @@ describe('update', () => {
caseSavedObject: [mockCaseNoConnectorId],
});
const caseClient = await createCaseClientWithMockSavedObjectsClient({ savedObjectsClient });
const res = await caseClient.client.update(patchCases);
const casesClient = await createCasesClientWithMockSavedObjectsClient({ savedObjectsClient });
const res = await casesClient.client.update(patchCases);
expect(res).toMatchInlineSnapshot(`
Array [
@ -344,8 +344,8 @@ describe('update', () => {
caseSavedObject: mockCases,
});
const caseClient = await createCaseClientWithMockSavedObjectsClient({ savedObjectsClient });
const res = await caseClient.client.update(patchCases);
const casesClient = await createCasesClientWithMockSavedObjectsClient({ savedObjectsClient });
const res = await casesClient.client.update(patchCases);
expect(res).toMatchInlineSnapshot(`
Array [
@ -424,12 +424,12 @@ describe('update', () => {
],
});
const caseClient = await createCaseClientWithMockSavedObjectsClient({ savedObjectsClient });
caseClient.client.updateAlertsStatus = jest.fn();
const casesClient = await createCasesClientWithMockSavedObjectsClient({ savedObjectsClient });
casesClient.client.updateAlertsStatus = jest.fn();
await caseClient.client.update(patchCases);
await casesClient.client.update(patchCases);
expect(caseClient.client.updateAlertsStatus).toHaveBeenCalledWith({
expect(casesClient.client.updateAlertsStatus).toHaveBeenCalledWith({
alerts: [
{
id: 'test-id',
@ -461,11 +461,11 @@ describe('update', () => {
caseCommentSavedObject: [{ ...mockCaseComments[3] }],
});
const caseClient = await createCaseClientWithMockSavedObjectsClient({ savedObjectsClient });
const casesClient = await createCasesClientWithMockSavedObjectsClient({ savedObjectsClient });
await caseClient.client.update(patchCases);
await casesClient.client.update(patchCases);
expect(caseClient.esClient.bulk).not.toHaveBeenCalled();
expect(casesClient.esClient.bulk).not.toHaveBeenCalled();
});
test('it updates alert status when syncAlerts is turned on', async () => {
@ -489,12 +489,12 @@ describe('update', () => {
caseCommentSavedObject: [{ ...mockCaseComments[3] }],
});
const caseClient = await createCaseClientWithMockSavedObjectsClient({ savedObjectsClient });
caseClient.client.updateAlertsStatus = jest.fn();
const casesClient = await createCasesClientWithMockSavedObjectsClient({ savedObjectsClient });
casesClient.client.updateAlertsStatus = jest.fn();
await caseClient.client.update(patchCases);
await casesClient.client.update(patchCases);
expect(caseClient.client.updateAlertsStatus).toHaveBeenCalledWith({
expect(casesClient.client.updateAlertsStatus).toHaveBeenCalledWith({
alerts: [{ id: 'test-id', index: 'test-index', status: 'open' }],
});
});
@ -515,11 +515,11 @@ describe('update', () => {
caseCommentSavedObject: [{ ...mockCaseComments[3] }],
});
const caseClient = await createCaseClientWithMockSavedObjectsClient({ savedObjectsClient });
const casesClient = await createCasesClientWithMockSavedObjectsClient({ savedObjectsClient });
await caseClient.client.update(patchCases);
await casesClient.client.update(patchCases);
expect(caseClient.esClient.bulk).not.toHaveBeenCalled();
expect(casesClient.esClient.bulk).not.toHaveBeenCalled();
});
test('it updates alert status for multiple cases', async () => {
@ -572,12 +572,12 @@ describe('update', () => {
],
});
const caseClient = await createCaseClientWithMockSavedObjectsClient({ savedObjectsClient });
caseClient.client.updateAlertsStatus = jest.fn();
const casesClient = await createCasesClientWithMockSavedObjectsClient({ savedObjectsClient });
casesClient.client.updateAlertsStatus = jest.fn();
await caseClient.client.update(patchCases);
await casesClient.client.update(patchCases);
expect(caseClient.client.updateAlertsStatus).toHaveBeenCalledWith({
expect(casesClient.client.updateAlertsStatus).toHaveBeenCalledWith({
alerts: [
{ id: 'test-id', index: 'test-index', status: 'open' },
{ id: 'test-id-2', index: 'test-index-2', status: 'closed' },
@ -600,11 +600,11 @@ describe('update', () => {
caseSavedObject: mockCases,
});
const caseClient = await createCaseClientWithMockSavedObjectsClient({ savedObjectsClient });
const casesClient = await createCasesClientWithMockSavedObjectsClient({ savedObjectsClient });
await caseClient.client.update(patchCases);
await casesClient.client.update(patchCases);
expect(caseClient.esClient.bulk).not.toHaveBeenCalled();
expect(casesClient.esClient.bulk).not.toHaveBeenCalled();
});
});
@ -629,9 +629,9 @@ describe('update', () => {
caseSavedObject: mockCases,
});
const caseClient = await createCaseClientWithMockSavedObjectsClient({ savedObjectsClient });
const casesClient = await createCasesClientWithMockSavedObjectsClient({ savedObjectsClient });
return (
caseClient.client
casesClient.client
// @ts-expect-error
.update({ cases: patchCases })
.catch((e) => {
@ -662,9 +662,9 @@ describe('update', () => {
caseSavedObject: mockCases,
});
const caseClient = await createCaseClientWithMockSavedObjectsClient({ savedObjectsClient });
const casesClient = await createCasesClientWithMockSavedObjectsClient({ savedObjectsClient });
return (
caseClient.client
casesClient.client
// @ts-expect-error
.update({ cases: patchCases })
.catch((e) => {
@ -691,8 +691,8 @@ describe('update', () => {
caseSavedObject: mockCases,
});
const caseClient = await createCaseClientWithMockSavedObjectsClient({ savedObjectsClient });
return caseClient.client.update(patchCases).catch((e) => {
const casesClient = await createCasesClientWithMockSavedObjectsClient({ savedObjectsClient });
return casesClient.client.update(patchCases).catch((e) => {
expect(e).not.toBeNull();
expect(isCaseError(e)).toBeTruthy();
const boomErr = e.boomify();
@ -723,8 +723,8 @@ describe('update', () => {
caseSavedObject: mockCases,
});
const caseClient = await createCaseClientWithMockSavedObjectsClient({ savedObjectsClient });
return caseClient.client.update(patchCases).catch((e) => {
const casesClient = await createCasesClientWithMockSavedObjectsClient({ savedObjectsClient });
return casesClient.client.update(patchCases).catch((e) => {
expect(e).not.toBeNull();
expect(isCaseError(e)).toBeTruthy();
const boomErr = e.boomify();
@ -752,8 +752,8 @@ describe('update', () => {
caseSavedObject: mockCases,
});
const caseClient = await createCaseClientWithMockSavedObjectsClient({ savedObjectsClient });
return caseClient.client.update(patchCases).catch((e) => {
const casesClient = await createCasesClientWithMockSavedObjectsClient({ savedObjectsClient });
return casesClient.client.update(patchCases).catch((e) => {
expect(e).not.toBeNull();
expect(isCaseError(e)).toBeTruthy();
const boomErr = e.boomify();

View file

@ -51,7 +51,7 @@ import {
CASE_SAVED_OBJECT,
SUB_CASE_SAVED_OBJECT,
} from '../../saved_object_types';
import { CaseClientHandler } from '..';
import { CasesClientHandler } from '..';
import { createAlertUpdateRequest } from '../../common';
import { UpdateAlertRequest } from '../types';
import { createCaseError } from '../../common/error';
@ -254,14 +254,14 @@ async function updateAlerts({
casesMap,
caseService,
client,
caseClient,
casesClient,
}: {
casesWithSyncSettingChangedToOn: ESCasePatchRequest[];
casesWithStatusChangedAndSynced: ESCasePatchRequest[];
casesMap: Map<string, SavedObject<ESCaseAttributes>>;
caseService: CaseServiceSetup;
client: SavedObjectsClientContract;
caseClient: CaseClientHandler;
casesClient: CasesClientHandler;
}) {
/**
* It's possible that a case ID can appear multiple times in each array. I'm intentionally placing the status changes
@ -309,7 +309,7 @@ async function updateAlerts({
[]
);
await caseClient.updateAlertsStatus({ alerts: alertsToUpdate });
await casesClient.updateAlertsStatus({ alerts: alertsToUpdate });
}
interface UpdateArgs {
@ -317,7 +317,7 @@ interface UpdateArgs {
caseService: CaseServiceSetup;
userActionService: CaseUserActionServiceSetup;
user: User;
caseClient: CaseClientHandler;
casesClient: CasesClientHandler;
cases: CasesPatchRequest;
logger: Logger;
}
@ -327,7 +327,7 @@ export const update = async ({
caseService,
userActionService,
user,
caseClient,
casesClient,
cases,
logger,
}: UpdateArgs): Promise<CasesResponse> => {
@ -470,7 +470,7 @@ export const update = async ({
casesWithSyncSettingChangedToOn,
caseService,
client: savedObjectsClient,
caseClient,
casesClient,
casesMap,
});

View file

@ -23,7 +23,7 @@ import {
} from '../../../common/api';
import { ActionsClient } from '../../../../actions/server';
import { externalServiceFormatters, FormatterConnectorTypes } from '../../connectors';
import { CaseClientGetAlertsResponse } from '../../client/alerts/types';
import { CasesClientGetAlertsResponse } from '../../client/alerts/types';
import {
BasicParams,
EntityInformation,
@ -46,7 +46,7 @@ interface CreateIncidentArgs {
userActions: CaseUserActionsResponse;
connector: ActionConnector;
mappings: ConnectorMappingsAttributes[];
alerts: CaseClientGetAlertsResponse;
alerts: CasesClientGetAlertsResponse;
}
export const getLatestPushInfo = (
@ -210,22 +210,22 @@ export const FIELD_INFORMATION = (
) => {
switch (mode) {
case 'create':
return i18n.translate('xpack.case.connectors.case.externalIncidentCreated', {
return i18n.translate('xpack.cases.connectors.cases.externalIncidentCreated', {
values: { date, user },
defaultMessage: '(created at {date} by {user})',
});
case 'update':
return i18n.translate('xpack.case.connectors.case.externalIncidentUpdated', {
return i18n.translate('xpack.cases.connectors.cases.externalIncidentUpdated', {
values: { date, user },
defaultMessage: '(updated at {date} by {user})',
});
case 'add':
return i18n.translate('xpack.case.connectors.case.externalIncidentAdded', {
return i18n.translate('xpack.cases.connectors.cases.externalIncidentAdded', {
values: { date, user },
defaultMessage: '(added at {date} by {user})',
});
default:
return i18n.translate('xpack.case.connectors.case.externalIncidentDefault', {
return i18n.translate('xpack.cases.connectors.cases.externalIncidentDefault', {
values: { date, user },
defaultMessage: '(created at {date} by {user})',
});

View file

@ -7,16 +7,16 @@
import { ElasticsearchClient, SavedObjectsClientContract, Logger } from 'src/core/server';
import {
CaseClientFactoryArguments,
CaseClient,
CasesClientFactoryArguments,
CasesClient,
ConfigureFields,
MappingsClient,
CaseClientUpdateAlertsStatus,
CaseClientAddComment,
CaseClientGet,
CaseClientGetUserActions,
CaseClientGetAlerts,
CaseClientPush,
CasesClientUpdateAlertsStatus,
CasesClientAddComment,
CasesClientGet,
CasesClientGetUserActions,
CasesClientGetAlerts,
CasesClientPush,
} from './types';
import { create } from './cases/create';
import { update } from './cases/update';
@ -41,7 +41,7 @@ import { createCaseError } from '../common/error';
/**
* This class is a pass through for common case functionality (like creating, get a case).
*/
export class CaseClientHandler implements CaseClient {
export class CasesClientHandler implements CasesClient {
private readonly _scopedClusterClient: ElasticsearchClient;
private readonly _caseConfigureService: CaseConfigureServiceSetup;
private readonly _caseService: CaseServiceSetup;
@ -52,7 +52,7 @@ export class CaseClientHandler implements CaseClient {
private readonly _alertsService: AlertServiceContract;
private readonly logger: Logger;
constructor(clientArgs: CaseClientFactoryArguments) {
constructor(clientArgs: CasesClientFactoryArguments) {
this._scopedClusterClient = clientArgs.scopedClusterClient;
this._caseConfigureService = clientArgs.caseConfigureService;
this._caseService = clientArgs.caseService;
@ -92,7 +92,7 @@ export class CaseClientHandler implements CaseClient {
userActionService: this._userActionService,
user: this.user,
cases,
caseClient: this,
casesClient: this,
logger: this.logger,
});
} catch (error) {
@ -108,13 +108,13 @@ export class CaseClientHandler implements CaseClient {
}
}
public async addComment({ caseId, comment }: CaseClientAddComment) {
public async addComment({ caseId, comment }: CasesClientAddComment) {
try {
return addComment({
savedObjectsClient: this._savedObjectsClient,
caseService: this._caseService,
userActionService: this._userActionService,
caseClient: this,
casesClient: this,
caseId,
comment,
user: this.user,
@ -147,7 +147,7 @@ export class CaseClientHandler implements CaseClient {
...args,
savedObjectsClient: this._savedObjectsClient,
connectorMappingsService: this._connectorMappingsService,
caseClient: this,
casesClient: this,
logger: this.logger,
});
} catch (error) {
@ -159,7 +159,7 @@ export class CaseClientHandler implements CaseClient {
}
}
public async updateAlertsStatus(args: CaseClientUpdateAlertsStatus) {
public async updateAlertsStatus(args: CasesClientUpdateAlertsStatus) {
try {
return updateAlertsStatus({
...args,
@ -178,7 +178,7 @@ export class CaseClientHandler implements CaseClient {
}
}
public async get(args: CaseClientGet) {
public async get(args: CasesClientGet) {
try {
return get({
...args,
@ -192,7 +192,7 @@ export class CaseClientHandler implements CaseClient {
}
}
public async getUserActions(args: CaseClientGetUserActions) {
public async getUserActions(args: CasesClientGetUserActions) {
try {
return getUserActions({
...args,
@ -208,7 +208,7 @@ export class CaseClientHandler implements CaseClient {
}
}
public async getAlerts(args: CaseClientGetAlerts) {
public async getAlerts(args: CasesClientGetAlerts) {
try {
return getAlerts({
...args,
@ -227,7 +227,7 @@ export class CaseClientHandler implements CaseClient {
}
}
public async push(args: CaseClientPush) {
public async push(args: CasesClientPush) {
try {
return push({
...args,
@ -235,7 +235,7 @@ export class CaseClientHandler implements CaseClient {
caseService: this._caseService,
userActionService: this._userActionService,
user: this.user,
caseClient: this,
casesClient: this,
caseConfigureService: this._caseConfigureService,
logger: this.logger,
});

View file

@ -13,7 +13,7 @@ import {
mockCaseComments,
mockCases,
} from '../../routes/api/__fixtures__';
import { createCaseClientWithMockSavedObjectsClient } from '../mocks';
import { createCasesClientWithMockSavedObjectsClient } from '../mocks';
type AlertComment = CommentType.alert | CommentType.generatedAlert;
@ -33,8 +33,8 @@ describe('addComment', () => {
caseCommentSavedObject: mockCaseComments,
});
const caseClient = await createCaseClientWithMockSavedObjectsClient({ savedObjectsClient });
const res = await caseClient.client.addComment({
const casesClient = await createCasesClientWithMockSavedObjectsClient({ savedObjectsClient });
const res = await casesClient.client.addComment({
caseId: 'mock-id-1',
comment: {
comment: 'Wow, good luck catching that bad meanie!',
@ -71,8 +71,8 @@ describe('addComment', () => {
caseCommentSavedObject: mockCaseComments,
});
const caseClient = await createCaseClientWithMockSavedObjectsClient({ savedObjectsClient });
const res = await caseClient.client.addComment({
const casesClient = await createCasesClientWithMockSavedObjectsClient({ savedObjectsClient });
const res = await casesClient.client.addComment({
caseId: 'mock-id-1',
comment: {
type: CommentType.alert,
@ -119,8 +119,8 @@ describe('addComment', () => {
caseCommentSavedObject: mockCaseComments,
});
const caseClient = await createCaseClientWithMockSavedObjectsClient({ savedObjectsClient });
const res = await caseClient.client.addComment({
const casesClient = await createCasesClientWithMockSavedObjectsClient({ savedObjectsClient });
const res = await casesClient.client.addComment({
caseId: 'mock-id-1',
comment: {
comment: 'Wow, good luck catching that bad meanie!',
@ -142,8 +142,8 @@ describe('addComment', () => {
caseCommentSavedObject: mockCaseComments,
});
const caseClient = await createCaseClientWithMockSavedObjectsClient({ savedObjectsClient });
await caseClient.client.addComment({
const casesClient = await createCasesClientWithMockSavedObjectsClient({ savedObjectsClient });
await casesClient.client.addComment({
caseId: 'mock-id-1',
comment: {
comment: 'Wow, good luck catching that bad meanie!',
@ -152,7 +152,7 @@ describe('addComment', () => {
});
expect(
caseClient.services.userActionService.postUserActions.mock.calls[0][0].actions
casesClient.services.userActionService.postUserActions.mock.calls[0][0].actions
).toEqual([
{
attributes: {
@ -189,11 +189,11 @@ describe('addComment', () => {
caseCommentSavedObject: mockCaseComments,
});
const caseClient = await createCaseClientWithMockSavedObjectsClient({
const casesClient = await createCasesClientWithMockSavedObjectsClient({
savedObjectsClient,
badAuth: true,
});
const res = await caseClient.client.addComment({
const res = await casesClient.client.addComment({
caseId: 'mock-id-1',
comment: {
comment: 'Wow, good luck catching that bad meanie!',
@ -229,14 +229,14 @@ describe('addComment', () => {
caseCommentSavedObject: mockCaseComments,
});
const caseClient = await createCaseClientWithMockSavedObjectsClient({
const casesClient = await createCasesClientWithMockSavedObjectsClient({
savedObjectsClient,
badAuth: true,
});
caseClient.client.updateAlertsStatus = jest.fn();
casesClient.client.updateAlertsStatus = jest.fn();
await caseClient.client.addComment({
await casesClient.client.addComment({
caseId: 'mock-id-1',
comment: {
type: CommentType.alert,
@ -249,7 +249,7 @@ describe('addComment', () => {
},
});
expect(caseClient.client.updateAlertsStatus).toHaveBeenCalledWith({
expect(casesClient.client.updateAlertsStatus).toHaveBeenCalledWith({
alerts: [{ id: 'test-alert', index: 'test-index', status: 'open' }],
});
});
@ -265,14 +265,14 @@ describe('addComment', () => {
caseCommentSavedObject: mockCaseComments,
});
const caseClient = await createCaseClientWithMockSavedObjectsClient({
const casesClient = await createCasesClientWithMockSavedObjectsClient({
savedObjectsClient,
badAuth: true,
});
caseClient.client.updateAlertsStatus = jest.fn();
casesClient.client.updateAlertsStatus = jest.fn();
await caseClient.client.addComment({
await casesClient.client.addComment({
caseId: 'mock-id-1',
comment: {
type: CommentType.alert,
@ -285,7 +285,7 @@ describe('addComment', () => {
},
});
expect(caseClient.client.updateAlertsStatus).not.toHaveBeenCalled();
expect(casesClient.client.updateAlertsStatus).not.toHaveBeenCalled();
});
});
@ -297,8 +297,8 @@ describe('addComment', () => {
caseSavedObject: mockCases,
caseCommentSavedObject: mockCaseComments,
});
const caseClient = await createCaseClientWithMockSavedObjectsClient({ savedObjectsClient });
return caseClient.client
const casesClient = await createCasesClientWithMockSavedObjectsClient({ savedObjectsClient });
return casesClient.client
.addComment({
caseId: 'mock-id-1',
// @ts-expect-error
@ -319,7 +319,7 @@ describe('addComment', () => {
caseCommentSavedObject: mockCaseComments,
});
const caseClient = await createCaseClientWithMockSavedObjectsClient({ savedObjectsClient });
const casesClient = await createCasesClientWithMockSavedObjectsClient({ savedObjectsClient });
const allRequestAttributes = {
type: CommentType.user,
comment: 'a comment',
@ -327,7 +327,7 @@ describe('addComment', () => {
['comment'].forEach((attribute) => {
const requestAttributes = omit(attribute, allRequestAttributes);
return caseClient.client
return casesClient.client
.addComment({
caseId: 'mock-id-1',
// @ts-expect-error
@ -351,10 +351,10 @@ describe('addComment', () => {
caseCommentSavedObject: mockCaseComments,
});
const caseClient = await createCaseClientWithMockSavedObjectsClient({ savedObjectsClient });
const casesClient = await createCasesClientWithMockSavedObjectsClient({ savedObjectsClient });
['alertId', 'index'].forEach((attribute) => {
return caseClient.client
return casesClient.client
.addComment({
caseId: 'mock-id-1',
comment: {
@ -379,7 +379,7 @@ describe('addComment', () => {
caseCommentSavedObject: mockCaseComments,
});
const caseClient = await createCaseClientWithMockSavedObjectsClient({ savedObjectsClient });
const casesClient = await createCasesClientWithMockSavedObjectsClient({ savedObjectsClient });
const allRequestAttributes = {
type: CommentType.alert,
index: 'test-index',
@ -388,7 +388,7 @@ describe('addComment', () => {
['alertId', 'index'].forEach((attribute) => {
const requestAttributes = omit(attribute, allRequestAttributes);
return caseClient.client
return casesClient.client
.addComment({
caseId: 'mock-id-1',
// @ts-expect-error
@ -412,10 +412,10 @@ describe('addComment', () => {
caseCommentSavedObject: mockCaseComments,
});
const caseClient = await createCaseClientWithMockSavedObjectsClient({ savedObjectsClient });
const casesClient = await createCasesClientWithMockSavedObjectsClient({ savedObjectsClient });
['comment'].forEach((attribute) => {
return caseClient.client
return casesClient.client
.addComment({
caseId: 'mock-id-1',
comment: {
@ -444,8 +444,8 @@ describe('addComment', () => {
caseSavedObject: mockCases,
caseCommentSavedObject: mockCaseComments,
});
const caseClient = await createCaseClientWithMockSavedObjectsClient({ savedObjectsClient });
return caseClient.client
const casesClient = await createCasesClientWithMockSavedObjectsClient({ savedObjectsClient });
return casesClient.client
.addComment({
caseId: 'not-exists',
comment: {
@ -469,8 +469,8 @@ describe('addComment', () => {
caseSavedObject: mockCases,
caseCommentSavedObject: mockCaseComments,
});
const caseClient = await createCaseClientWithMockSavedObjectsClient({ savedObjectsClient });
return caseClient.client
const casesClient = await createCasesClientWithMockSavedObjectsClient({ savedObjectsClient });
return casesClient.client
.addComment({
caseId: 'mock-id-1',
comment: {
@ -495,8 +495,8 @@ describe('addComment', () => {
caseCommentSavedObject: mockCaseComments,
});
const caseClient = await createCaseClientWithMockSavedObjectsClient({ savedObjectsClient });
return caseClient.client
const casesClient = await createCasesClientWithMockSavedObjectsClient({ savedObjectsClient });
return casesClient.client
.addComment({
caseId: 'mock-id-4',
comment: {
@ -534,11 +534,11 @@ describe('addComment', () => {
caseCommentSavedObject: mockCaseComments,
});
const caseClient = await createCaseClientWithMockSavedObjectsClient({
const casesClient = await createCasesClientWithMockSavedObjectsClient({
savedObjectsClient,
});
await expect(
caseClient.client.addComment({
casesClient.client.addComment({
caseId: 'mock-id-4',
comment: {
// casting because type must be either alert or generatedAlert but type is CommentType
@ -568,11 +568,11 @@ describe('addComment', () => {
caseCommentSavedObject: mockCaseComments,
});
const caseClient = await createCaseClientWithMockSavedObjectsClient({
const casesClient = await createCasesClientWithMockSavedObjectsClient({
savedObjectsClient,
});
await expect(
caseClient.client.addComment({
casesClient.client.addComment({
caseId: 'mock-id-1',
comment: {
// casting because type must be either alert or generatedAlert but type is CommentType

View file

@ -33,7 +33,7 @@ import {
import { CaseServiceSetup, CaseUserActionServiceSetup } from '../../services';
import { CommentableCase, createAlertUpdateRequest } from '../../common';
import { CaseClientHandler } from '..';
import { CasesClientHandler } from '..';
import { createCaseError } from '../../common/error';
import { CASE_COMMENT_SAVED_OBJECT } from '../../saved_object_types';
import { MAX_GENERATED_ALERTS_PER_SUB_CASE } from '../../../common/constants';
@ -95,7 +95,7 @@ async function getSubCase({
}
interface AddCommentFromRuleArgs {
caseClient: CaseClientHandler;
casesClient: CasesClientHandler;
caseId: string;
comment: CommentRequestAlertType;
savedObjectsClient: SavedObjectsClientContract;
@ -108,7 +108,7 @@ const addGeneratedAlerts = async ({
savedObjectsClient,
caseService,
userActionService,
caseClient,
casesClient,
caseId,
comment,
logger,
@ -177,7 +177,7 @@ const addGeneratedAlerts = async ({
comment: query,
status: subCase.attributes.status,
});
await caseClient.updateAlertsStatus({
await casesClient.updateAlertsStatus({
alerts: alertsToUpdate,
});
}
@ -261,7 +261,7 @@ async function getCombinedCase({
}
interface AddCommentArgs {
caseClient: CaseClientHandler;
casesClient: CasesClientHandler;
caseId: string;
comment: CommentRequest;
savedObjectsClient: SavedObjectsClientContract;
@ -275,7 +275,7 @@ export const addComment = async ({
savedObjectsClient,
caseService,
userActionService,
caseClient,
casesClient,
caseId,
comment,
user,
@ -290,7 +290,7 @@ export const addComment = async ({
return addGeneratedAlerts({
caseId,
comment,
caseClient,
casesClient,
savedObjectsClient,
userActionService,
caseService,
@ -329,7 +329,7 @@ export const addComment = async ({
status: updatedCase.status,
});
await caseClient.updateAlertsStatus({
await casesClient.updateAlertsStatus({
alerts: alertsToUpdate,
});
}

View file

@ -8,7 +8,7 @@
import { ConnectorTypes } from '../../../common/api';
import { createMockSavedObjectsRepository, mockCaseMappings } from '../../routes/api/__fixtures__';
import { createCaseClientWithMockSavedObjectsClient } from '../mocks';
import { createCasesClientWithMockSavedObjectsClient } from '../mocks';
import { actionsClientMock } from '../../../../actions/server/actions_client.mock';
import { actionsErrResponse, mappings, mockGetFieldsResponse } from './mock';
describe('get_fields', () => {
@ -23,8 +23,8 @@ describe('get_fields', () => {
const savedObjectsClient = createMockSavedObjectsRepository({
caseMappingsSavedObject: mockCaseMappings,
});
const caseClient = await createCaseClientWithMockSavedObjectsClient({ savedObjectsClient });
const res = await caseClient.client.getFields({
const casesClient = await createCasesClientWithMockSavedObjectsClient({ savedObjectsClient });
const res = await casesClient.client.getFields({
actionsClient: actionsMock,
connectorType: ConnectorTypes.jira,
connectorId: '123',
@ -44,8 +44,8 @@ describe('get_fields', () => {
const savedObjectsClient = createMockSavedObjectsRepository({
caseMappingsSavedObject: mockCaseMappings,
});
const caseClient = await createCaseClientWithMockSavedObjectsClient({ savedObjectsClient });
await caseClient.client
const casesClient = await createCasesClientWithMockSavedObjectsClient({ savedObjectsClient });
await casesClient.client
.getFields({
actionsClient: { ...actionsMock, execute: jest.fn().mockReturnValue(actionsErrResponse) },
connectorType: ConnectorTypes.jira,

View file

@ -8,7 +8,7 @@
import { ConnectorTypes } from '../../../common/api';
import { createMockSavedObjectsRepository, mockCaseMappings } from '../../routes/api/__fixtures__';
import { createCaseClientWithMockSavedObjectsClient } from '../mocks';
import { createCasesClientWithMockSavedObjectsClient } from '../mocks';
import { actionsClientMock } from '../../../../actions/server/actions_client.mock';
import { mappings, mockGetFieldsResponse } from './mock';
@ -28,8 +28,8 @@ describe('get_mappings', () => {
const savedObjectsClient = createMockSavedObjectsRepository({
caseMappingsSavedObject: mockCaseMappings,
});
const caseClient = await createCaseClientWithMockSavedObjectsClient({ savedObjectsClient });
const res = await caseClient.client.getMappings({
const casesClient = await createCasesClientWithMockSavedObjectsClient({ savedObjectsClient });
const res = await casesClient.client.getMappings({
actionsClient: actionsMock,
connectorType: ConnectorTypes.jira,
connectorId: '123',
@ -41,8 +41,8 @@ describe('get_mappings', () => {
const savedObjectsClient = createMockSavedObjectsRepository({
caseMappingsSavedObject: [],
});
const caseClient = await createCaseClientWithMockSavedObjectsClient({ savedObjectsClient });
const res = await caseClient.client.getMappings({
const casesClient = await createCasesClientWithMockSavedObjectsClient({ savedObjectsClient });
const res = await casesClient.client.getMappings({
actionsClient: actionsMock,
connectorType: ConnectorTypes.jira,
connectorId: '123',

View file

@ -11,14 +11,14 @@ import { ConnectorMappingsAttributes, ConnectorTypes } from '../../../common/api
// eslint-disable-next-line @kbn/eslint/no-restricted-paths
import { ACTION_SAVED_OBJECT_TYPE } from '../../../../actions/server/saved_objects';
import { ConnectorMappingsServiceSetup } from '../../services';
import { CaseClientHandler } from '..';
import { CasesClientHandler } from '..';
import { createCaseError } from '../../common/error';
interface GetMappingsArgs {
savedObjectsClient: SavedObjectsClientContract;
connectorMappingsService: ConnectorMappingsServiceSetup;
actionsClient: ActionsClient;
caseClient: CaseClientHandler;
casesClient: CasesClientHandler;
connectorType: string;
connectorId: string;
logger: Logger;
@ -28,7 +28,7 @@ export const getMappings = async ({
savedObjectsClient,
connectorMappingsService,
actionsClient,
caseClient,
casesClient,
connectorType,
connectorId,
logger,
@ -49,7 +49,7 @@ export const getMappings = async ({
let theMapping;
// Create connector mappings if there are none
if (myConnectorMappings.total === 0) {
const res = await caseClient.getFields({
const res = await casesClient.getFields({
actionsClient,
connectorId,
connectorType,

View file

@ -20,8 +20,8 @@ import {
} from '../services/mocks';
jest.mock('./client');
import { CaseClientHandler } from './client';
import { createExternalCaseClient } from './index';
import { CasesClientHandler } from './client';
import { createExternalCasesClient } from './index';
const logger = loggingSystemMock.create().get('case');
const esClient = elasticsearchServiceMock.createElasticsearchClient();
@ -32,9 +32,9 @@ const connectorMappingsService = connectorMappingsServiceMock();
const savedObjectsClient = savedObjectsClientMock.create();
const userActionService = createUserActionServiceMock();
describe('createExternalCaseClient()', () => {
describe('createExternalCasesClient()', () => {
test('it creates the client correctly', async () => {
createExternalCaseClient({
createExternalCasesClient({
scopedClusterClient: esClient,
alertsService,
caseConfigureService,
@ -45,6 +45,6 @@ describe('createExternalCaseClient()', () => {
userActionService,
logger,
});
expect(CaseClientHandler).toHaveBeenCalledTimes(1);
expect(CasesClientHandler).toHaveBeenCalledTimes(1);
});
});

View file

@ -0,0 +1,20 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
import { CasesClientFactoryArguments, CasesClient } from './types';
import { CasesClientHandler } from './client';
export { CasesClientHandler } from './client';
export { CasesClient } from './types';
/**
* Create a CasesClientHandler to external services (other plugins).
*/
export const createExternalCasesClient = (clientArgs: CasesClientFactoryArguments): CasesClient => {
const client = new CasesClientHandler(clientArgs);
return client;
};

View file

@ -15,12 +15,12 @@ import {
CaseUserActionServiceSetup,
ConnectorMappingsService,
} from '../services';
import { CaseClient } from './types';
import { CasesClient } from './types';
import { authenticationMock } from '../routes/api/__fixtures__';
import { createExternalCaseClient } from '.';
import { createExternalCasesClient } from '.';
export type CaseClientPluginContractMock = jest.Mocked<CaseClient>;
export const createExternalCaseClientMock = (): CaseClientPluginContractMock => ({
export type CasesClientPluginContractMock = jest.Mocked<CasesClient>;
export const createExternalCasesClientMock = (): CasesClientPluginContractMock => ({
addComment: jest.fn(),
create: jest.fn(),
get: jest.fn(),
@ -33,7 +33,7 @@ export const createExternalCaseClientMock = (): CaseClientPluginContractMock =>
updateAlertsStatus: jest.fn(),
});
export const createCaseClientWithMockSavedObjectsClient = async ({
export const createCasesClientWithMockSavedObjectsClient = async ({
savedObjectsClient,
badAuth = false,
omitFromContext = [],
@ -42,7 +42,7 @@ export const createCaseClientWithMockSavedObjectsClient = async ({
badAuth?: boolean;
omitFromContext?: string[];
}): Promise<{
client: CaseClient;
client: CasesClient;
services: {
userActionService: jest.Mocked<CaseUserActionServiceSetup>;
alertsService: jest.Mocked<AlertServiceContract>;
@ -71,7 +71,7 @@ export const createCaseClientWithMockSavedObjectsClient = async ({
getAlerts: jest.fn(),
};
const caseClient = createExternalCaseClient({
const casesClient = createExternalCasesClient({
savedObjectsClient,
user: auth.getCurrentUser(),
caseService,
@ -83,7 +83,7 @@ export const createCaseClientWithMockSavedObjectsClient = async ({
logger: log,
});
return {
client: caseClient,
client: casesClient,
services: { userActionService, alertsService },
esClient,
};

View file

@ -27,34 +27,34 @@ import {
AlertServiceContract,
} from '../services';
import { ConnectorMappingsServiceSetup } from '../services/connector_mappings';
import { CaseClientGetAlertsResponse } from './alerts/types';
import { CasesClientGetAlertsResponse } from './alerts/types';
export interface CaseClientGet {
export interface CasesClientGet {
id: string;
includeComments?: boolean;
includeSubCaseComments?: boolean;
}
export interface CaseClientPush {
export interface CasesClientPush {
actionsClient: ActionsClient;
caseId: string;
connectorId: string;
}
export interface CaseClientAddComment {
export interface CasesClientAddComment {
caseId: string;
comment: CommentRequest;
}
export interface CaseClientUpdateAlertsStatus {
export interface CasesClientUpdateAlertsStatus {
alerts: UpdateAlertRequest[];
}
export interface CaseClientGetAlerts {
export interface CasesClientGetAlerts {
alertsInfo: AlertInfo[];
}
export interface CaseClientGetUserActions {
export interface CasesClientGetUserActions {
caseId: string;
subCaseId?: string;
}
@ -65,7 +65,7 @@ export interface MappingsClient {
connectorType: string;
}
export interface CaseClientFactoryArguments {
export interface CasesClientFactoryArguments {
scopedClusterClient: ElasticsearchClient;
caseConfigureService: CaseConfigureServiceSetup;
caseService: CaseServiceSetup;
@ -95,17 +95,17 @@ export interface UpdateAlertRequest {
/**
* This represents the interface that other plugins can access.
*/
export interface CaseClient {
addComment(args: CaseClientAddComment): Promise<CaseResponse>;
export interface CasesClient {
addComment(args: CasesClientAddComment): Promise<CaseResponse>;
create(theCase: CasePostRequest): Promise<CaseResponse>;
get(args: CaseClientGet): Promise<CaseResponse>;
getAlerts(args: CaseClientGetAlerts): Promise<CaseClientGetAlertsResponse>;
get(args: CasesClientGet): Promise<CaseResponse>;
getAlerts(args: CasesClientGetAlerts): Promise<CasesClientGetAlertsResponse>;
getFields(args: ConfigureFields): Promise<GetFieldsResponse>;
getMappings(args: MappingsClient): Promise<ConnectorMappingsAttributes[]>;
getUserActions(args: CaseClientGetUserActions): Promise<CaseUserActionsResponse>;
push(args: CaseClientPush): Promise<CaseResponse>;
getUserActions(args: CasesClientGetUserActions): Promise<CaseUserActionsResponse>;
push(args: CasesClientPush): Promise<CaseResponse>;
update(args: CasesPatchRequest): Promise<CasesResponse>;
updateAlertsStatus(args: CaseClientUpdateAlertsStatus): Promise<void>;
updateAlertsStatus(args: CasesClientUpdateAlertsStatus): Promise<void>;
}
export interface MappingsClient {

View file

@ -28,12 +28,12 @@ import {
} from '../../services/mocks';
import { CaseActionType, CaseActionTypeExecutorOptions, CaseExecutorParams } from './types';
import { getActionType } from '.';
import { createExternalCaseClientMock } from '../../client/mocks';
import { createExternalCasesClientMock } from '../../client/mocks';
const mockCaseClient = createExternalCaseClientMock();
const mockCasesClient = createExternalCasesClientMock();
jest.mock('../../client', () => ({
createExternalCaseClient: () => mockCaseClient,
createExternalCasesClient: () => mockCasesClient,
}));
const services = actionsMock.createServices();
@ -877,7 +877,7 @@ describe('case connector', () => {
},
};
mockCaseClient.create.mockReturnValue(Promise.resolve(createReturn));
mockCasesClient.create.mockReturnValue(Promise.resolve(createReturn));
const actionId = 'some-id';
const params: CaseExecutorParams = {
@ -913,7 +913,7 @@ describe('case connector', () => {
const result = await caseActionType.executor(executorOptions);
expect(result).toEqual({ actionId, status: 'ok', data: createReturn });
expect(mockCaseClient.create).toHaveBeenCalledWith({
expect(mockCasesClient.create).toHaveBeenCalledWith({
...params.subActionParams,
connector: {
id: 'jira',
@ -974,7 +974,7 @@ describe('case connector', () => {
},
];
mockCaseClient.update.mockReturnValue(Promise.resolve(updateReturn));
mockCasesClient.update.mockReturnValue(Promise.resolve(updateReturn));
const actionId = 'some-id';
const params: CaseExecutorParams = {
@ -1002,7 +1002,7 @@ describe('case connector', () => {
const result = await caseActionType.executor(executorOptions);
expect(result).toEqual({ actionId, status: 'ok', data: updateReturn });
expect(mockCaseClient.update).toHaveBeenCalledWith({
expect(mockCasesClient.update).toHaveBeenCalledWith({
// Null values have been striped out.
cases: [
{
@ -1064,7 +1064,7 @@ describe('case connector', () => {
},
};
mockCaseClient.addComment.mockReturnValue(Promise.resolve(commentReturn));
mockCasesClient.addComment.mockReturnValue(Promise.resolve(commentReturn));
const actionId = 'some-id';
const params: CaseExecutorParams = {
@ -1089,7 +1089,7 @@ describe('case connector', () => {
const result = await caseActionType.executor(executorOptions);
expect(result).toEqual({ actionId, status: 'ok', data: commentReturn });
expect(mockCaseClient.addComment).toHaveBeenCalledWith({
expect(mockCasesClient.addComment).toHaveBeenCalledWith({
caseId: 'case-id',
comment: {
comment: 'a comment',

View file

@ -14,7 +14,7 @@ import {
CommentRequest,
CommentType,
} from '../../../common/api';
import { createExternalCaseClient } from '../../client';
import { createExternalCasesClient } from '../../client';
import { CaseExecutorParamsSchema, CaseConfigurationSchema, CommentSchemaType } from './schema';
import {
CaseExecutorResponse,
@ -75,7 +75,7 @@ async function executor(
let data: CaseExecutorResponse | null = null;
const { savedObjectsClient, scopedClusterClient } = services;
const caseClient = createExternalCaseClient({
const casesClient = createExternalCasesClient({
savedObjectsClient,
scopedClusterClient,
// we might want the user information to be passed as part of the action request
@ -96,7 +96,7 @@ async function executor(
if (subAction === 'create') {
try {
data = await caseClient.create({
data = await casesClient.create({
...(subActionParams as CasePostRequest),
});
} catch (error) {
@ -118,7 +118,7 @@ async function executor(
);
try {
data = await caseClient.update({ cases: [updateParamsWithoutNullValues] });
data = await casesClient.update({ cases: [updateParamsWithoutNullValues] });
} catch (error) {
throw createCaseError({
message: `Failed to update case using connector id: ${updateParamsWithoutNullValues?.id} version: ${updateParamsWithoutNullValues?.version}: ${error}`,
@ -132,7 +132,7 @@ async function executor(
const { caseId, comment } = subActionParams as ExecutorSubActionAddCommentParams;
try {
const formattedComment = transformConnectorComment(comment, logger);
data = await caseClient.addComment({ caseId, comment: formattedComment });
data = await casesClient.addComment({ caseId, comment: formattedComment });
} catch (error) {
throw createCaseError({
message: `Failed to create comment using connector case id: ${caseId}: ${error}`,

View file

@ -7,6 +7,6 @@
import { i18n } from '@kbn/i18n';
export const NAME = i18n.translate('xpack.case.connectors.case.title', {
export const NAME = i18n.translate('xpack.cases.connectors.cases.title', {
defaultMessage: 'Case',
});

View file

@ -14,7 +14,7 @@ import {
// eslint-disable-next-line @kbn/eslint/no-restricted-paths
} from '../../../actions/server/types';
import { CaseResponse, ConnectorTypes } from '../../common/api';
import { CaseClientGetAlertsResponse } from '../client/alerts/types';
import { CasesClientGetAlertsResponse } from '../client/alerts/types';
import {
CaseServiceSetup,
CaseConfigureServiceSetup,
@ -52,7 +52,7 @@ export interface RegisterConnectorsArgs extends GetActionTypeParams {
export type FormatterConnectorTypes = Exclude<ConnectorTypes, ConnectorTypes.none>;
export interface ExternalServiceFormatter<TExternalServiceParams = {}> {
format: (theCase: CaseResponse, alerts: CaseClientGetAlertsResponse) => TExternalServiceParams;
format: (theCase: CaseResponse, alerts: CasesClientGetAlertsResponse) => TExternalServiceParams;
}
export type ExternalServiceFormatterMapper = {

View file

@ -34,7 +34,7 @@ import {
AlertService,
AlertServiceContract,
} from './services';
import { CaseClientHandler, createExternalCaseClient } from './client';
import { CasesClientHandler, createExternalCasesClient } from './client';
import { registerConnectors } from './connectors';
import type { CasesRequestHandlerContext } from './types';
@ -88,7 +88,7 @@ export class CasePlugin {
this.userActionService = await new CaseUserActionService(this.log).setup();
this.alertsService = new AlertService();
core.http.registerRouteHandlerContext<CasesRequestHandlerContext, 'case'>(
core.http.registerRouteHandlerContext<CasesRequestHandlerContext, 'cases'>(
APP_ID,
this.createRouteHandlerContext({
core,
@ -125,12 +125,12 @@ export class CasePlugin {
public start(core: CoreStart) {
this.log.debug(`Starting Case Workflow`);
const getCaseClientWithRequestAndContext = async (
const getCasesClientWithRequestAndContext = async (
context: CasesRequestHandlerContext,
request: KibanaRequest
) => {
const user = await this.caseService!.getUser({ request });
return createExternalCaseClient({
return createExternalCasesClient({
scopedClusterClient: context.core.elasticsearch.client.asCurrentUser,
savedObjectsClient: core.savedObjects.getScopedClient(request),
user,
@ -144,7 +144,7 @@ export class CasePlugin {
};
return {
getCaseClientWithRequestAndContext,
getCasesClientWithRequestAndContext,
};
}
@ -168,13 +168,13 @@ export class CasePlugin {
userActionService: CaseUserActionServiceSetup;
alertsService: AlertServiceContract;
logger: Logger;
}): IContextProvider<CasesRequestHandlerContext, 'case'> => {
}): IContextProvider<CasesRequestHandlerContext, 'cases'> => {
return async (context, request, response) => {
const [{ savedObjects }] = await core.getStartServices();
const user = await caseService.getUser({ request });
return {
getCaseClient: () => {
return new CaseClientHandler({
getCasesClient: () => {
return new CasesClientHandler({
scopedClusterClient: context.core.elasticsearch.client.asCurrentUser,
savedObjectsClient: savedObjects.getScopedClient(request),
caseService,

View file

@ -18,7 +18,7 @@ export const createRoute = async (
const httpService = httpServiceMock.createSetupContract();
const router = httpService.createRouter();
const log = loggingSystemMock.create().get('case');
const log = loggingSystemMock.create().get('cases');
const auth = badAuth ? authenticationMock.createInvalid() : authenticationMock.create();
const caseService = new CaseService(log, auth);
const caseConfigureServicePlugin = new CaseConfigureService(log);

View file

@ -6,7 +6,7 @@
*/
import { elasticsearchServiceMock, loggingSystemMock } from 'src/core/server/mocks';
import { createExternalCaseClient } from '../../../client';
import { createExternalCasesClient } from '../../../client';
import {
AlertService,
CaseService,
@ -42,13 +42,13 @@ export const createRouteContext = async (client: any, badAuth = false) => {
},
},
actions: { getActionsClient: () => actionsMock },
case: {
getCaseClient: () => caseClient,
cases: {
getCasesClient: () => casesClient,
},
} as unknown) as CasesRequestHandlerContext;
const connectorMappingsService = await connectorMappingsServicePlugin.setup();
const caseClient = createExternalCaseClient({
const casesClient = createExternalCasesClient({
savedObjectsClient: client,
user: authc.getCurrentUser(),
caseService,

Some files were not shown because too many files have changed in this diff Show more