mirror of
https://github.com/elastic/kibana.git
synced 2025-04-23 01:13:23 -04:00
[Security Solution] Migrate Prebuilt rules API integration tests to security_solution_api_integration
folder (#169951)
Addresses partially: https://github.com/elastic/kibana/issues/151902 ## Summary - Migrates Prebuilt rules-related API integration tests to `security_solution_api_integration` folder. - Moves tests from `x-pack/test/detection_engine_api_integration/security_and_spaces` into `x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license`. - PR moves following folders: - `/prebuilt_rules` - `/bundled_prebuilt_rules_package` - `/large_prebuilt_rules_package` - `/update_prebuilt_rules_package` - Duplicates or completely moves needed utils into: - `x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/rules/prebuilt_rules`, depending if they are no longer used in the original folder or they still are in the remaining test (should be moved shortly as well) - All tests run on both **ESS** and **Serverless** ## Flaky test runner - [ ] [`/prebuilt_rules`](https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/3888) 🟢 - [ ] [`/bundled_prebuilt_rules_package`](https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/3916)🟢 - [ ] [`/large_prebuilt_rules_package`](https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/3917)🟢 - [ ] [`/update_prebuilt_rules_package`](https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/3920)🟢 [Link to all for PR](https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds?branch=refs%2Fpull%2F169951%2Fhead) ### For maintainers - [ ] This was checked for breaking API changes and was [labeled appropriately](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process) --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
This commit is contained in:
parent
7c32757335
commit
4b28ec4397
43 changed files with 401 additions and 150 deletions
|
@ -228,10 +228,6 @@ enabled:
|
|||
- x-pack/test/detection_engine_api_integration/security_and_spaces/group5/config.ts
|
||||
- x-pack/test/detection_engine_api_integration/security_and_spaces/group10/config.ts
|
||||
- x-pack/test/detection_engine_api_integration/security_and_spaces/rule_execution_logic/config.ts
|
||||
- x-pack/test/detection_engine_api_integration/security_and_spaces/prebuilt_rules/config.ts
|
||||
- x-pack/test/detection_engine_api_integration/security_and_spaces/bundled_prebuilt_rules_package/config.ts
|
||||
- x-pack/test/detection_engine_api_integration/security_and_spaces/large_prebuilt_rules_package/config.ts
|
||||
- x-pack/test/detection_engine_api_integration/security_and_spaces/update_prebuilt_rules_package/config.ts
|
||||
- x-pack/test/disable_ems/config.ts
|
||||
- x-pack/test/encrypted_saved_objects_api_integration/config.ts
|
||||
- x-pack/test/examples/config.ts
|
||||
|
@ -467,8 +463,11 @@ enabled:
|
|||
- x-pack/test/security_solution_api_integration/test_suites/entity_analytics/default_license/risk_engine/configs/serverless.config.ts
|
||||
- x-pack/test/security_solution_api_integration/test_suites/entity_analytics/default_license/risk_engine/configs/ess.config.ts
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
- x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/management/configs/serverless.config.ts
|
||||
- x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/management/configs/ess.config.ts
|
||||
- x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/bundled_prebuilt_rules_package/configs/serverless.config.ts
|
||||
- x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/bundled_prebuilt_rules_package/configs/ess.config.ts
|
||||
- x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/large_prebuilt_rules_package/configs/serverless.config.ts
|
||||
- x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/large_prebuilt_rules_package/configs/ess.config.ts
|
||||
- x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/update_prebuilt_rules_package/configs/serverless.config.ts
|
||||
- x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules/update_prebuilt_rules_package/configs/ess.config.ts
|
||||
|
|
1
.github/CODEOWNERS
vendored
1
.github/CODEOWNERS
vendored
|
@ -1299,6 +1299,7 @@ x-pack/plugins/cloud_integrations/cloud_full_story/server/config.ts @elastic/kib
|
|||
/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_details @elastic/security-detection-rule-management
|
||||
/x-pack/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules @elastic/security-detection-rule-management
|
||||
/x-pack/plugins/security_solution/docs/testing/test_plans/detection_response/rule_management @elastic/security-detection-rule-management
|
||||
/x-pack/test/security_solution_api_integration/test_suites/detections_response/default_license/prebuilt_rules @elastic/security-detection-rule-management
|
||||
|
||||
/x-pack/plugins/security_solution/public/common/components/health_truncate_text @elastic/security-detection-rule-management
|
||||
/x-pack/plugins/security_solution/public/common/components/links_to_docs @elastic/security-detection-rule-management
|
||||
|
|
|
@ -93,12 +93,6 @@ export * from './wait_for_rule_status';
|
|||
export * from './wait_for_signals_to_be_present';
|
||||
export * from './prebuilt_rules/create_prebuilt_rule_saved_objects';
|
||||
export * from './prebuilt_rules/delete_all_prebuilt_rule_assets';
|
||||
export * from './prebuilt_rules/delete_prebuilt_rules_fleet_package';
|
||||
export * from './prebuilt_rules/get_prebuilt_rules_status';
|
||||
export * from './prebuilt_rules/get_prebuilt_rules_and_timelines_status';
|
||||
export * from './prebuilt_rules/install_prebuilt_rules_fleet_package';
|
||||
export * from './prebuilt_rules/install_prebuilt_rules';
|
||||
export * from './prebuilt_rules/upgrade_prebuilt_rules';
|
||||
export * from './prebuilt_rules/install_mock_prebuilt_rules';
|
||||
export * from './prebuilt_rules/install_prebuilt_rules_and_timelines';
|
||||
export * from './get_legacy_action_so';
|
||||
|
|
|
@ -1,31 +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 {
|
||||
GetPrebuiltRulesAndTimelinesStatusResponse,
|
||||
PREBUILT_RULES_STATUS_URL,
|
||||
} from '@kbn/security-solution-plugin/common/api/detection_engine/prebuilt_rules';
|
||||
import type SuperTest from 'supertest';
|
||||
|
||||
/**
|
||||
* (LEGACY)
|
||||
* Helper to retrieve the prebuilt rules status
|
||||
*
|
||||
* @param supertest The supertest deps
|
||||
*/
|
||||
export const getPrebuiltRulesAndTimelinesStatus = async (
|
||||
supertest: SuperTest.SuperTest<SuperTest.Test>
|
||||
): Promise<GetPrebuiltRulesAndTimelinesStatusResponse> => {
|
||||
const response = await supertest
|
||||
.get(PREBUILT_RULES_STATUS_URL)
|
||||
.set('kbn-xsrf', 'true')
|
||||
.set('elastic-api-version', '2023-10-31')
|
||||
.send()
|
||||
.expect(200);
|
||||
|
||||
return response.body;
|
||||
};
|
|
@ -8,6 +8,8 @@ import { FtrConfigProviderContext } from '@kbn/test';
|
|||
export interface CreateTestConfigOptions {
|
||||
testFiles: string[];
|
||||
junit: { reportName: string };
|
||||
kbnTestServerArgs?: string[];
|
||||
kbnTestServerEnv?: Record<string, string>;
|
||||
}
|
||||
|
||||
export function createTestConfig(options: CreateTestConfigOptions) {
|
||||
|
@ -20,7 +22,15 @@ export function createTestConfig(options: CreateTestConfigOptions) {
|
|||
...svlSharedConfig.getAll(),
|
||||
kbnTestServer: {
|
||||
...svlSharedConfig.get('kbnTestServer'),
|
||||
serverArgs: [...svlSharedConfig.get('kbnTestServer.serverArgs'), '--serverless=security'],
|
||||
serverArgs: [
|
||||
...svlSharedConfig.get('kbnTestServer.serverArgs'),
|
||||
'--serverless=security',
|
||||
...(options.kbnTestServerArgs || []),
|
||||
],
|
||||
env: {
|
||||
...svlSharedConfig.get('kbnTestServer.env'),
|
||||
...options.kbnTestServerEnv,
|
||||
},
|
||||
},
|
||||
testFiles: options.testFiles,
|
||||
junit: options.junit,
|
||||
|
|
|
@ -48,6 +48,26 @@
|
|||
"entity_analytics:runner:serverless": "npm run run-tests:ea:default risk_engine serverless serverlessEnv",
|
||||
"entity_analytics:qa:serverless": "npm run run-tests:ea:default risk_engine serverless qaEnv",
|
||||
"entity_analytics:server:ess": "npm run initialize-server:ea:default risk_engine ess",
|
||||
"entity_analytics:runner:ess": "npm run run-tests:ea:default risk_engine ess essEnv"
|
||||
"entity_analytics:runner:ess": "npm run run-tests:ea:default risk_engine ess essEnv",
|
||||
"prebuilt_rules_management:server:serverless": "npm run initialize-server:dr:default prebuilt_rules/management serverless",
|
||||
"prebuilt_rules_management:runner:serverless": "npm run run-tests:dr:default prebuilt_rules/management serverless serverlessEnv",
|
||||
"prebuilt_rules_management:qa:serverless": "npm run run-tests:dr:default prebuilt_rules/management serverless qaEnv",
|
||||
"prebuilt_rules_management:server:ess": "npm run initialize-server:dr:default prebuilt_rules/management ess",
|
||||
"prebuilt_rules_management:runner:ess": "npm run run-tests:dr:default prebuilt_rules/management ess essEnv",
|
||||
"prebuilt_rules_bundled_prebuilt_rules_package:server:serverless": "npm run initialize-server:dr:default prebuilt_rules/bundled_prebuilt_rules_package serverless",
|
||||
"prebuilt_rules_bundled_prebuilt_rules_package:runner:serverless": "npm run run-tests:dr:default prebuilt_rules/bundled_prebuilt_rules_package serverless serverlessEnv",
|
||||
"prebuilt_rules_bundled_prebuilt_rules_package:qa:serverless": "npm run run-tests:dr:default prebuilt_rules/bundled_prebuilt_rules_package serverless qaEnv",
|
||||
"prebuilt_rules_bundled_prebuilt_rules_package:server:ess": "npm run initialize-server:dr:default prebuilt_rules/bundled_prebuilt_rules_package ess",
|
||||
"prebuilt_rules_bundled_prebuilt_rules_package:runner:ess": "npm run run-tests:dr:default prebuilt_rules/bundled_prebuilt_rules_package ess essEnv",
|
||||
"prebuilt_rules_large_prebuilt_rules_package:server:serverless": "npm run initialize-server:dr:default prebuilt_rules/large_prebuilt_rules_package serverless",
|
||||
"prebuilt_rules_large_prebuilt_rules_package:runner:serverless": "npm run run-tests:dr:default prebuilt_rules/large_prebuilt_rules_package serverless serverlessEnv",
|
||||
"prebuilt_rules_large_prebuilt_rules_package:qa:serverless": "npm run run-tests:dr:default prebuilt_rules/large_prebuilt_rules_package serverless qaEnv",
|
||||
"prebuilt_rules_large_prebuilt_rules_package:server:ess": "npm run initialize-server:dr:default prebuilt_rules/large_prebuilt_rules_package ess",
|
||||
"prebuilt_rules_large_prebuilt_rules_package:runner:ess": "npm run run-tests:dr:default prebuilt_rules/large_prebuilt_rules_package ess essEnv",
|
||||
"prebuilt_rules_update_prebuilt_rules_package:server:serverless": "npm run initialize-server:dr:default prebuilt_rules/update_prebuilt_rules_package serverless",
|
||||
"prebuilt_rules_update_prebuilt_rules_package:runner:serverless": "npm run run-tests:dr:default prebuilt_rules/update_prebuilt_rules_package serverless serverlessEnv",
|
||||
"prebuilt_rules_update_prebuilt_rules_package:qa:serverless": "npm run run-tests:dr:default prebuilt_rules/update_prebuilt_rules_package serverless qaEnv",
|
||||
"prebuilt_rules_update_prebuilt_rules_package:server:ess": "npm run initialize-server:dr:default prebuilt_rules/update_prebuilt_rules_package ess",
|
||||
"prebuilt_rules_update_prebuilt_rules_package:runner:ess": "npm run run-tests:dr:default prebuilt_rules/update_prebuilt_rules_package ess essEnvs"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,24 +4,26 @@
|
|||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
import { FtrConfigProviderContext } from '@kbn/test';
|
||||
import path from 'path';
|
||||
|
||||
export const BUNDLED_PACKAGE_DIR = path.join(
|
||||
path.dirname(__filename),
|
||||
'./fleet_bundled_packages/fixtures'
|
||||
'./../fleet_bundled_packages/fixtures'
|
||||
);
|
||||
|
||||
// eslint-disable-next-line import/no-default-export
|
||||
export default async function ({ readConfigFile }: FtrConfigProviderContext) {
|
||||
const functionalConfig = await readConfigFile(require.resolve('../config.base.ts'));
|
||||
const functionalConfig = await readConfigFile(
|
||||
require.resolve('../../../../../../config/ess/config.base.trial')
|
||||
);
|
||||
|
||||
return {
|
||||
...functionalConfig.getAll(),
|
||||
testFiles: [
|
||||
require.resolve('./prerelease_packages.ts'),
|
||||
require.resolve('./install_latest_bundled_prebuilt_rules.ts'),
|
||||
],
|
||||
testFiles: [require.resolve('..')],
|
||||
junit: {
|
||||
reportName: 'Detection Engine ESS / Bundled Prebuilt Rules Package API Integration Tests',
|
||||
},
|
||||
kbnTestServer: {
|
||||
...functionalConfig.get('kbnTestServer'),
|
||||
serverArgs: [
|
|
@ -0,0 +1,29 @@
|
|||
/*
|
||||
* 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 path from 'path';
|
||||
import { createTestConfig } from '../../../../../../config/serverless/config.base';
|
||||
|
||||
export const BUNDLED_PACKAGE_DIR = path.join(
|
||||
path.dirname(__filename),
|
||||
'./../fleet_bundled_packages/fixtures'
|
||||
);
|
||||
export default createTestConfig({
|
||||
testFiles: [require.resolve('..')],
|
||||
junit: {
|
||||
reportName:
|
||||
'Detection Engine Serverless / Bundled Prebuilte Rules Package API Integration Tests',
|
||||
},
|
||||
kbnTestServerArgs: [
|
||||
/* Tests in this directory simulate an air-gapped environment in which the instance doesn't have access to EPR.
|
||||
* To do that, we point the Fleet url to an invalid URL, and instruct Fleet to fetch bundled packages at the
|
||||
* location defined in BUNDLED_PACKAGE_DIR.
|
||||
*/
|
||||
`--xpack.fleet.registryUrl=http://invalidURL:8080`,
|
||||
`--xpack.fleet.developer.bundledPackageLocation=${BUNDLED_PACKAGE_DIR}`,
|
||||
],
|
||||
});
|
|
@ -0,0 +1,15 @@
|
|||
/*
|
||||
* 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 { FtrProviderContext } from '../../../../../ftr_provider_context';
|
||||
|
||||
export default ({ loadTestFile }: FtrProviderContext): void => {
|
||||
describe('Detection Engine API - Bundled Prebuilt Rules Package', function () {
|
||||
loadTestFile(require.resolve('./install_latest_bundled_prebuilt_rules'));
|
||||
loadTestFile(require.resolve('./prerelease_packages'));
|
||||
});
|
||||
};
|
|
@ -6,18 +6,18 @@
|
|||
*/
|
||||
import fs from 'fs/promises';
|
||||
import path from 'path';
|
||||
// @ts-expect-error we have to check types with "allowJs: false" for now, causing this import to fail
|
||||
import { REPO_ROOT } from '@kbn/repo-info';
|
||||
import JSON5 from 'json5';
|
||||
import expect from 'expect';
|
||||
import { PackageSpecManifest } from '@kbn/fleet-plugin/common';
|
||||
import { ALL_SAVED_OBJECT_INDICES } from '@kbn/core-saved-objects-server';
|
||||
import { FtrProviderContext } from '../../common/ftr_provider_context';
|
||||
import { deleteAllPrebuiltRuleAssets, deleteAllRules } from '../../utils';
|
||||
import { getPrebuiltRulesStatus } from '../../utils/prebuilt_rules/get_prebuilt_rules_status';
|
||||
import { installPrebuiltRulesPackageByVersion } from '../../utils/prebuilt_rules/install_fleet_package_by_url';
|
||||
|
||||
// eslint-disable-next-line import/no-default-export
|
||||
import { FtrProviderContext } from '../../../../../ftr_provider_context';
|
||||
import {
|
||||
deleteAllRules,
|
||||
deleteAllPrebuiltRuleAssets,
|
||||
getPrebuiltRulesStatus,
|
||||
installPrebuiltRulesPackageByVersion,
|
||||
} from '../../../utils';
|
||||
export default ({ getService }: FtrProviderContext): void => {
|
||||
const es = getService('es');
|
||||
const supertest = getService('supertest');
|
||||
|
@ -28,7 +28,7 @@ export default ({ getService }: FtrProviderContext): void => {
|
|||
/* attempt to install it from the local file system. The API response from EPM provides
|
||||
/* us with the information of whether the package was installed from the registry or
|
||||
/* from a package that was bundled with Kibana */
|
||||
describe('install_bundled_prebuilt_rules', () => {
|
||||
describe('@ess @serverless @skipInQA install_bundled_prebuilt_rules', () => {
|
||||
beforeEach(async () => {
|
||||
await deleteAllRules(supertest, log);
|
||||
await deleteAllPrebuiltRuleAssets(es);
|
|
@ -5,14 +5,19 @@
|
|||
* 2.0.
|
||||
*/
|
||||
import expect from 'expect';
|
||||
import { FtrProviderContext } from '../../common/ftr_provider_context';
|
||||
import { deleteAllPrebuiltRuleAssets, deleteAllRules } from '../../utils';
|
||||
import { getInstalledRules } from '../../utils/prebuilt_rules/get_installed_rules';
|
||||
import { getPrebuiltRulesStatus } from '../../utils/prebuilt_rules/get_prebuilt_rules_status';
|
||||
import { installPrebuiltRulesPackageViaFleetAPI } from '../../utils/prebuilt_rules/install_fleet_package_by_url';
|
||||
import { installPrebuiltRules } from '../../utils/prebuilt_rules/install_prebuilt_rules';
|
||||
|
||||
// eslint-disable-next-line import/no-default-export
|
||||
import { FtrProviderContext } from '../../../../../ftr_provider_context';
|
||||
import {
|
||||
deleteAllPrebuiltRuleAssets,
|
||||
deleteAllRules,
|
||||
deletePrebuiltRulesFleetPackage,
|
||||
getInstalledRules,
|
||||
getPrebuiltRulesFleetPackage,
|
||||
getPrebuiltRulesStatus,
|
||||
installPrebuiltRules,
|
||||
installPrebuiltRulesPackageViaFleetAPI,
|
||||
} from '../../../utils';
|
||||
|
||||
export default ({ getService }: FtrProviderContext): void => {
|
||||
const es = getService('es');
|
||||
const supertest = getService('supertest');
|
||||
|
@ -25,10 +30,11 @@ export default ({ getService }: FtrProviderContext): void => {
|
|||
/* (We use high mock version numbers to prevent clashes with real packages downloaded in other tests.)
|
||||
/* To do assertions on which packages have been installed, 99.0.0 has a single rule to install,
|
||||
/* while 99.0.1-beta.1 has 2 rules to install. Also, both packages have the version as part of the rule names. */
|
||||
describe('prerelease_packages', () => {
|
||||
describe('@ess @serverless @skipInQA prerelease_packages', () => {
|
||||
beforeEach(async () => {
|
||||
await deleteAllRules(supertest, log);
|
||||
await deleteAllPrebuiltRuleAssets(es);
|
||||
await deletePrebuiltRulesFleetPackage(supertest);
|
||||
});
|
||||
|
||||
it('should install latest stable version and ignore prerelease packages', async () => {
|
||||
|
@ -38,13 +44,27 @@ export default ({ getService }: FtrProviderContext): void => {
|
|||
expect(statusBeforePackageInstallation.stats.num_prebuilt_rules_to_install).toBe(0);
|
||||
expect(statusBeforePackageInstallation.stats.num_prebuilt_rules_to_upgrade).toBe(0);
|
||||
|
||||
await installPrebuiltRulesPackageViaFleetAPI(es, supertest);
|
||||
// Install package without specifying version to check if latest stable version is installed
|
||||
const fleetPackageInstallationResponse = await installPrebuiltRulesPackageViaFleetAPI(
|
||||
es,
|
||||
supertest
|
||||
);
|
||||
|
||||
expect(fleetPackageInstallationResponse.items.length).toBe(1);
|
||||
expect(fleetPackageInstallationResponse.items[0].id).toBe('rule_99.0.0'); // Name of the rule in package 99.0.0
|
||||
|
||||
// Get the installed package and check if the version is 99.0.0
|
||||
const prebuiltRulesFleetPackage = await getPrebuiltRulesFleetPackage(supertest);
|
||||
expect(prebuiltRulesFleetPackage.body.item.version).toBe('99.0.0');
|
||||
expect(prebuiltRulesFleetPackage.status).toBe(200);
|
||||
|
||||
// Get status of our prebuilt rules (nothing should be instaled yet)
|
||||
const statusAfterPackageInstallation = await getPrebuiltRulesStatus(supertest);
|
||||
expect(statusAfterPackageInstallation.stats.num_prebuilt_rules_installed).toBe(0);
|
||||
expect(statusAfterPackageInstallation.stats.num_prebuilt_rules_to_install).toBe(1); // 1 rule in package 99.0.0
|
||||
expect(statusAfterPackageInstallation.stats.num_prebuilt_rules_to_upgrade).toBe(0);
|
||||
|
||||
// Install prebuilt rules
|
||||
await installPrebuiltRules(es, supertest);
|
||||
|
||||
// Verify that status is updated after package installation
|
|
@ -4,21 +4,27 @@
|
|||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
import { FtrConfigProviderContext } from '@kbn/test';
|
||||
import path from 'path';
|
||||
|
||||
export const BUNDLED_PACKAGE_DIR = path.join(
|
||||
path.dirname(__filename),
|
||||
'./fleet_bundled_packages/fixtures'
|
||||
'./../fleet_bundled_packages/fixtures'
|
||||
);
|
||||
|
||||
// eslint-disable-next-line import/no-default-export
|
||||
export default async function ({ readConfigFile }: FtrConfigProviderContext) {
|
||||
const functionalConfig = await readConfigFile(require.resolve('../config.base.ts'));
|
||||
const functionalConfig = await readConfigFile(
|
||||
require.resolve('../../../../../../config/ess/config.base.trial')
|
||||
);
|
||||
|
||||
return {
|
||||
...functionalConfig.getAll(),
|
||||
testFiles: [require.resolve('./install_large_prebuilt_rules_package.ts')],
|
||||
testFiles: [require.resolve('..')],
|
||||
junit: {
|
||||
reportName:
|
||||
'Detection Engine ESS / Large Prebuilt Rules Package Installation API Integration Tests',
|
||||
},
|
||||
kbnTestServer: {
|
||||
...functionalConfig.get('kbnTestServer'),
|
||||
serverArgs: [
|
||||
|
@ -36,7 +42,7 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) {
|
|||
/* Limit the heap memory to the lowest amount with which Kibana doesn't crash with an out of memory error
|
||||
* when installing the large package.
|
||||
*/
|
||||
NODE_OPTIONS: '--max-old-space-size=700',
|
||||
NODE_OPTIONS: '--max-old-space-size=800',
|
||||
},
|
||||
},
|
||||
};
|
|
@ -0,0 +1,37 @@
|
|||
/*
|
||||
* 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 path from 'path';
|
||||
import { createTestConfig } from '../../../../../../config/serverless/config.base';
|
||||
|
||||
export const BUNDLED_PACKAGE_DIR = path.join(
|
||||
path.dirname(__filename),
|
||||
'./../fleet_bundled_packages/fixtures'
|
||||
);
|
||||
export default createTestConfig({
|
||||
testFiles: [require.resolve('..')],
|
||||
junit: {
|
||||
reportName:
|
||||
'Detection Engine Serverless / Large Prebuilt Rules Package Installation API Integration Tests',
|
||||
},
|
||||
kbnTestServerArgs: [
|
||||
/* Tests in this directory simulate an air-gapped environment in which the instance doesn't have access to EPR.
|
||||
* To do that, we point the Fleet url to an invalid URL, and instruct Fleet to fetch bundled packages at the
|
||||
* location defined in BUNDLED_PACKAGE_DIR.
|
||||
* Since we want to test the installation of a large package, we created a specific package `security_detection_engine-100.0.0`
|
||||
* which contains 15000 rules assets and 750 unique rules, and attempt to install it.
|
||||
*/
|
||||
`--xpack.fleet.registryUrl=http://invalidURL:8080`,
|
||||
`--xpack.fleet.developer.bundledPackageLocation=${BUNDLED_PACKAGE_DIR}`,
|
||||
],
|
||||
kbnTestServerEnv: {
|
||||
/* Limit the heap memory to the lowest amount with which Kibana doesn't crash with an out of memory error
|
||||
* when installing the large package.
|
||||
*/
|
||||
NODE_OPTIONS: '--max-old-space-size=800',
|
||||
},
|
||||
});
|
|
@ -0,0 +1,14 @@
|
|||
/*
|
||||
* 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 { FtrProviderContext } from '../../../../../ftr_provider_context';
|
||||
|
||||
export default ({ loadTestFile }: FtrProviderContext): void => {
|
||||
describe('Detection Engine API - Large Prebuilt Rules Package', function () {
|
||||
loadTestFile(require.resolve('./install_large_prebuilt_rules_package'));
|
||||
});
|
||||
};
|
|
@ -5,18 +5,20 @@
|
|||
* 2.0.
|
||||
*/
|
||||
import expect from 'expect';
|
||||
import { FtrProviderContext } from '../../common/ftr_provider_context';
|
||||
import { deleteAllRules, getPrebuiltRulesAndTimelinesStatus } from '../../utils';
|
||||
import { deleteAllPrebuiltRuleAssets } from '../../utils/prebuilt_rules/delete_all_prebuilt_rule_assets';
|
||||
import { installPrebuiltRulesAndTimelines } from '../../utils/prebuilt_rules/install_prebuilt_rules_and_timelines';
|
||||
import { FtrProviderContext } from '../../../../../ftr_provider_context';
|
||||
import {
|
||||
deleteAllPrebuiltRuleAssets,
|
||||
deleteAllRules,
|
||||
getPrebuiltRulesAndTimelinesStatus,
|
||||
installPrebuiltRulesAndTimelines,
|
||||
} from '../../../utils';
|
||||
|
||||
// eslint-disable-next-line import/no-default-export
|
||||
export default ({ getService }: FtrProviderContext): void => {
|
||||
const es = getService('es');
|
||||
const supertest = getService('supertest');
|
||||
const log = getService('log');
|
||||
|
||||
describe('install_large_prebuilt_rules_package', () => {
|
||||
describe('@ess @serverless @skipInQA install_large_prebuilt_rules_package', () => {
|
||||
beforeEach(async () => {
|
||||
await deleteAllRules(supertest, log);
|
||||
await deleteAllPrebuiltRuleAssets(es);
|
|
@ -7,12 +7,16 @@
|
|||
|
||||
import { FtrConfigProviderContext } from '@kbn/test';
|
||||
|
||||
// eslint-disable-next-line import/no-default-export
|
||||
export default async function ({ readConfigFile }: FtrConfigProviderContext) {
|
||||
const functionalConfig = await readConfigFile(require.resolve('../config.base.ts'));
|
||||
const functionalConfig = await readConfigFile(
|
||||
require.resolve('../../../../../../config/ess/config.base.trial')
|
||||
);
|
||||
|
||||
return {
|
||||
...functionalConfig.getAll(),
|
||||
testFiles: [require.resolve('./update_prebuilt_rules_package.ts')],
|
||||
testFiles: [require.resolve('..')],
|
||||
junit: {
|
||||
reportName: 'Detection Engine ESS / Prebuilt Rules Management API Integration Tests',
|
||||
},
|
||||
};
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
/*
|
||||
* 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 { createTestConfig } from '../../../../../../config/serverless/config.base';
|
||||
|
||||
export default createTestConfig({
|
||||
testFiles: [require.resolve('..')],
|
||||
junit: {
|
||||
reportName: 'Detection Engine Serverless / Prebuilt Rules Management API Integration Tests',
|
||||
},
|
||||
});
|
|
@ -5,24 +5,23 @@
|
|||
* 2.0.
|
||||
*/
|
||||
import expect from 'expect';
|
||||
import { FtrProviderContext } from '../../common/ftr_provider_context';
|
||||
import { FtrProviderContext } from '../../../../../ftr_provider_context';
|
||||
import {
|
||||
deleteAllRules,
|
||||
deleteAllTimelines,
|
||||
getPrebuiltRulesAndTimelinesStatus,
|
||||
} from '../../utils';
|
||||
import { deleteAllPrebuiltRuleAssets } from '../../utils/prebuilt_rules/delete_all_prebuilt_rule_assets';
|
||||
import { installPrebuiltRulesFleetPackage } from '../../utils/prebuilt_rules/install_prebuilt_rules_fleet_package';
|
||||
import { installPrebuiltRulesAndTimelines } from '../../utils/prebuilt_rules/install_prebuilt_rules_and_timelines';
|
||||
import { deletePrebuiltRulesFleetPackage } from '../../utils/prebuilt_rules/delete_prebuilt_rules_fleet_package';
|
||||
installPrebuiltRulesAndTimelines,
|
||||
} from '../../../utils';
|
||||
import { deleteAllPrebuiltRuleAssets } from '../../../utils/rules/prebuilt_rules/delete_all_prebuilt_rule_assets';
|
||||
import { deleteAllTimelines } from '../../../utils/rules/prebuilt_rules/delete_all_timelines';
|
||||
import { deletePrebuiltRulesFleetPackage } from '../../../utils/rules/prebuilt_rules/delete_prebuilt_rules_fleet_package';
|
||||
import { installPrebuiltRulesFleetPackage } from '../../../utils/rules/prebuilt_rules/install_prebuilt_rules_fleet_package';
|
||||
|
||||
// eslint-disable-next-line import/no-default-export
|
||||
export default ({ getService }: FtrProviderContext): void => {
|
||||
const es = getService('es');
|
||||
const supertest = getService('supertest');
|
||||
const log = getService('log');
|
||||
|
||||
describe('install_prebuilt_rules_from_real_package', () => {
|
||||
describe('@ess @serverless @skipInQA install_prebuilt_rules_from_real_package', () => {
|
||||
beforeEach(async () => {
|
||||
await deletePrebuiltRulesFleetPackage(supertest);
|
||||
await deleteAllRules(supertest, log);
|
|
@ -6,32 +6,29 @@
|
|||
*/
|
||||
|
||||
import expect from 'expect';
|
||||
import { FtrProviderContext } from '../../common/ftr_provider_context';
|
||||
import { FtrProviderContext } from '../../../../../ftr_provider_context';
|
||||
import {
|
||||
createRule,
|
||||
deleteAllPrebuiltRuleAssets,
|
||||
deleteAllRules,
|
||||
deleteRule,
|
||||
getPrebuiltRulesAndTimelinesStatus,
|
||||
getPrebuiltRulesStatus,
|
||||
createRule,
|
||||
getSimpleRule,
|
||||
installPrebuiltRulesAndTimelines,
|
||||
} from '../../utils';
|
||||
import {
|
||||
createHistoricalPrebuiltRuleAssetSavedObjects,
|
||||
createPrebuiltRuleAssetSavedObjects,
|
||||
createRuleAssetSavedObject,
|
||||
} from '../../utils/prebuilt_rules/create_prebuilt_rule_saved_objects';
|
||||
import { deleteAllPrebuiltRuleAssets } from '../../utils/prebuilt_rules/delete_all_prebuilt_rule_assets';
|
||||
import { getPrebuiltRulesStatus } from '../../utils/prebuilt_rules/get_prebuilt_rules_status';
|
||||
import { installPrebuiltRules } from '../../utils/prebuilt_rules/install_prebuilt_rules';
|
||||
import { upgradePrebuiltRules } from '../../utils/prebuilt_rules/upgrade_prebuilt_rules';
|
||||
createPrebuiltRuleAssetSavedObjects,
|
||||
installPrebuiltRules,
|
||||
deleteRule,
|
||||
upgradePrebuiltRules,
|
||||
createHistoricalPrebuiltRuleAssetSavedObjects,
|
||||
getPrebuiltRulesAndTimelinesStatus,
|
||||
installPrebuiltRulesAndTimelines,
|
||||
} from '../../../utils';
|
||||
|
||||
// eslint-disable-next-line import/no-default-export
|
||||
export default ({ getService }: FtrProviderContext): void => {
|
||||
const supertest = getService('supertest');
|
||||
const es = getService('es');
|
||||
const log = getService('log');
|
||||
|
||||
describe('Prebuilt Rules status', () => {
|
||||
describe('@ess @serverless @skipInQA Prebuilt Rules status', () => {
|
||||
describe('get_prebuilt_rules_status', () => {
|
||||
beforeEach(async () => {
|
||||
await deleteAllPrebuiltRuleAssets(es);
|
|
@ -6,19 +6,18 @@
|
|||
*/
|
||||
|
||||
import expect from 'expect';
|
||||
import { FtrProviderContext } from '../../common/ftr_provider_context';
|
||||
import { FtrProviderContext } from '../../../../../ftr_provider_context';
|
||||
import {
|
||||
deleteAllTimelines,
|
||||
getPrebuiltRulesAndTimelinesStatus,
|
||||
installPrebuiltRulesAndTimelines,
|
||||
} from '../../utils';
|
||||
} from '../../../utils';
|
||||
|
||||
// eslint-disable-next-line import/no-default-export
|
||||
export default ({ getService }: FtrProviderContext): void => {
|
||||
const supertest = getService('supertest');
|
||||
const es = getService('es');
|
||||
|
||||
describe('get_prebuilt_timelines_status', () => {
|
||||
describe('@ess @serverless @skipInQA get_prebuilt_timelines_status', () => {
|
||||
beforeEach(async () => {
|
||||
await deleteAllTimelines(es);
|
||||
});
|
|
@ -5,11 +5,10 @@
|
|||
* 2.0.
|
||||
*/
|
||||
|
||||
import { FtrProviderContext } from '../../common/ftr_provider_context';
|
||||
import { FtrProviderContext } from '../../../../../ftr_provider_context';
|
||||
|
||||
// eslint-disable-next-line import/no-default-export
|
||||
export default ({ loadTestFile }: FtrProviderContext): void => {
|
||||
describe('detection engine api security and spaces enabled - Prebuilt Rules', function () {
|
||||
describe('Detection Engine API - Prebuilt Rules Management', function () {
|
||||
loadTestFile(require.resolve('./get_prebuilt_rules_status'));
|
||||
loadTestFile(require.resolve('./get_prebuilt_timelines_status'));
|
||||
loadTestFile(require.resolve('./install_and_upgrade_prebuilt_rules'));
|
|
@ -4,34 +4,30 @@
|
|||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
import expect from 'expect';
|
||||
import { FtrProviderContext } from '../../common/ftr_provider_context';
|
||||
import { FtrProviderContext } from '../../../../../ftr_provider_context';
|
||||
import {
|
||||
deleteAllRules,
|
||||
deleteAllTimelines,
|
||||
deleteAllPrebuiltRuleAssets,
|
||||
createRuleAssetSavedObject,
|
||||
createPrebuiltRuleAssetSavedObjects,
|
||||
installPrebuiltRulesAndTimelines,
|
||||
deleteRule,
|
||||
getPrebuiltRulesAndTimelinesStatus,
|
||||
} from '../../utils';
|
||||
import {
|
||||
createHistoricalPrebuiltRuleAssetSavedObjects,
|
||||
createPrebuiltRuleAssetSavedObjects,
|
||||
createRuleAssetSavedObject,
|
||||
} from '../../utils/prebuilt_rules/create_prebuilt_rule_saved_objects';
|
||||
import { deleteAllPrebuiltRuleAssets } from '../../utils/prebuilt_rules/delete_all_prebuilt_rule_assets';
|
||||
import { installPrebuiltRulesAndTimelines } from '../../utils/prebuilt_rules/install_prebuilt_rules_and_timelines';
|
||||
import { installPrebuiltRules } from '../../utils/prebuilt_rules/install_prebuilt_rules';
|
||||
import { getPrebuiltRulesStatus } from '../../utils/prebuilt_rules/get_prebuilt_rules_status';
|
||||
import { upgradePrebuiltRules } from '../../utils/prebuilt_rules/upgrade_prebuilt_rules';
|
||||
import { getInstalledRules } from '../../utils/prebuilt_rules/get_installed_rules';
|
||||
getPrebuiltRulesStatus,
|
||||
installPrebuiltRules,
|
||||
getInstalledRules,
|
||||
upgradePrebuiltRules,
|
||||
} from '../../../utils';
|
||||
|
||||
// eslint-disable-next-line import/no-default-export
|
||||
export default ({ getService }: FtrProviderContext): void => {
|
||||
const es = getService('es');
|
||||
const supertest = getService('supertest');
|
||||
const log = getService('log');
|
||||
|
||||
describe('install and upgrade prebuilt rules with mock rule assets', () => {
|
||||
describe('@ess @serverless @skipInQA install and upgrade prebuilt rules with mock rule assets', () => {
|
||||
beforeEach(async () => {
|
||||
await deleteAllRules(supertest, log);
|
||||
await deleteAllTimelines(es);
|
|
@ -7,12 +7,16 @@
|
|||
|
||||
import { FtrConfigProviderContext } from '@kbn/test';
|
||||
|
||||
// eslint-disable-next-line import/no-default-export
|
||||
export default async function ({ readConfigFile }: FtrConfigProviderContext) {
|
||||
const functionalConfig = await readConfigFile(require.resolve('../config.base.ts'));
|
||||
const functionalConfig = await readConfigFile(
|
||||
require.resolve('../../../../../../config/ess/config.base.trial')
|
||||
);
|
||||
|
||||
return {
|
||||
...functionalConfig.getAll(),
|
||||
testFiles: [require.resolve('.')],
|
||||
testFiles: [require.resolve('..')],
|
||||
junit: {
|
||||
reportName: 'Detection Engine ESS / Update Prebuilt Rules Package - API Integration Tests',
|
||||
},
|
||||
};
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
/*
|
||||
* 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 { createTestConfig } from '../../../../../../config/serverless/config.base';
|
||||
|
||||
export default createTestConfig({
|
||||
testFiles: [require.resolve('..')],
|
||||
junit: {
|
||||
reportName:
|
||||
'Detection Engine Serverless / Update Prebuilt Rules Package - API Integration Tests',
|
||||
},
|
||||
});
|
|
@ -0,0 +1,14 @@
|
|||
/*
|
||||
* 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 { FtrProviderContext } from '../../../../../ftr_provider_context';
|
||||
|
||||
export default ({ loadTestFile }: FtrProviderContext): void => {
|
||||
describe('Detection Engine API - Update Prebuilt Rules Package', function () {
|
||||
loadTestFile(require.resolve('./update_prebuilt_rules_package'));
|
||||
});
|
||||
};
|
|
@ -8,25 +8,23 @@ import fs from 'fs/promises';
|
|||
import path from 'path';
|
||||
import getMajorVersion from 'semver/functions/major';
|
||||
import getMinorVersion from 'semver/functions/minor';
|
||||
// @ts-expect-error we have to check types with "allowJs: false" for now, causing this import to fail
|
||||
import { REPO_ROOT } from '@kbn/repo-info';
|
||||
import JSON5 from 'json5';
|
||||
import expect from 'expect';
|
||||
import { PackageSpecManifest } from '@kbn/fleet-plugin/common';
|
||||
import { FtrProviderContext } from '../../common/ftr_provider_context';
|
||||
import { FtrProviderContext } from '../../../../../ftr_provider_context';
|
||||
import {
|
||||
deleteAllPrebuiltRuleAssets,
|
||||
deleteAllRules,
|
||||
getInstalledRules,
|
||||
getPrebuiltRulesStatus,
|
||||
installPrebuiltRules,
|
||||
installPrebuiltRulesPackageByVersion,
|
||||
upgradePrebuiltRules,
|
||||
} from '../../utils';
|
||||
import { reviewPrebuiltRulesToInstall } from '../../utils/prebuilt_rules/review_install_prebuilt_rules';
|
||||
import { reviewPrebuiltRulesToUpgrade } from '../../utils/prebuilt_rules/review_upgrade_prebuilt_rules';
|
||||
import { installPrebuiltRulesPackageByVersion } from '../../utils/prebuilt_rules/install_fleet_package_by_url';
|
||||
import { getInstalledRules } from '../../utils/prebuilt_rules/get_installed_rules';
|
||||
reviewPrebuiltRulesToInstall,
|
||||
reviewPrebuiltRulesToUpgrade,
|
||||
} from '../../../utils';
|
||||
|
||||
// eslint-disable-next-line import/no-default-export
|
||||
export default ({ getService }: FtrProviderContext): void => {
|
||||
const es = getService('es');
|
||||
const supertest = getService('supertest');
|
||||
|
@ -63,7 +61,7 @@ export default ({ getService }: FtrProviderContext): void => {
|
|||
return getPackageResponse.body.item.version ?? '';
|
||||
};
|
||||
|
||||
describe('update_prebuilt_rules_package', () => {
|
||||
describe('@ess @serverless @skipInQA update_prebuilt_rules_package', () => {
|
||||
before(async () => {
|
||||
const configFilePath = path.resolve(REPO_ROOT, 'fleet_packages.json');
|
||||
const fleetPackages = await fs.readFile(configFilePath, 'utf8');
|
|
@ -0,0 +1,23 @@
|
|||
/*
|
||||
* 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 type { Client } from '@elastic/elasticsearch';
|
||||
import { SECURITY_SOLUTION_SAVED_OBJECT_INDEX } from '@kbn/core-saved-objects-server';
|
||||
|
||||
/**
|
||||
* Remove all prebuilt rule assets from the security solution savedObjects index
|
||||
* @param es The ElasticSearch handle
|
||||
*/
|
||||
export const deleteAllPrebuiltRuleAssets = async (es: Client): Promise<void> => {
|
||||
await es.deleteByQuery({
|
||||
index: SECURITY_SOLUTION_SAVED_OBJECT_INDEX,
|
||||
q: 'type:security-rule',
|
||||
wait_for_completion: true,
|
||||
refresh: true,
|
||||
body: {},
|
||||
});
|
||||
};
|
|
@ -0,0 +1,23 @@
|
|||
/*
|
||||
* 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 type { Client } from '@elastic/elasticsearch';
|
||||
import { SECURITY_SOLUTION_SAVED_OBJECT_INDEX } from '@kbn/core-saved-objects-server';
|
||||
|
||||
/**
|
||||
* Remove all timelines from the security solution savedObjects index
|
||||
* @param es The ElasticSearch handle
|
||||
*/
|
||||
export const deleteAllTimelines = async (es: Client): Promise<void> => {
|
||||
await es.deleteByQuery({
|
||||
index: SECURITY_SOLUTION_SAVED_OBJECT_INDEX,
|
||||
q: 'type:siem-ui-timeline',
|
||||
wait_for_completion: true,
|
||||
refresh: true,
|
||||
body: {},
|
||||
});
|
||||
};
|
|
@ -18,10 +18,11 @@ export async function deletePrebuiltRulesFleetPackage(
|
|||
) {
|
||||
const resp = await supertest
|
||||
.get(epmRouteService.getInfoPath('security_detection_engine'))
|
||||
.send()
|
||||
.expect(200);
|
||||
.set('kbn-xsrf', 'true')
|
||||
.set('elastic-api-version', '2023-10-31')
|
||||
.send();
|
||||
|
||||
if (resp.body.response.status === 'installed') {
|
||||
if (resp.status === 200 && resp.body.response.status === 'installed') {
|
||||
await supertest
|
||||
.delete(
|
||||
epmRouteService.getRemovePath('security_detection_engine', resp.body.response.version)
|
|
@ -0,0 +1,23 @@
|
|||
/*
|
||||
* 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 { epmRouteService } from '@kbn/fleet-plugin/common';
|
||||
import type SuperTest from 'supertest';
|
||||
|
||||
/**
|
||||
* Gets the security_detection_engine package using fleet API.
|
||||
*
|
||||
* @param supertest Supertest instance
|
||||
* @returns The API endpoint response. Will have status 200 if package installed or 404 if not
|
||||
*/
|
||||
export async function getPrebuiltRulesFleetPackage(supertest: SuperTest.SuperTest<SuperTest.Test>) {
|
||||
return await supertest
|
||||
.get(epmRouteService.getInfoPath('security_detection_engine'))
|
||||
.set('kbn-xsrf', 'true')
|
||||
.set('elastic-api-version', '2023-10-31')
|
||||
.send();
|
||||
}
|
|
@ -23,6 +23,7 @@ export const getPrebuiltRulesStatus = async (
|
|||
.get(GET_PREBUILT_RULES_STATUS_URL)
|
||||
.set('kbn-xsrf', 'true')
|
||||
.set('elastic-api-version', '1')
|
||||
.set('x-elastic-internal-origin', 'foo')
|
||||
.send()
|
||||
.expect(200);
|
||||
|
|
@ -5,6 +5,18 @@
|
|||
* 2.0.
|
||||
*/
|
||||
export * from './create_prebuilt_rule_saved_objects';
|
||||
export * from './delete_all_prebuilt_rule_assets';
|
||||
export * from './delete_all_timelines';
|
||||
export * from './delete_prebuilt_rules_fleet_package';
|
||||
export * from './get_installed_rules';
|
||||
export * from './get_prebuilt_rules_and_timelines_status';
|
||||
export * from './get_prebuilt_rules_status';
|
||||
export * from './get_prebuilt_rules_fleet_package';
|
||||
export * from './install_fleet_package_by_url';
|
||||
export * from './install_mock_prebuilt_rules';
|
||||
export * from './install_prebuilt_rules_and_timelines';
|
||||
export * from './install_prebuilt_rules_fleet_package';
|
||||
export * from './install_prebuilt_rules';
|
||||
export * from './review_install_prebuilt_rules';
|
||||
export * from './review_upgrade_prebuilt_rules';
|
||||
export * from './upgrade_prebuilt_rules';
|
||||
|
|
|
@ -8,6 +8,7 @@ import type { Client } from '@elastic/elasticsearch';
|
|||
import type SuperTest from 'supertest';
|
||||
import { ALL_SAVED_OBJECT_INDICES } from '@kbn/core-saved-objects-server';
|
||||
import { InstallPackageResponse } from '@kbn/fleet-plugin/common/types';
|
||||
import { epmRouteService } from '@kbn/fleet-plugin/common';
|
||||
|
||||
/**
|
||||
* Installs latest available non-prerelease prebuilt rules package `security_detection_engine`.
|
||||
|
@ -25,6 +26,7 @@ export const installPrebuiltRulesPackageViaFleetAPI = async (
|
|||
const fleetResponse = await supertest
|
||||
.post(`/api/fleet/epm/packages/security_detection_engine`)
|
||||
.set('kbn-xsrf', 'xxxx')
|
||||
.set('elastic-api-version', '2023-10-31')
|
||||
.type('application/json')
|
||||
.send({ force: true })
|
||||
.expect(200);
|
||||
|
@ -63,8 +65,9 @@ export const installPrebuiltRulesPackageByVersion = async (
|
|||
version: string
|
||||
): Promise<InstallPackageResponse> => {
|
||||
const fleetResponse = await supertest
|
||||
.post(`/api/fleet/epm/packages/security_detection_engine/${version}`)
|
||||
.post(epmRouteService.getInstallPath('security_detection_engine', version))
|
||||
.set('kbn-xsrf', 'xxxx')
|
||||
.set('elastic-api-version', '2023-10-31')
|
||||
.type('application/json')
|
||||
.send({ force: true })
|
||||
.expect(200);
|
|
@ -43,6 +43,7 @@ export const installPrebuiltRules = async (
|
|||
.post(PERFORM_RULE_INSTALLATION_URL)
|
||||
.set('kbn-xsrf', 'true')
|
||||
.set('elastic-api-version', '1')
|
||||
.set('x-elastic-internal-origin', 'foo')
|
||||
.send(payload)
|
||||
.expect(200);
|
||||
|
|
@ -22,6 +22,7 @@ export const reviewPrebuiltRulesToInstall = async (
|
|||
.post(REVIEW_RULE_INSTALLATION_URL)
|
||||
.set('kbn-xsrf', 'true')
|
||||
.set('elastic-api-version', '1')
|
||||
.set('x-elastic-internal-origin', 'securitySolution')
|
||||
.send()
|
||||
.expect(200);
|
||||
|
|
@ -22,6 +22,7 @@ export const reviewPrebuiltRulesToUpgrade = async (
|
|||
.post(REVIEW_RULE_UPGRADE_URL)
|
||||
.set('kbn-xsrf', 'true')
|
||||
.set('elastic-api-version', '1')
|
||||
.set('x-elastic-internal-origin', 'securitySolution')
|
||||
.send()
|
||||
.expect(200);
|
||||
|
|
@ -39,6 +39,7 @@ export const upgradePrebuiltRules = async (
|
|||
.post(PERFORM_RULE_UPGRADE_URL)
|
||||
.set('kbn-xsrf', 'true')
|
||||
.set('elastic-api-version', '1')
|
||||
.set('x-elastic-internal-origin', 'foo')
|
||||
.send(payload)
|
||||
.expect(200);
|
||||
|
|
@ -31,6 +31,8 @@
|
|||
"@kbn/core",
|
||||
"@kbn/alerting-plugin",
|
||||
"@kbn/core-http-common",
|
||||
"@kbn/securitysolution-ecs"
|
||||
"@kbn/securitysolution-ecs",
|
||||
"@kbn/fleet-plugin",
|
||||
"@kbn/repo-info",
|
||||
]
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue