Skip to content

Commit 1471be0

Browse files
[9.1] Skips FIPS in ML install review test for basic license (#226599) (#226975)
# Backport This will backport the following commits from `main` to `9.1`: - [Skips FIPS in ML install review test for basic license (#226599)](#226599) <!--- Backport version: 9.6.6 --> ### Questions ? Please refer to the [Backport tool documentation](https://github.com/sorenlouv/backport) <!--BACKPORT [{"author":{"name":"Jeramy Soucy","email":"jeramy.soucy@elastic.co"},"sourceCommit":{"committedDate":"2025-07-08T10:36:33Z","message":"Skips FIPS in ML install review test for basic license (#226599)\n\n## Summary\n\nSkips the rules installation review test when runnign with the basic\nlicense. This test does not apply to FIPS, which is not compatible with\na basic license.","sha":"a4ebf230040cb87121697162816d1b8d3941d999","branchLabelMapping":{"^v9.2.0$":"main","^v(\\d+).(\\d+).\\d+$":"$1.$2"}},"sourcePullRequest":{"labels":["Team:Security","release_note:skip","Feature:FIPS","backport:version","v9.1.0","v8.19.0","v9.2.0","v8.18.4","v9.0.4"],"title":"Skips FIPS in failing ML disabled tests","number":226599,"url":"https://github.com/elastic/kibana/pull/226599","mergeCommit":{"message":"Skips FIPS in ML install review test for basic license (#226599)\n\n## Summary\n\nSkips the rules installation review test when runnign with the basic\nlicense. This test does not apply to FIPS, which is not compatible with\na basic license.","sha":"a4ebf230040cb87121697162816d1b8d3941d999"}},"sourceBranch":"main","suggestedTargetBranches":["9.1","8.19","8.18","9.0"],"targetPullRequestStates":[{"branch":"9.1","label":"v9.1.0","branchLabelMappingKey":"^v(\\d+).(\\d+).\\d+$","isSourceBranch":false,"state":"NOT_CREATED"},{"branch":"8.19","label":"v8.19.0","branchLabelMappingKey":"^v(\\d+).(\\d+).\\d+$","isSourceBranch":false,"state":"NOT_CREATED"},{"branch":"main","label":"v9.2.0","branchLabelMappingKey":"^v9.2.0$","isSourceBranch":true,"state":"MERGED","url":"https://github.com/elastic/kibana/pull/226599","number":226599,"mergeCommit":{"message":"Skips FIPS in ML install review test for basic license (#226599)\n\n## Summary\n\nSkips the rules installation review test when runnign with the basic\nlicense. This test does not apply to FIPS, which is not compatible with\na basic license.","sha":"a4ebf230040cb87121697162816d1b8d3941d999"}},{"branch":"8.18","label":"v8.18.4","branchLabelMappingKey":"^v(\\d+).(\\d+).\\d+$","isSourceBranch":false,"state":"NOT_CREATED"},{"branch":"9.0","label":"v9.0.4","branchLabelMappingKey":"^v(\\d+).(\\d+).\\d+$","isSourceBranch":false,"state":"NOT_CREATED"}]}] BACKPORT--> Co-authored-by: Jeramy Soucy <jeramy.soucy@elastic.co>
1 parent 3ca90d9 commit 1471be0

6 files changed

Lines changed: 223 additions & 174 deletions

File tree

x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/prebuilt_rules/ml_disabled/index.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,13 @@ import { FtrProviderContext } from '../../../../../ftr_provider_context';
99

1010
export default ({ loadTestFile }: FtrProviderContext): void => {
1111
describe('Rules Management - Prebuilt Rules (ML Disabled)', function () {
12+
/* Note: some tests below include skips when running in FIPS mode.
13+
* "ML Disabled" currently assumes a basic license, which does not apply to
14+
* FIPS, though any passing tests have been preserved.
15+
* FIPS skips are placed at the lowest possible level to refrain from un-
16+
* intentional skips, and to retain flexibility, granularity, and coverage.
17+
* New additions to this index should consider this.
18+
*/
1219
loadTestFile(require.resolve('./review_installation'));
1320
loadTestFile(require.resolve('./perform_installation'));
1421
loadTestFile(require.resolve('./review_upgrade'));

x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/prebuilt_rules/ml_disabled/perform_installation/perform_installation.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,14 @@ export default ({ getService }: FtrProviderContext): void => {
1919
const es = getService('es');
2020
const supertest = getService('supertest');
2121
const log = getService('log');
22+
const config = getService('config');
23+
const basic = config.get('esTestCluster.license') === 'basic';
24+
25+
describe('@ess @serverless @skipInServerlessMKI Prebuilt rules installation perform', function () {
26+
if (basic) {
27+
this.tags('skipFIPS');
28+
}
2229

23-
describe('@ess @serverless @skipInServerlessMKI Prebuilt rules installation perform', () => {
2430
beforeEach(async () => {
2531
await deleteAllRules(supertest, log);
2632
await deleteAllPrebuiltRuleAssets(es, log);

x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/prebuilt_rules/ml_disabled/perform_upgrade/perform_upgrade.ts

Lines changed: 116 additions & 102 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ export default ({ getService }: FtrProviderContext): void => {
2222
const es = getService('es');
2323
const supertest = getService('supertest');
2424
const log = getService('log');
25+
const config = getService('config');
26+
const basic = config.get('esTestCluster.license') === 'basic';
2527
const deps = {
2628
es,
2729
supertest,
@@ -36,7 +38,11 @@ export default ({ getService }: FtrProviderContext): void => {
3638

3739
const ruleId = 'ml-rule';
3840

39-
describe('ALL_RULES mode', () => {
41+
describe('ALL_RULES mode', function () {
42+
if (basic) {
43+
this.tags('skipFIPS');
44+
}
45+
4046
it('silently skips ML rules in ALL_RULES mode', async () => {
4147
await setUpRuleUpgrade({
4248
assets: {
@@ -68,117 +74,125 @@ export default ({ getService }: FtrProviderContext): void => {
6874
});
6975
});
7076

71-
describe('SPECIFIC_RULES mode', () => {
72-
it(`doesn't upgrade if target is an ML rule`, async () => {
73-
await createMlRuleThroughAlertingEndpoint(supertest, {
74-
ruleId,
75-
version: 1,
76-
});
77-
78-
const targetMlRuleAsset = createRuleAssetSavedObjectOfType('machine_learning', {
79-
rule_id: ruleId,
80-
version: 2,
81-
});
82-
await createPrebuiltRuleAssetSavedObjects(es, [targetMlRuleAsset]);
83-
84-
const upgradePerformResult = await performUpgradePrebuiltRules(es, supertest, {
85-
mode: ModeEnum.SPECIFIC_RULES,
86-
rules: [
87-
{
88-
rule_id: ruleId,
89-
revision: 0,
90-
version: 2,
77+
describe('SPECIFIC_RULES mode', function () {
78+
describe(`doesn't upgrade`, function () {
79+
if (basic) {
80+
this.tags('skipFIPS');
81+
}
82+
83+
it(`if target is an ML rule`, async () => {
84+
await createMlRuleThroughAlertingEndpoint(supertest, {
85+
ruleId,
86+
version: 1,
87+
});
88+
89+
const targetMlRuleAsset = createRuleAssetSavedObjectOfType('machine_learning', {
90+
rule_id: ruleId,
91+
version: 2,
92+
});
93+
await createPrebuiltRuleAssetSavedObjects(es, [targetMlRuleAsset]);
94+
95+
const upgradePerformResult = await performUpgradePrebuiltRules(es, supertest, {
96+
mode: ModeEnum.SPECIFIC_RULES,
97+
rules: [
98+
{
99+
rule_id: ruleId,
100+
revision: 0,
101+
version: 2,
102+
},
103+
],
104+
});
105+
106+
expect(upgradePerformResult).toMatchObject({
107+
summary: {
108+
total: 1,
109+
failed: 1,
91110
},
92-
],
93-
});
94-
95-
expect(upgradePerformResult).toMatchObject({
96-
summary: {
97-
total: 1,
98-
failed: 1,
99-
},
100-
errors: [
101-
{
102-
message:
103-
'Your license does not support machine learning. Please upgrade your license.',
104-
rules: [{ rule_id: ruleId }],
105-
},
106-
],
111+
errors: [
112+
{
113+
message:
114+
'Your license does not support machine learning. Please upgrade your license.',
115+
rules: [{ rule_id: ruleId }],
116+
},
117+
],
118+
});
107119
});
108120
});
109121

110-
it('upgrades successfully if current rule is an ML rule, but target is a non-ML rule', async () => {
111-
await createMlRuleThroughAlertingEndpoint(supertest, {
112-
ruleId,
113-
version: 1,
114-
});
115-
116-
const targetMlRuleAsset = createRuleAssetSavedObjectOfType('query', {
117-
rule_id: ruleId,
118-
version: 2,
119-
});
120-
await createPrebuiltRuleAssetSavedObjects(es, [targetMlRuleAsset]);
121-
122-
const upgradePerformResult = await performUpgradePrebuiltRules(es, supertest, {
123-
mode: ModeEnum.SPECIFIC_RULES,
124-
rules: [
125-
{
126-
rule_id: ruleId,
127-
revision: 0,
128-
version: 2,
129-
pick_version: 'TARGET',
122+
describe('upgrades successfully', function () {
123+
it('if current rule is an ML rule, but target is a non-ML rule', async () => {
124+
await createMlRuleThroughAlertingEndpoint(supertest, {
125+
ruleId,
126+
version: 1,
127+
});
128+
129+
const targetMlRuleAsset = createRuleAssetSavedObjectOfType('query', {
130+
rule_id: ruleId,
131+
version: 2,
132+
});
133+
await createPrebuiltRuleAssetSavedObjects(es, [targetMlRuleAsset]);
134+
135+
const upgradePerformResult = await performUpgradePrebuiltRules(es, supertest, {
136+
mode: ModeEnum.SPECIFIC_RULES,
137+
rules: [
138+
{
139+
rule_id: ruleId,
140+
revision: 0,
141+
version: 2,
142+
pick_version: 'TARGET',
143+
},
144+
],
145+
});
146+
147+
expect(upgradePerformResult).toMatchObject({
148+
summary: {
149+
total: 1,
150+
succeeded: 1,
130151
},
131-
],
132-
});
133-
134-
expect(upgradePerformResult).toMatchObject({
135-
summary: {
136-
total: 1,
137-
succeeded: 1,
138-
},
139-
results: {
140-
updated: [{ rule_id: ruleId }],
141-
},
152+
results: {
153+
updated: [{ rule_id: ruleId }],
154+
},
155+
});
142156
});
143-
});
144157

145-
it('upgrades successfully if both current and target are non-ML rules', async () => {
146-
await setUpRuleUpgrade({
147-
assets: {
148-
installed: {
149-
type: 'query',
150-
version: 1,
151-
rule_id: ruleId,
158+
it('if both current and target are non-ML rules', async () => {
159+
await setUpRuleUpgrade({
160+
assets: {
161+
installed: {
162+
type: 'query',
163+
version: 1,
164+
rule_id: ruleId,
165+
},
166+
upgrade: {
167+
type: 'query',
168+
version: 2,
169+
rule_id: ruleId,
170+
},
171+
patch: {},
152172
},
153-
upgrade: {
154-
type: 'query',
155-
version: 2,
156-
rule_id: ruleId,
173+
deps,
174+
});
175+
176+
const upgradePerformResult = await performUpgradePrebuiltRules(es, supertest, {
177+
mode: ModeEnum.SPECIFIC_RULES,
178+
rules: [
179+
{
180+
rule_id: ruleId,
181+
revision: 0,
182+
version: 2,
183+
},
184+
],
185+
});
186+
187+
expect(upgradePerformResult).toMatchObject({
188+
summary: {
189+
total: 1,
190+
succeeded: 1,
157191
},
158-
patch: {},
159-
},
160-
deps,
161-
});
162-
163-
const upgradePerformResult = await performUpgradePrebuiltRules(es, supertest, {
164-
mode: ModeEnum.SPECIFIC_RULES,
165-
rules: [
166-
{
167-
rule_id: ruleId,
168-
revision: 0,
169-
version: 2,
192+
results: {
193+
updated: [{ rule_id: ruleId }],
170194
},
171-
],
172-
});
173-
174-
expect(upgradePerformResult).toMatchObject({
175-
summary: {
176-
total: 1,
177-
succeeded: 1,
178-
},
179-
results: {
180-
updated: [{ rule_id: ruleId }],
181-
},
195+
});
182196
});
183197
});
184198
});

x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/prebuilt_rules/ml_disabled/review_installation/review_installation.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,14 @@ export default ({ getService }: FtrProviderContext): void => {
1919
const es = getService('es');
2020
const supertest = getService('supertest');
2121
const log = getService('log');
22+
const config = getService('config');
23+
const basic = config.get('esTestCluster.license') === 'basic';
24+
25+
describe('@ess @serverless @skipInServerlessMKI Prebuilt rules installation review', function () {
26+
if (basic) {
27+
this.tags('skipFIPS');
28+
}
2229

23-
describe('@ess @serverless @skipInServerlessMKI Prebuilt rules installation review', () => {
2430
beforeEach(async () => {
2531
await deleteAllRules(supertest, log);
2632
await deleteAllPrebuiltRuleAssets(es, log);

0 commit comments

Comments
 (0)