Skip to content

Commit 6f976fa

Browse files
committed
streamline DRC methods params interfaces
1 parent dc9be8e commit 6f976fa

29 files changed

Lines changed: 409 additions & 530 deletions

x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/get_prebuilt_rule_base_version/get_prebuilt_rule_base_version_handler.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ export const getPrebuiltRuleBaseVersionHandler = async (
3939
const rulesClient = await ctx.alerting.getRulesClient();
4040
const ruleAssetsClient = createPrebuiltRuleAssetsClient(soClient);
4141

42-
const currentRule = await getRuleById({ rulesClient, id });
42+
const currentRule = await getRuleById({ id, rulesClient });
4343

4444
if (!currentRule) {
4545
throw new Error(`Cannot find rule with id: ${id}`);

x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/perform_rule_upgrade/assert_pick_version_is_target.test.ts

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,10 @@
66
*/
77

88
import { assertPickVersionIsTarget } from './assert_pick_version_is_target';
9-
import type { PickVersionValues, RuleUpgradeSpecifier } from '../../../../../../common/api/detection_engine';
9+
import type {
10+
PickVersionValues,
11+
RuleUpgradeSpecifier,
12+
} from '../../../../../../common/api/detection_engine';
1013

1114
describe('assertPickVersionIsTarget', () => {
1215
const ruleId = 'test-rule-id';
@@ -28,9 +31,7 @@ describe('assertPickVersionIsTarget', () => {
2831
pick_version: 'TARGET',
2932
};
3033

31-
expect(() =>
32-
assertPickVersionIsTarget({ ruleId, ruleUpgradeSpecifier })
33-
).not.toThrow();
34+
expect(() => assertPickVersionIsTarget({ ruleId, ruleUpgradeSpecifier })).not.toThrow();
3435
});
3536

3637
it('should not throw when all pick_version values are TARGET', () => {
@@ -56,9 +57,9 @@ describe('assertPickVersionIsTarget', () => {
5657
const pickVersions: PickVersionValues[] = ['BASE', 'CURRENT', 'MERGED'];
5758

5859
pickVersions.forEach((globalPickVersion) => {
59-
expect(() =>
60-
assertPickVersionIsTarget({ ruleId, globalPickVersion })
61-
).toThrowError(createExpectedError(ruleId));
60+
expect(() => assertPickVersionIsTarget({ ruleId, globalPickVersion })).toThrowError(
61+
createExpectedError(ruleId)
62+
);
6263
});
6364
});
6465

@@ -70,9 +71,9 @@ describe('assertPickVersionIsTarget', () => {
7071
pick_version: 'BASE',
7172
};
7273

73-
expect(() =>
74-
assertPickVersionIsTarget({ ruleId, ruleUpgradeSpecifier })
75-
).toThrowError(createExpectedError(ruleId));
74+
expect(() => assertPickVersionIsTarget({ ruleId, ruleUpgradeSpecifier })).toThrowError(
75+
createExpectedError(ruleId)
76+
);
7677
});
7778

7879
it('should throw when any field-specific pick_version is not TARGET', () => {
@@ -86,9 +87,9 @@ describe('assertPickVersionIsTarget', () => {
8687
},
8788
};
8889

89-
expect(() =>
90-
assertPickVersionIsTarget({ ruleId, ruleUpgradeSpecifier })
91-
).toThrowError(createExpectedError(ruleId));
90+
expect(() => assertPickVersionIsTarget({ ruleId, ruleUpgradeSpecifier })).toThrowError(
91+
createExpectedError(ruleId)
92+
);
9293
});
9394

9495
it('should throw when pick_version is missing (defaults to MERGED)', () => {
@@ -98,9 +99,7 @@ describe('assertPickVersionIsTarget', () => {
9899
version: 1,
99100
};
100101

101-
expect(() =>
102-
assertPickVersionIsTarget({ ruleId, ruleUpgradeSpecifier })
103-
).toThrow();
102+
expect(() => assertPickVersionIsTarget({ ruleId, ruleUpgradeSpecifier })).toThrow();
104103
});
105104
});
106105
});

x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/revert_prebuilt_rule/revert_prebuilt_rule_handler.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ export const revertPrebuiltRuleHandler = async (
4848
const updated: RuleResponse[] = [];
4949
const errors: BulkActionError[] = [];
5050

51-
const ruleResponse = await getRuleById({ rulesClient, id });
51+
const ruleResponse = await getRuleById({ id, rulesClient });
5252

5353
if (!ruleResponse) {
5454
errors.push(

x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/import_rules/route.test.ts

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,11 @@ import {
2929
import * as createPromiseFromRuleImportStream from '../../../logic/import/create_promise_from_rule_import_stream';
3030
import { getQueryRuleParams } from '../../../../rule_schema/mocks';
3131
import { importRulesRoute } from './route';
32-
import { HttpAuthzError } from '../../../../../machine_learning/validation';
3332
import { createPrebuiltRuleAssetsClient as createPrebuiltRuleAssetsClientMock } from '../../../../prebuilt_rules/logic/rule_assets/__mocks__/prebuilt_rule_assets_client';
3433
import { createMockEndpointAppContextService } from '../../../../../../endpoint/mocks';
3534

3635
jest.mock('../../../../../machine_learning/authz');
36+
jest.mock('@kbn/streamlang');
3737

3838
let mockPrebuiltRuleAssetsClient: ReturnType<typeof createPrebuiltRuleAssetsClientMock>;
3939

@@ -45,7 +45,7 @@ jest.mock('../../../../prebuilt_rules/logic/rule_assets/prebuilt_rule_assets_cli
4545
// We have to find a way to use original detectionRulesClient.importRules() while mocking detectionRulesClient.importRule().
4646
// detectionRulesClient.importRules() uses detectionRulesClient.importRule() under the hood.
4747
// Without proper mocking this test suite will test the mock.
48-
describe.skip('Import rules route', () => {
48+
describe('Import rules route', () => {
4949
let config: ReturnType<typeof configMock.createDefault>;
5050
let server: ReturnType<typeof serverMock.create>;
5151
let request: ReturnType<typeof requestMock.create>;
@@ -63,7 +63,6 @@ describe.skip('Import rules route', () => {
6363
clients.rulesClient.find.mockResolvedValue(getEmptyFindResult()); // no extant rules
6464
clients.rulesClient.update.mockResolvedValue(getRuleMock(getQueryRuleParams()));
6565
clients.detectionRulesClient.createCustomRule.mockResolvedValue(getRulesSchemaMock());
66-
clients.detectionRulesClient.importRule.mockResolvedValue(getRulesSchemaMock());
6766
clients.actionsClient.getAll.mockResolvedValue([]);
6867
context.core.elasticsearch.client.asCurrentUser.search.mockResolvedValue(
6968
elasticsearchClientMock.createSuccessTransportRequestPromise(getBasicEmptySearchResponse())
@@ -106,10 +105,6 @@ describe.skip('Import rules route', () => {
106105

107106
describe('unhappy paths', () => {
108107
test('returns a 403 error object if ML Authz fails', async () => {
109-
clients.detectionRulesClient.importRule.mockImplementationOnce(async () => {
110-
throw new HttpAuthzError('mocked validation message');
111-
});
112-
113108
const response = await server.inject(request, requestContextMock.convertContext(context));
114109

115110
expect(response.status).toEqual(200);
@@ -233,10 +228,6 @@ describe.skip('Import rules route', () => {
233228
describe('rule with existing rule_id', () => {
234229
test('returns with reported conflict if `overwrite` is set to `false`', async () => {
235230
clients.rulesClient.find.mockResolvedValue(getFindResultWithSingleHit()); // extant rule
236-
clients.detectionRulesClient.importRule.mockRejectedValue({
237-
message: 'Rule with this rule_id already exists',
238-
statusCode: 409,
239-
});
240231
const response = await server.inject(request, requestContextMock.convertContext(context));
241232

242233
expect(response.status).toEqual(200);
@@ -449,10 +440,6 @@ describe.skip('Import rules route', () => {
449440
});
450441

451442
test('returns with reported conflict if `overwrite` is set to `false`', async () => {
452-
clients.detectionRulesClient.importRule.mockRejectedValueOnce({
453-
message: 'Rule with this rule_id already exists',
454-
statusCode: 409,
455-
});
456443
const multiRequest = getImportRulesRequest(
457444
buildHapiStream(ruleIdsToNdJsonString(['rule-1', 'rule-2', 'rule-3']))
458445
);

x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.change_tracking.test.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,10 @@ import { savedObjectsClientMock } from '@kbn/core/server/mocks';
1111
import { licenseMock } from '@kbn/licensing-plugin/common/licensing.mock';
1212

1313
import { SecurityRuleChangeTrackingAction } from '../../../../../../common/detection_engine/rule_management/rule_change_tracking';
14-
import { getCreateRulesSchemaMock, getRulesSchemaMock } from '../../../../../../common/api/detection_engine/model/rule_schema/mocks';
14+
import {
15+
getCreateRulesSchemaMock,
16+
getRulesSchemaMock,
17+
} from '../../../../../../common/api/detection_engine/model/rule_schema/mocks';
1518
import { getImportRulesSchemaMock } from '../../../../../../common/api/detection_engine/rule_management/mocks';
1619
import { getRuleMock } from '../../../routes/__mocks__/request_responses';
1720
import { getQueryRuleParams } from '../../../rule_schema/mocks';
@@ -117,7 +120,6 @@ describe('DetectionRulesClient change tracking', () => {
117120
})
118121
);
119122
});
120-
121123
});
122124

123125
describe('changeTracking.bulkCount', () => {

x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.create_prebuilt_rule.test.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import { rulesClientMock } from '@kbn/alerting-plugin/server/mocks';
99
import type { ActionsClient } from '@kbn/actions-plugin/server';
1010
import { SecurityRuleChangeTrackingAction } from '../../../../../../common/detection_engine/rule_management/rule_change_tracking';
11-
11+
import type { RuleCreateProps } from '../../../../../../common/api/detection_engine/model/rule_schema';
1212
import {
1313
getCreateRulesSchemaMock,
1414
getCreateMachineLearningRulesSchemaMock,
@@ -32,12 +32,10 @@ describe('createPrebuiltRule behavior (via createRule with prebuilt params)', ()
3232
isSystemAction: jest.fn(() => false),
3333
} as unknown as jest.Mocked<ActionsClient>;
3434

35-
const callCreatePrebuiltRule = (params: Parameters<typeof createRule>[0]['rule']) =>
35+
const callCreatePrebuiltRule = (params: RuleCreateProps) =>
3636
createRule({
37-
actionsClient,
38-
rulesClient,
39-
mlAuthz,
4037
rule: { ...params, immutable: true },
38+
deps: { actionsClient, rulesClient, mlAuthz },
4139
changeTracking: { action: SecurityRuleChangeTrackingAction.ruleInstall },
4240
});
4341

0 commit comments

Comments
 (0)