FTR: enable ESLint mocha rules for api integration tests (#191267)

## Summary

Follow-up to #190690

Most of API integration tests does not match the path pattern set in the
original PR (thanks @pheyos for catching it) and where not updated.
This PR updates `.eslintrc.js` with explicit patterns to lint
api_integration tests. Hopefully it is final change, but I rely on code
owners to double check it.

Most of the changes are trivial adjustments:
- duplicated before/after hooks `mocha/no-sibling-hooks`
- duplicated test titles `mocha/no-identical-title`
- async function in describe() `mocha/no-async-describe`

---------

Co-authored-by: Ash <1849116+ashokaditya@users.noreply.github.com>
This commit is contained in:
Dzmitry Lemechko 2024-08-30 18:50:35 +02:00 committed by GitHub
parent 22d23ffd29
commit 8436f45fd1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
164 changed files with 518 additions and 622 deletions

View file

@ -1371,8 +1371,10 @@ module.exports = {
},
{
files: [
'test/{accessibility,*functional*,*api_integration*}/apps/**/*.{js,ts}',
'x-pack/test/{accessibility,*functional*,*api_integration*}/apps/**/*.{js,ts}',
'test/{accessibility,*functional*}/apps/**/*.{js,ts}',
'test/*api_integration*/**/*.{js,ts}',
'x-pack/test/{accessibility,*functional*}/apps/**/*.{js,ts}',
'x-pack/test/*api_integration*/**/*.{js,ts}',
'x-pack/test_serverless/{functional,api_integration}/test_suites/**/*.{js,ts}',
],
extends: ['plugin:mocha/recommended'],

View file

@ -224,7 +224,7 @@ export default function ({ getService }: FtrProviderContext) {
expect(response.body[config.serviceKey].fieldFormats.foo.params).to.eql({});
});
it('can specify optional fieldFormats attribute when creating an index pattern', async () => {
it('can specify optional fieldFormats attributes count and customLabel when creating an index pattern', async () => {
const title = `foo-${Date.now()}-${Math.random()}*`;
const response = await supertest.post(config.path).send({
[config.serviceKey]: {

View file

@ -68,13 +68,6 @@ export default function ({ getService }: FtrProviderContext) {
);
});
it('returns 404 error on non-existing scripted field', async () => {
const response1 = await supertest.get(
`/api/index_patterns/index_pattern/${indexPattern.id}/scripted_field/test`
);
expect(response1.status).to.be(404);
});
it('returns error when attempting to fetch a field which is not a scripted field', async () => {
const response2 = await supertest.get(
`/api/index_patterns/index_pattern/${indexPattern.id}/scripted_field/foo`

View file

@ -19,7 +19,7 @@ import type { ToolingLog } from '@kbn/tooling-log';
* Example usage:
* ```ts
const fleetResponse = await retry<InstallPackageResponse>({
test: async () => {
testFn: async () => {
const testResponse = await supertest
.post(`/api/fleet/epm/packages/security_detection_engine`)
.set('kbn-xsrf', 'xxxx')
@ -45,7 +45,7 @@ import type { ToolingLog } from '@kbn/tooling-log';
* @returns The response from the test
*/
export const retry = async <T>({
test,
testFn,
retryService,
utilityName,
retries = 3,
@ -53,7 +53,7 @@ export const retry = async <T>({
retryDelay = 200,
logger,
}: {
test: () => Promise<T>;
testFn: () => Promise<T>;
utilityName: string;
retryService: RetryService;
retries?: number;
@ -77,7 +77,7 @@ export const retry = async <T>({
retryAttempt = retryAttempt + 1;
return await test();
return await testFn();
},
undefined,
retryDelay

View file

@ -34,7 +34,7 @@ export async function waitForRuleStatus({
logger: ToolingLog;
}): Promise<Record<string, any>> {
const ruleResponse = await retry<Record<string, any>>({
test: async () => {
testFn: async () => {
const response = await supertest.get(`/api/alerting/rule/${id}`);
const { execution_status: executionStatus } = response.body || {};
const { status } = executionStatus || {};
@ -74,7 +74,7 @@ export async function waitForDocumentInIndex<T>({
retryDelay?: number;
}): Promise<SearchResponse<T, Record<string, AggregationsAggregate>>> {
return await retry<SearchResponse<T, Record<string, AggregationsAggregate>>>({
test: async () => {
testFn: async () => {
const response = await esClient.search<T>({
index: indexName,
rest_total_hits_as_int: true,
@ -112,7 +112,7 @@ export async function waitForAlertInIndex<T>({
logger: ToolingLog;
}): Promise<SearchResponse<T, Record<string, AggregationsAggregate>>> {
return await retry<SearchResponse<T, Record<string, AggregationsAggregate>>>({
test: async () => {
testFn: async () => {
const response = await esClient.search<T>({
index: indexName,
body: {

View file

@ -36,7 +36,7 @@ export default function bulkUntrackByQueryTests({ getService }: FtrProviderConte
});
for (const scenario of UserAtSpaceScenarios) {
describe(scenario.id, async () => {
describe(scenario.id, () => {
it('should bulk mark alerts as untracked by query', async () => {
const { body: createdRule1 } = await supertest
.post(`${getUrlPrefix(scenario.space.id)}/api/alerting/rule`)

View file

@ -10,8 +10,6 @@ import { FtrProviderContext } from '../../../../common/ftr_provider_context';
// eslint-disable-next-line import/no-default-export
export default function alertingApiIntegrationTests({ loadTestFile }: FtrProviderContext) {
describe('alerting api integration security and spaces enabled', function () {
describe('', function () {
loadTestFile(require.resolve('./alerting'));
});
loadTestFile(require.resolve('./alerting'));
});
}

View file

@ -239,7 +239,7 @@ export default function opsgenieTest({ getService }: FtrProviderContext) {
});
});
describe('optional parameters', async () => {
describe('optional parameters', () => {
describe('responders', () => {
it('should fail to create an alert when the responders is an invalid type', async () => {
const { body } = await supertest

View file

@ -30,7 +30,7 @@ export default function createAlertTests({ getService }: FtrProviderContext) {
const es = getService('es');
const supertestWithoutAuth = getService('supertestWithoutAuth');
describe('clone', async () => {
describe('clone', () => {
const objectRemover = new ObjectRemover(supertest);
const space1 = Spaces[0].id;
const space2 = Spaces[1].id;

View file

@ -14,7 +14,7 @@ import { FtrProviderContext } from '../../../../common/ftr_provider_context';
export default function getRuleFieldsTests({ getService }: FtrProviderContext) {
const supertestWithoutAuth = getService('supertestWithoutAuth');
describe('fields rule', async () => {
describe('fields rule', () => {
for (const scenario of UserAtSpaceScenarios) {
const { user, space } = scenario;
describe(scenario.id, () => {

View file

@ -14,7 +14,7 @@ import { FtrProviderContext } from '../../../../common/ftr_provider_context';
export default function createRuleSuggestionValuesTests({ getService }: FtrProviderContext) {
const space1 = Spaces[0].id;
describe('alerts/suggestions/values', async () => {
describe('alerts/suggestions/values', () => {
const esArchiver = getService('esArchiver');
const supertest = getService('supertest');

View file

@ -19,7 +19,7 @@ export default function createRuleSuggestionValuesTests({ getService }: FtrProvi
const supertest = getService('supertest');
const supertestWithoutAuth = getService('supertestWithoutAuth');
describe('rules/suggestions/values', async () => {
describe('rules/suggestions/values', () => {
const objectRemover = new ObjectRemover(supertest);
const space1 = Spaces[0].id;
const space2 = Spaces[1].id;

View file

@ -75,7 +75,7 @@ export default function alertTests({ getService }: FtrProviderContext) {
const esTestIndexTool = new ESTestIndexTool(es, retry);
const esTestIndexToolOutput = new ESTestIndexTool(es, retry, ES_TEST_OUTPUT_INDEX_NAME);
describe('alert', async () => {
describe('alert', () => {
const objectRemover = new ObjectRemover(supertest);
let actionId: string;

View file

@ -78,7 +78,7 @@ export default function ruleTests({ getService }: FtrProviderContext) {
`.internal.alerts-transform.health.alerts-default-000001`
);
describe('rule', async () => {
describe('rule', () => {
const objectRemover = new ObjectRemover(supertest);
let connectorId: string;
const transformId = 'test_transform_01';

View file

@ -38,7 +38,7 @@ export default function ruleTests({ getService }: FtrProviderContext) {
getAllAADDocs,
} = getRuleServices(getService);
describe('rule', async () => {
describe('rule', () => {
let endDate: string;
let connectorId: string;
const objectRemover = new ObjectRemover(supertest);

View file

@ -33,7 +33,7 @@ export default function ruleTests({ getService }: FtrProviderContext) {
const { es, esTestIndexTool, esTestIndexToolOutput, createEsDocumentsInGroups, waitForDocs } =
getRuleServices(getService);
describe('rule', async () => {
describe('rule', () => {
let endDate: string;
let connectorId: string;
const objectRemover = new ObjectRemover(supertest);

View file

@ -50,7 +50,7 @@ export default function ruleTests({ getService }: FtrProviderContext) {
{ label: 'host.name', searchPath: 'host.name' },
];
describe('rule', async () => {
describe('rule', () => {
let endDate: string;
let connectorId: string;
const objectRemover = new ObjectRemover(supertest);

View file

@ -41,7 +41,7 @@ export default function ruleTests({ getService }: FtrProviderContext) {
`.internal.alerts-${STACK_AAD_INDEX_NAME}.alerts-default-000001`
);
describe('rule', async () => {
describe('rule', () => {
let endDate: string;
let connectorId: string;
const objectRemover = new ObjectRemover(supertest);

View file

@ -18,7 +18,7 @@ export default function ruleTests({ getService }: FtrProviderContext) {
const supertest = getService('supertest');
const retry = getService('retry');
describe('long running rule', async () => {
describe('long running rule', () => {
const objectRemover = new ObjectRemover(supertest);
afterEach(async () => {

View file

@ -29,7 +29,7 @@ export default function createGetTests({ getService }: FtrProviderContext) {
await esArchiver.unload('x-pack/test/functional/es_archives/alerting/8_2_0');
});
describe('rule with null snoozeEndTime value', async () => {
describe('rule with null snoozeEndTime value', () => {
it('has snoozeEndTime removed', async () => {
const response = await es.get<{ alert: RawRule & { snoozeEndTime?: string } }>(
{
@ -60,7 +60,7 @@ export default function createGetTests({ getService }: FtrProviderContext) {
});
});
describe('rules with snoozeEndTime value', async () => {
describe('rules with snoozeEndTime value', () => {
it('has snoozeEndTime migrated to snoozeSchedule', async () => {
const response = await es.get<{ alert: RawRule & { snoozeEndTime?: string } }>(
{

View file

@ -13,7 +13,7 @@ export default function ({ getService }: FtrProviderContext) {
const es = getService('es');
const esDeleteAllIndices = getService('esDeleteAllIndices');
describe('create index', async () => {
describe('create index', () => {
const testIndices = ['my-test-index-001', 'my-test-index-002'];
before(async () => {
await esDeleteAllIndices(testIndices);

View file

@ -54,7 +54,7 @@ export default function ({ getService }: FtrProviderContext) {
const testIndex = '.test_index';
const testAlias = 'test_alias';
const testIlmPolicy = 'test_policy';
describe('GET indices with data enrichers', async () => {
describe('GET indices with data enrichers', () => {
before(async () => {
await createIndex(testIndex);
await createIlmPolicy('test_policy');

View file

@ -19,7 +19,7 @@ export default function ({ getService }: FtrProviderContext) {
};
const testIndex = 'test_index';
describe('GET indices without data enrichers', async () => {
describe('GET indices without data enrichers', () => {
before(async () => {
await createIndex(testIndex);
});

View file

@ -19,7 +19,7 @@ export default function ({ getService }: FtrProviderContext) {
};
const testIndex = 'test_index';
describe('index details', async () => {
describe('index details', () => {
before(async () => {
await createIndex(testIndex);
});

View file

@ -28,8 +28,6 @@ export default function ({ getService }: FtrProviderContext) {
},
};
after(async () => await deleteAllIndices());
before(async () => {
log.debug('Creating index');
try {

View file

@ -26,7 +26,7 @@ export default function ({ loadTestFile, getService }) {
);
});
describe('', () => {
describe('apis', () => {
loadTestFile(require.resolve('./maps_telemetry'));
loadTestFile(require.resolve('./get_indexes_matching_pattern'));
loadTestFile(require.resolve('./create_doc_source'));

View file

@ -22,10 +22,14 @@ export default function ({ getService }: FtrProviderContext) {
const kibanaServer = getService('kibanaServer');
describe('sources', () => {
before(() => esArchiver.load('x-pack/test/functional/es_archives/infra/metrics_and_logs'));
after(() => esArchiver.unload('x-pack/test/functional/es_archives/infra/metrics_and_logs'));
before(() => kibanaServer.savedObjects.cleanStandardList());
after(() => kibanaServer.savedObjects.cleanStandardList());
before(async () => {
await esArchiver.load('x-pack/test/functional/es_archives/infra/metrics_and_logs');
await kibanaServer.savedObjects.cleanStandardList();
});
after(async () => {
await esArchiver.unload('x-pack/test/functional/es_archives/infra/metrics_and_logs');
await kibanaServer.savedObjects.cleanStandardList();
});
const patchRequest = async (
body: PartialMetricsSourceConfigurationProperties

View file

@ -129,7 +129,7 @@ export default ({ getService }: FtrProviderContext) => {
});
testJobConfigs.forEach((testConfig) => {
describe(`EvaluateDataFrameAnalytics ${testConfig.jobType}`, async () => {
describe(`EvaluateDataFrameAnalytics ${testConfig.jobType}`, () => {
it(`should evaluate ${testConfig.jobType} analytics job`, async () => {
const { body, status } = await supertest
.post(`/internal/ml/data_frame/_evaluate`)

View file

@ -88,7 +88,7 @@ export default ({ getService }: FtrProviderContext) => {
});
testJobConfigs.forEach((testConfig) => {
describe(`ExplainDataFrameAnalytics ${testConfig.jobType}`, async () => {
describe(`ExplainDataFrameAnalytics ${testConfig.jobType}`, () => {
it(`should explain ${testConfig.jobType} analytics job`, async () => {
const { body, status } = await supertest
.post(`/internal/ml/data_frame/analytics/_explain`)

View file

@ -62,7 +62,7 @@ export default ({ getService }: FtrProviderContext) => {
expect(body).to.eql({ [jobIdSpace1]: { exists: true, isGroup: false } });
});
it('should find single job from same space', async () => {
it('should find single group from same space', async () => {
const body = await runRequest(idSpace1, 200, [groupSpace1]);
expect(body).to.eql({ [groupSpace1]: { exists: true, isGroup: true } });
});

View file

@ -61,9 +61,6 @@ export default function ({ getService }: FtrProviderContext) {
await getService('esArchiver').unload(
'x-pack/test/functional/es_archives/fleet/empty_fleet_server'
);
});
after(async function () {
await supertest
.post(`/api/fleet/agent_policies/delete`)
.set('kbn-xsrf', 'xxxx')

View file

@ -23,7 +23,7 @@ export default function ({ getService }: FtrProviderContext) {
const esArchiver = getService('esArchiver');
describe('certs api', () => {
describe('empty index', async () => {
describe('empty index', () => {
it('returns empty array for no data', async () => {
const apiResponse = await supertest
.post(`/internal/search/ese`)
@ -41,7 +41,7 @@ export default function ({ getService }: FtrProviderContext) {
});
});
describe('when data is present', async () => {
describe('when data is present', () => {
const now = moment();
const cnva = now.add(6, 'months').toISOString();
const cnvb = now.subtract(23, 'weeks').toISOString();

View file

@ -15,7 +15,7 @@ export default function ({ getService }: FtrProviderContext) {
const supertest = getService('supertest');
const retry = getService('retry');
describe('monitor state scoping', async () => {
describe('monitor state scoping', () => {
const numIps = 4; // Must be > 2 for IP uniqueness checks
let dateRangeStart: string;
@ -37,7 +37,7 @@ export default function ({ getService }: FtrProviderContext) {
// was available and the query code assumed at least one
// event would be a summary for each monitor.
// See https://github.com/elastic/kibana/issues/81950
describe('checks with no summaries', async () => {
describe('checks with no summaries', () => {
const testMonitorId = 'scope-test-id';
before(async () => {
const es = getService('es');
@ -55,7 +55,7 @@ export default function ({ getService }: FtrProviderContext) {
});
});
describe('query document scoping with mismatched check statuses', async () => {
describe('query document scoping with mismatched check statuses', () => {
let checks: any[] = [];
let nonSummaryIp: string | null = null;
const testMonitorId = 'scope-test-id';
@ -104,7 +104,7 @@ export default function ({ getService }: FtrProviderContext) {
expect(nonSummaryRes.summaries.length).to.eql(0);
});
describe('matching outside of the date range', async () => {
describe('matching outside of the date range', () => {
before('set date range to future', () => {
const futureDate = new Date();
@ -129,7 +129,7 @@ export default function ({ getService }: FtrProviderContext) {
});
});
describe('test status filter', async () => {
describe('test status filter', () => {
const upMonitorId = 'up-test-id';
const downMonitorId = 'down-test-id';
const mixMonitorId = 'mix-test-id';

View file

@ -17,7 +17,7 @@ export default function ({ getService }: FtrProviderContext) {
const dateRangeStart = new Date().toISOString();
const dateRangeEnd = new Date().toISOString();
describe('when no data is present', async () => {
describe('when no data is present', () => {
it('returns a null snapshot', async () => {
const apiResponse = await supertest.get(API_URLS.SNAPSHOT_COUNT).query({
dateRangeStart,
@ -32,7 +32,7 @@ export default function ({ getService }: FtrProviderContext) {
});
});
describe('when data is present', async () => {
describe('when data is present', () => {
const numUpMonitors = 10;
const numDownMonitors = 7;
const numIps = 2;
@ -42,7 +42,7 @@ export default function ({ getService }: FtrProviderContext) {
[true, false].forEach((includeTimespan: boolean) => {
[true, false].forEach((includeObserver: boolean) => {
describe(`with timespans=${includeTimespan} and observer=${includeObserver}`, async () => {
describe(`with timespans=${includeTimespan} and observer=${includeObserver}`, () => {
before(async () => {
const promises: Array<Promise<any>> = [];

View file

@ -9,12 +9,12 @@ import { ELASTIC_HTTP_VERSION_HEADER } from '@kbn/core-http-common';
import { FtrProviderContext } from '../ftr_provider_context';
export async function FleetAndAgents({ getService }: FtrProviderContext) {
// Use elastic/fleet-server service account to execute setup to verify privilege configuration
const es = getService('es');
const supertestWithoutAuth = getService('supertestWithoutAuth');
return {
async setup() {
// Use elastic/fleet-server service account to execute setup to verify privilege configuration
const { token } = await es.security.createServiceToken({
namespace: 'elastic',
service: 'fleet-server',

View file

@ -70,7 +70,7 @@ export default function ApiTest({ getService }: FtrProviderContext) {
registry.when.skip(`with data loaded`, { config: 'basic', archives: [] }, () => {
// FLAKY: https://github.com/elastic/kibana/issues/172769
describe('error_count', () => {
describe('error_count: with data loaded', () => {
beforeEach(async () => {
await generateErrorData({ serviceName: 'synth-go', start, end, apmSynthtraceEsClient });
await generateErrorData({ serviceName: 'synth-java', start, end, apmSynthtraceEsClient });
@ -309,7 +309,7 @@ export default function ApiTest({ getService }: FtrProviderContext) {
{ config: 'basic', archives: [] },
() => {
// FLAKY: https://github.com/elastic/kibana/issues/176975
describe('error_count', () => {
describe('error_count: with data loaded and using KQL filter', () => {
before(async () => {
await generateErrorData({ serviceName: 'synth-go', start, end, apmSynthtraceEsClient });
await generateErrorData({ serviceName: 'synth-java', start, end, apmSynthtraceEsClient });

View file

@ -71,7 +71,7 @@ export default function ApiTest({ getService }: FtrProviderContext) {
registry.when(`with data loaded`, { config: 'basic', archives: [] }, () => {
// FLAKY: https://github.com/elastic/kibana/issues/176977
describe('transaction_error_rate', () => {
describe('transaction_error_rate: with data loaded', () => {
before(async () => {
await generateErrorData({ serviceName: 'synth-go', start, end, apmSynthtraceEsClient });
await generateErrorData({ serviceName: 'synth-java', start, end, apmSynthtraceEsClient });
@ -330,7 +330,7 @@ export default function ApiTest({ getService }: FtrProviderContext) {
registry.when(`with data loaded and using KQL filter`, { config: 'basic', archives: [] }, () => {
// FLAKY: https://github.com/elastic/kibana/issues/176983
describe('transaction_error_rate', () => {
describe('transaction_error_rate: with data loaded and using KQL filter', () => {
before(async () => {
await generateErrorData({ serviceName: 'synth-go', start, end, apmSynthtraceEsClient });
await generateErrorData({ serviceName: 'synth-java', start, end, apmSynthtraceEsClient });

View file

@ -74,7 +74,7 @@ export default function ApiTest({ getService }: FtrProviderContext) {
registry.when(`with data loaded`, { config: 'basic', archives: [] }, () => {
// FLAKY: https://github.com/elastic/kibana/issues/176986
// Failing: See https://github.com/elastic/kibana/issues/176989
describe('transaction_duration', () => {
describe('transaction_duration: with data loaded', () => {
before(async () => {
await generateLatencyData({ serviceName: 'synth-go', start, end, apmSynthtraceEsClient });
await generateLatencyData({ serviceName: 'synth-java', start, end, apmSynthtraceEsClient });
@ -302,7 +302,7 @@ export default function ApiTest({ getService }: FtrProviderContext) {
// FLAKY: https://github.com/elastic/kibana/issues/176989
registry.when(`with data loaded and using KQL filter`, { config: 'basic', archives: [] }, () => {
describe('transaction_duration', () => {
describe('transaction_duration: with data loaded and using KQL filter', () => {
before(async () => {
await generateLatencyData({ serviceName: 'synth-go', start, end, apmSynthtraceEsClient });
await generateLatencyData({ serviceName: 'synth-java', start, end, apmSynthtraceEsClient });

View file

@ -89,7 +89,7 @@ export default function ApiTest({ getService }: FtrProviderContext) {
await deleteAllServiceDashboard(apmApiClient, 'synth-go', start, end);
});
describe('when data is not loaded', () => {
describe('and when data is not loaded', () => {
it('creates a new service dashboard', async () => {
const serviceDashboard = {
dashboardSavedObjectId: 'dashboard-saved-object-id',

View file

@ -86,6 +86,7 @@ export default function ApiTest({ getService }: FtrProviderContext) {
// FLAKY: https://github.com/elastic/kibana/issues/177120
registry.when('mappings and APM data exists', { config: 'basic', archives: [] }, () => {
// eslint-disable-next-line mocha/no-sibling-hooks
before(async () => {
await generateApmData(synthtrace);
});
@ -123,7 +124,7 @@ export default function ApiTest({ getService }: FtrProviderContext) {
});
});
describe('when fetching the data view', async () => {
describe('when fetching the data view', () => {
let dataViewResponse: request.Response;
before(async () => {
@ -210,7 +211,7 @@ export default function ApiTest({ getService }: FtrProviderContext) {
});
});
describe('when creating data view in "default" space', async () => {
describe('when creating data view in "default" space', () => {
it('can be retrieved from the "default" space', async () => {
await createDataViewWithWriteUser({ spaceId: 'default' });
const res = await getDataView({ spaceId: 'default' });
@ -225,7 +226,7 @@ export default function ApiTest({ getService }: FtrProviderContext) {
});
});
describe('when creating data view in "foo" space', async () => {
describe('when creating data view in "foo" space', () => {
it('can be retrieved from the "foo" space', async () => {
await createDataViewWithWriteUser({ spaceId: 'foo' });
const res = await getDataView({ spaceId: 'foo' });

View file

@ -38,7 +38,7 @@ export default function ApiTest({ getService }: FtrProviderContext) {
'Dependency for service when data is not loaded',
{ config: 'basic', archives: [] },
() => {
it('handles empty state', async () => {
it('handles empty state #1', async () => {
const { status, body } = await callApi();
expect(status).to.be(200);
@ -76,7 +76,7 @@ export default function ApiTest({ getService }: FtrProviderContext) {
'Dependency for service breakdown when data is not loaded',
{ config: 'basic', archives: [] },
() => {
it('handles empty state', async () => {
it('handles empty state #2', async () => {
const { status, body } = await callApi();
expect(status).to.be(200);
@ -87,7 +87,7 @@ export default function ApiTest({ getService }: FtrProviderContext) {
// FLAKY: https://github.com/elastic/kibana/issues/177125
registry.when('Dependency for services breakdown', { config: 'basic', archives: [] }, () => {
describe('when data is loaded', () => {
describe('when data is loaded - breakdown', () => {
before(async () => {
await generateData({ apmSynthtraceEsClient, start, end });
});

View file

@ -100,7 +100,7 @@ export default function ApiTest({ getService }: FtrProviderContext) {
]);
});
describe('transactions', async () => {
describe('transactions', () => {
let body: APIReturnType<'GET /internal/apm/diagnostics'>;
const expectedDocCount = 450;

View file

@ -28,7 +28,7 @@ export default function ApiTest(ftrProviderContext: FtrProviderContext) {
await setupFleet(bettertest);
});
describe('cloud_apm_migration_enabled', () => {
describe('cloud_apm_migration_enabled - basic', () => {
it('should be false when when config not set', async () => {
const { body } = await bettertest({
pathname: '/internal/apm/fleet/migration_check',
@ -39,6 +39,7 @@ export default function ApiTest(ftrProviderContext: FtrProviderContext) {
});
registry.when('Fleet migration check - cloud', { config: 'cloud', archives: [] }, () => {
// eslint-disable-next-line mocha/no-sibling-hooks
before(async () => {
await setupFleet(bettertest);
});
@ -58,7 +59,7 @@ export default function ApiTest(ftrProviderContext: FtrProviderContext) {
});
});
describe('cloud_apm_migration_enabled', () => {
describe('cloud_apm_migration_enabled - cloud', () => {
it('should be true when when config is set', async () => {
const { body } = await bettertest({
pathname: '/internal/apm/fleet/migration_check',

View file

@ -76,6 +76,7 @@ export default function ApiTest({ getService }: FtrProviderContext) {
serverlessId,
} = config;
// eslint-disable-next-line mocha/no-sibling-hooks
before(async () => {
await generateData({ start, end, apmSynthtraceEsClient });
});

View file

@ -54,6 +54,7 @@ export default function ApiTest({ getService }: FtrProviderContext) {
const { billedDurationMs, pythonServerlessFunctionNames, faasDuration, serverlessId } = config;
const { expectedMemoryUsedRate } = expectedValues;
// eslint-disable-next-line mocha/no-sibling-hooks
before(async () => {
await generateData({ start, end, apmSynthtraceEsClient });
});

View file

@ -50,7 +50,7 @@ export default function serviceMapsApiTests({ getService }: FtrProviderContext)
});
registry.when('Service Map without data', { config: 'trial', archives: [] }, () => {
describe('/internal/apm/service-map', () => {
describe('/internal/apm/service-map without data', () => {
it('returns an empty list', async () => {
const response = await apmApiClient.readUser({
endpoint: `GET /internal/apm/service-map`,
@ -68,7 +68,7 @@ export default function serviceMapsApiTests({ getService }: FtrProviderContext)
});
});
describe('/internal/apm/service-map/service/{serviceName}', () => {
describe('/internal/apm/service-map/service/{serviceName} without data', () => {
let response: ServiceNodeResponse;
before(async () => {
response = await apmApiClient.readUser({
@ -128,7 +128,7 @@ export default function serviceMapsApiTests({ getService }: FtrProviderContext)
});
registry.when('Service Map with data', { config: 'trial', archives: ['apm_8.0.0'] }, () => {
describe('/internal/apm/service-map', () => {
describe('/internal/apm/service-map with data', () => {
let response: ServiceMapResponse;
before(async () => {
response = await apmApiClient.readUser({
@ -322,7 +322,7 @@ export default function serviceMapsApiTests({ getService }: FtrProviderContext)
});
});
describe('/internal/apm/service-map/service/{serviceName}', () => {
describe('/internal/apm/service-map/service/{serviceName} with data', () => {
let response: ServiceNodeResponse;
before(async () => {
response = await apmApiClient.readUser({
@ -371,7 +371,7 @@ export default function serviceMapsApiTests({ getService }: FtrProviderContext)
});
});
describe('/internal/apm/service-map/dependency', () => {
describe('/internal/apm/service-map/dependency with data', () => {
let response: DependencyResponse;
before(async () => {
response = await apmApiClient.readUser({
@ -416,7 +416,7 @@ export default function serviceMapsApiTests({ getService }: FtrProviderContext)
});
describe('With comparison', () => {
describe('/internal/apm/service-map/dependency', () => {
describe('/internal/apm/service-map/dependency with comparison', () => {
let response: DependencyResponse;
before(async () => {
response = await apmApiClient.readUser({
@ -467,7 +467,7 @@ export default function serviceMapsApiTests({ getService }: FtrProviderContext)
});
});
describe('/internal/apm/service-map/service/{serviceName}', () => {
describe('/internal/apm/service-map/service/{serviceName} with comparison', () => {
let response: ServiceNodeResponse;
before(async () => {
response = await apmApiClient.readUser({

View file

@ -311,7 +311,7 @@ export default function ApiTest({ getService }: FtrProviderContext) {
status: number;
body: APIReturnType<'GET /internal/apm/services/{serviceName}/dependencies'>;
};
// eslint-disable-next-line mocha/no-sibling-hooks
before(async () => {
response = await apmApiClient.readUser({
endpoint: `GET /internal/apm/services/{serviceName}/dependencies`,

View file

@ -75,9 +75,7 @@ export default function ApiTest({ getService }: FtrProviderContext) {
start,
end,
});
});
beforeEach(async () => {
response = await apmApiClient.readUser({
endpoint:
'GET /internal/apm/services/{serviceName}/service_overview_instances/detailed_statistics',
@ -135,9 +133,6 @@ export default function ApiTest({ getService }: FtrProviderContext) {
start,
end,
});
});
beforeEach(async () => {
response = await apmApiClient.readUser({
endpoint:
'GET /internal/apm/services/{serviceName}/service_overview_instances/detailed_statistics',

View file

@ -78,7 +78,7 @@ export default function annotationApiTests({ getService }: FtrProviderContext) {
}
registry.when('Annotations with a basic license', { config: 'basic', archives: [] }, () => {
describe('when creating an annotation', () => {
describe('when creating an annotation in basic license', () => {
it('fails with a 403 forbidden', async () => {
const err = await expectToReject<ApmApiError>(() =>
createAnnotation({
@ -101,7 +101,7 @@ export default function annotationApiTests({ getService }: FtrProviderContext) {
});
registry.when('Annotations with a trial license', { config: 'trial', archives: [] }, () => {
describe('when creating an annotation', () => {
describe('when creating an annotation in trial license', () => {
afterEach(async () => {
const indexExists = await es.indices.exists({ index: DEFAULT_INDEX_NAME });
if (indexExists) {

View file

@ -208,6 +208,7 @@ export default function ApiTest({ getService }: FtrProviderContext) {
{ config: 'basic', archives: [archiveName] },
() => {
let servicesDetailedStatistics: ServicesDetailedStatisticsReturn;
// eslint-disable-next-line mocha/no-sibling-hooks
before(async () => {
const response = await apmApiClient.readUser({
endpoint: `POST /internal/apm/services/detailed_statistics`,
@ -232,13 +233,13 @@ export default function ApiTest({ getService }: FtrProviderContext) {
expect(response.status).to.be(200);
servicesDetailedStatistics = response.body;
});
it('returns current period data', async () => {
it('returns current period data with time comparison', async () => {
expect(servicesDetailedStatistics.currentPeriod).not.to.be.empty();
});
it('returns previous period data', async () => {
expect(servicesDetailedStatistics.previousPeriod).not.to.be.empty();
});
it('returns current data for requested service names', () => {
it('returns current data for requested service names with time comparison', () => {
serviceNames.forEach((serviceName) => {
expect(servicesDetailedStatistics.currentPeriod[serviceName]).not.to.be.empty();
});
@ -248,7 +249,7 @@ export default function ApiTest({ getService }: FtrProviderContext) {
expect(servicesDetailedStatistics.currentPeriod[serviceName]).not.to.be.empty();
});
});
it('returns correct statistics', () => {
it('returns correct statistics with time comparison', () => {
const currentPeriodStatistics = servicesDetailedStatistics.currentPeriod[serviceNames[0]];
const previousPeriodStatistics = servicesDetailedStatistics.previousPeriod[serviceNames[0]];

View file

@ -92,9 +92,6 @@ export default function apiTest({ getService }: FtrProviderContext) {
describe('when there are both v2 and v3 jobs', () => {
before(async () => {
await createV2Jobs(['production', 'development']);
});
before(async () => {
await createV3Jobs(['production']);
});

View file

@ -243,7 +243,7 @@ export default function ApiTest({ getService }: FtrProviderContext) {
});
});
describe('list source maps', async () => {
describe('list source maps', () => {
before(async () => {
const totalCount = 6;
const sourcemapCount = times(totalCount);

View file

@ -620,10 +620,6 @@ export default function ApiTest({ getService }: FtrProviderContext) {
]);
});
});
after(() => {
return apmSynthtraceEsClient.clean();
});
}
);
}

View file

@ -848,7 +848,7 @@ export default ({ getService }: FtrProviderContext): void => {
});
});
describe('title', async () => {
describe('title', () => {
it('400s if the title is too long', async () => {
const longTitle = 'a'.repeat(161);
@ -903,7 +903,7 @@ export default ({ getService }: FtrProviderContext): void => {
});
});
describe('description', async () => {
describe('description', () => {
it('400s if the description is too long', async () => {
const longDescription = 'a'.repeat(30001);
@ -958,7 +958,7 @@ export default ({ getService }: FtrProviderContext): void => {
});
});
describe('categories', async () => {
describe('categories', () => {
it('400s when a too long category value is passed', async () => {
const postedCase = await createCase(supertest, postCaseReq);
await updateCase({
@ -1011,7 +1011,7 @@ export default ({ getService }: FtrProviderContext): void => {
});
});
describe('tags', async () => {
describe('tags', () => {
it('400s when tags array is too long', async () => {
const tags = Array(201).fill('foo');
@ -1085,7 +1085,7 @@ export default ({ getService }: FtrProviderContext): void => {
});
});
describe('customFields', async () => {
describe('customFields', () => {
it('patches a case with missing required custom fields to their default values', async () => {
await createConfiguration(
supertest,
@ -1449,7 +1449,7 @@ export default ({ getService }: FtrProviderContext): void => {
});
describe('alerts', () => {
describe('esArchiver', () => {
describe('Update', () => {
const defaultSignalsIndex = '.siem-signals-default-000001';
beforeEach(async () => {
@ -1583,7 +1583,7 @@ export default ({ getService }: FtrProviderContext): void => {
});
});
describe('esArchiver', () => {
describe('No update', () => {
const defaultSignalsIndex = '.siem-signals-default-000001';
beforeEach(async () => {

View file

@ -467,7 +467,7 @@ export default ({ getService }: FtrProviderContext): void => {
await createCase(supertest, getPostCaseRequest({ description: longDescription }), 400);
});
describe('tags', async () => {
describe('tags', () => {
it('400s if the a tag is a whitespace', async () => {
const tags = ['test', ' '];
@ -493,7 +493,7 @@ export default ({ getService }: FtrProviderContext): void => {
});
});
describe('categories', async () => {
describe('categories', () => {
it('400s when the category is too long', async () => {
await createCase(
supertest,
@ -525,7 +525,7 @@ export default ({ getService }: FtrProviderContext): void => {
});
});
describe('customFields', async () => {
describe('customFields', () => {
it('400s when trying to patch with duplicated custom field keys', async () => {
await createCase(
supertest,

View file

@ -29,7 +29,10 @@ interface SpaceCreate {
export function SpacesServiceProvider({ getService }: FtrProviderContext) {
const log = getService('log');
const config = getService('config');
const kibanaServer = getService('kibanaServer');
const url = formatUrl(config.get('servers.kibana'));
// used often in fleet_api_integration tests
const TEST_SPACE_1 = 'test1';
const certificateAuthorities = config.get('servers.kibana.certificateAuthorities');
const httpsAgent: Https.Agent | undefined = certificateAuthorities
@ -109,5 +112,21 @@ export function SpacesServiceProvider({ getService }: FtrProviderContext) {
pathname: `/s/${spaceId}`,
});
}
public getDefaultTestSpace() {
return TEST_SPACE_1;
}
public async createTestSpace(id: string, name: string = id) {
try {
await kibanaServer.spaces.create({
id,
name,
});
} catch (err) {
log.error(`failed to create space with 'id=${id}': ${err}`);
}
return id;
}
})();
}

View file

@ -997,8 +997,6 @@ export default function (providerContext: FtrProviderContext) {
.expect(200)
);
await Promise.all(deletedPromises);
});
after(async () => {
await esArchiver.unload('x-pack/test/functional/es_archives/fleet/empty_fleet_server');
});
let agentPolicyId: undefined | string;
@ -1554,10 +1552,8 @@ export default function (providerContext: FtrProviderContext) {
await esArchiver.load('x-pack/test/functional/es_archives/fleet/empty_fleet_server');
await fleetAndAgents.setup();
await createAgentPolicyWithPackagePolicy();
});
before(async () => {
const getPkRes = await getPackage('system');
const getPkRes = await getPackage('system');
// we must first force install the system package to override package verification error on policy create
await epmInstall('system', `${getPkRes.body.item.version}`);

View file

@ -93,9 +93,8 @@ export default function (providerContext: FtrProviderContext) {
});
after(async () => {
// Wait before agent status is updated
return new Promise((resolve) => setTimeout(resolve, AGENT_UPDATE_LAST_CHECKIN_INTERVAL_MS));
});
after(async () => {
await new Promise((resolve) => setTimeout(resolve, AGENT_UPDATE_LAST_CHECKIN_INTERVAL_MS));
await esArchiver.unload('x-pack/test/functional/es_archives/fleet/agents');
});

View file

@ -151,9 +151,7 @@ export default function (providerContext: FtrProviderContext) {
await esArchiver.load('x-pack/test/functional/es_archives/fleet/empty_fleet_server');
await kibanaServer.savedObjects.cleanStandardList();
await setupTestUsers(getService('security'));
});
before(async () => {
await supertest
.post(`/api/fleet/agent_policies`)
.set('kbn-xsrf', 'xxxx')

View file

@ -47,23 +47,7 @@ export default function (providerContext: FtrProviderContext) {
})
.set('kbn-xsrf', 'xxxx')
.expect(200);
});
after(async () => {
await esArchiver.unload('x-pack/test/functional/es_archives/fleet/agents');
await supertest
.delete(`/api/fleet/epm/packages/${FLEET_ELASTIC_AGENT_PACKAGE}/${elasticAgentpkgVersion}`)
.set('kbn-xsrf', 'xxxx');
await es.transport
.request({
method: 'DELETE',
path: `/_data_stream/metrics-elastic_agent.elastic_agent-default`,
})
.catch(() => {});
});
const fleetServerVersion = '8.14.0';
before(async () => {
await supertest.post(`/api/fleet/agent_policies`).set('kbn-xsrf', 'kibana').send({
name: 'Fleet Server policy 1',
id: 'fleet-server-policy',
@ -90,7 +74,33 @@ export default function (providerContext: FtrProviderContext) {
'fleet-server-policy',
fleetServerVersion
);
// Make agent 1 upgradeable
await es.update({
id: 'agent1',
refresh: 'wait_for',
index: AGENTS_INDEX,
doc: {
local_metadata: {
elastic: { agent: { upgradeable: true, version: '8.13.0' } },
},
},
});
});
after(async () => {
await esArchiver.unload('x-pack/test/functional/es_archives/fleet/agents');
await supertest
.delete(`/api/fleet/epm/packages/${FLEET_ELASTIC_AGENT_PACKAGE}/${elasticAgentpkgVersion}`)
.set('kbn-xsrf', 'xxxx');
await es.transport
.request({
method: 'DELETE',
path: `/_data_stream/metrics-elastic_agent.elastic_agent-default`,
})
.catch(() => {});
});
const fleetServerVersion = '8.14.0';
const READ_SCENARIOS = [
{
@ -319,19 +329,6 @@ export default function (providerContext: FtrProviderContext) {
afterEach: deleteFileAfterEach,
},
];
before(async () => {
// Make agent 1 upgradeable
await es.update({
id: 'agent1',
refresh: 'wait_for',
index: AGENTS_INDEX,
doc: {
local_metadata: {
elastic: { agent: { upgradeable: true, version: '8.13.0' } },
},
},
});
});
runPrivilegeTests(ROUTES, supertestWithoutAuth);
});
}

View file

@ -708,9 +708,7 @@ export default function (providerContext: FtrProviderContext) {
'fleet-server-policy',
fleetServerVersion
);
});
beforeEach(async () => {
await es.updateByQuery({
index: '.fleet-agents',
body: {

View file

@ -106,7 +106,7 @@ export default function (providerContext: FtrProviderContext) {
};
// Failing ES Promotion: https://github.com/elastic/kibana/issues/151756
describe('data_streams_list', async () => {
describe('data_streams_list', () => {
skipIfNoDockerRegistry(providerContext);
beforeEach(async () => {

View file

@ -20,16 +20,13 @@ export default function (providerContext: FtrProviderContext) {
const fleetAndAgents = getService('fleetAndAgents');
describe('fleet_download_sources_crud', function () {
let defaultDownloadSourceId: string;
skipIfNoDockerRegistry(providerContext);
before(async () => {
await kibanaServer.savedObjects.cleanStandardList();
await esArchiver.load('x-pack/test/functional/es_archives/fleet/empty_fleet_server');
await fleetAndAgents.setup();
});
let defaultDownloadSourceId: string;
before(async function () {
const { body: response } = await supertest
.get(`/api/fleet/agent_download_sources`)
.expect(200);
@ -133,7 +130,7 @@ export default function (providerContext: FtrProviderContext) {
expect(downloadSource.host).to.eql('https://test.co:403');
});
it('should allow to update an existing download source', async function () {
it('should allow to update is_default for existing download source', async function () {
await supertest
.put(`/api/fleet/agent_download_sources/${defaultDownloadSourceId}`)
.set('kbn-xsrf', 'xxxx')

View file

@ -35,7 +35,7 @@ export default function (providerContext: FtrProviderContext) {
skipIfNoDockerRegistry(providerContext);
describe('GET /fleet/enrollment_api_keys', async () => {
describe('GET /fleet/enrollment_api_keys', () => {
it('should list existing api keys', async () => {
const { body: apiResponse } = await supertest
.get(`/api/fleet/enrollment_api_keys`)
@ -84,7 +84,7 @@ export default function (providerContext: FtrProviderContext) {
});
});
describe('GET /fleet/enrollment_api_keys/{id}', async () => {
describe('GET /fleet/enrollment_api_keys/{id}', () => {
it('should allow to retrieve existing api keys', async () => {
const { body: apiResponse } = await supertest
.get(`/api/fleet/enrollment_api_keys/${ENROLLMENT_KEY_ID}`)
@ -101,7 +101,7 @@ export default function (providerContext: FtrProviderContext) {
});
});
describe('DELETE /fleet/enrollment_api_keys/{id}', async () => {
describe('DELETE /fleet/enrollment_api_keys/{id}', () => {
let keyId: string;
let esApiKeyId: string;
before(async () => {

View file

@ -99,7 +99,6 @@ export default function (providerContext: FtrProviderContext) {
},
},
];
before(async () => {});
runPrivilegeTests(ROUTES, supertestWithoutAuth);
});
}

View file

@ -27,14 +27,14 @@ export default function (providerContext: FtrProviderContext) {
.send({ force: true });
};
describe('Bulk get assets', async () => {
describe('Bulk get assets', () => {
skipIfNoDockerRegistry(providerContext);
before(async () => {
await fleetAndAgents.setup();
});
describe('installs all assets when installing a package for the first time', async () => {
describe('installs all assets when installing a package for the first time', () => {
before(async () => {
if (!isDockerRegistryEnabledOrSkipped(providerContext)) return;
await installPackage(pkgName, pkgVersion);

View file

@ -22,7 +22,7 @@ export default function (providerContext: FtrProviderContext) {
await supertest.delete(`/api/fleet/epm/packages/${name}/${version}`).set('kbn-xsrf', 'xxxx');
};
describe('bulk package install api', async () => {
describe('bulk package install api', () => {
skipIfNoDockerRegistry(providerContext);
before(async () => {

View file

@ -25,14 +25,14 @@ export default function (providerContext: FtrProviderContext) {
await supertest.delete(`/api/fleet/epm/packages/${name}/${version}`).set('kbn-xsrf', 'xxxx');
};
describe('bulk package upgrade api', async () => {
describe('bulk package upgrade api', () => {
skipIfNoDockerRegistry(providerContext);
before(async () => {
await fleetAndAgents.setup();
});
describe('bulk package upgrade with a package already installed', async () => {
describe('bulk package upgrade with a package already installed', () => {
beforeEach(async () => {
await supertest
.post(`/api/fleet/epm/packages/multiple_versions/0.1.0`)
@ -108,7 +108,7 @@ export default function (providerContext: FtrProviderContext) {
});
});
describe('bulk upgrade without package already installed', async () => {
describe('bulk upgrade without package already installed', () => {
afterEach(async () => {
await deletePackage('multiple_versions', '0.3.0');
});

View file

@ -27,28 +27,21 @@ export default function (providerContext: FtrProviderContext) {
before(async () => {
await esArchiver.load('x-pack/test/functional/es_archives/fleet/empty_fleet_server');
await fleetAndAgents.setup();
});
before(async () => {
await supertest
.post(`/api/fleet/epm/packages/log/${LOG_INTEGRATION_VERSION}`)
.set('kbn-xsrf', 'xxxx')
.send({ force: true })
.expect(200);
});
after(async () => {
await supertest
.delete(`/api/fleet/epm/packages/log/${LOG_INTEGRATION_VERSION}`)
.set('kbn-xsrf', 'xxxx')
.send({ force: true })
.expect(200);
});
after(async () => {
await esArchiver.unload('x-pack/test/functional/es_archives/fleet/empty_fleet_server');
});
after(async () => {
const res = await es.search({
index: TEST_INDEX,
});

View file

@ -53,7 +53,7 @@ export default function (providerContext: FtrProviderContext) {
await Promise.all(testPkgs.map((pkg) => uninstallPackage(pkg.name, pkg.version)));
});
describe('with single integration installation', async () => {
describe('with single integration installation', () => {
it('creates global data views for logs-* and metrics-*', async () => {
await installPackage(testPkgs[0].name, testPkgs[0].version);
const dataViews: any[] = await listDataViews();
@ -71,7 +71,7 @@ export default function (providerContext: FtrProviderContext) {
});
});
describe('with subsequent integration installation', async () => {
describe('with subsequent integration installation', () => {
it('does not recreate managed data views', async () => {
await installPackage(testPkgs[0].name, testPkgs[0].version);
const initialDataViews: any[] = await listDataViews();

View file

@ -31,7 +31,7 @@ export default function (providerContext: FtrProviderContext) {
.send({ force: true });
};
describe('delete and force delete scenarios', async () => {
describe('delete and force delete scenarios', () => {
skipIfNoDockerRegistry(providerContext);
before(async () => {

View file

@ -39,29 +39,21 @@ export default function (providerContext: FtrProviderContext) {
before(async () => {
await esArchiver.load('x-pack/test/functional/es_archives/fleet/empty_fleet_server');
await fleetAndAgents.setup();
});
// Use the custom log package to test the fleet final pipeline
before(async () => {
// Use the custom log package to test the fleet final pipeline
await supertest
.post(`/api/fleet/epm/packages/log/${LOG_INTEGRATION_VERSION}`)
.set('kbn-xsrf', 'xxxx')
.send({ force: true })
.expect(200);
});
after(async () => {
await supertest
.delete(`/api/fleet/epm/packages/log/${LOG_INTEGRATION_VERSION}`)
.set('kbn-xsrf', 'xxxx')
.send({ force: true })
.expect(200);
});
after(async () => {
await esArchiver.unload('x-pack/test/functional/es_archives/fleet/empty_fleet_server');
});
after(async () => {
const res = await es.search({
index: TEST_INDEX,
});

View file

@ -122,8 +122,6 @@ export default function (providerContext: FtrProviderContext) {
await uninstallPackage(testPkgName, testPkgVersion);
await uninstallPackage('experimental', '0.1.0');
await uninstallPackage('endpoint', '8.6.1');
});
after(async () => {
await removeBundledPackages(log);
});
it('Allows the fetching of installed packages', async () => {

View file

@ -69,7 +69,7 @@ export default function (providerContext: FtrProviderContext) {
await supertest.delete(`/api/fleet/epm/packages/${name}/${version}`).set('kbn-xsrf', 'xxxx');
};
describe('Installs packages from direct upload', async () => {
describe('Installs packages from direct upload', () => {
skipIfNoDockerRegistry(providerContext);
before(async () => {

View file

@ -26,7 +26,7 @@ export default function (providerContext: FtrProviderContext) {
.send({ force: true });
};
describe('Installing custom integrations', async () => {
describe('Installing custom integrations', () => {
afterEach(async () => {
await uninstallPackage();
});

View file

@ -19,7 +19,7 @@ export default function (providerContext: FtrProviderContext) {
await supertest.delete(`/api/fleet/epm/packages/${name}/${version}`).set('kbn-xsrf', 'xxxx');
};
describe('metric_type with dynamic_templates', async () => {
describe('metric_type with dynamic_templates', () => {
skipIfNoDockerRegistry(providerContext);
before(async () => {

View file

@ -39,7 +39,7 @@ export default function (providerContext: FtrProviderContext) {
.set('kbn-xsrf', 'xxxx');
};
describe('package installation error handling and rollback', async () => {
describe('package installation error handling and rollback', () => {
skipIfNoDockerRegistry(providerContext);
before(async () => {

View file

@ -70,7 +70,7 @@ export default function (providerContext: FtrProviderContext) {
})
.catch(() => {});
describe('When installing system integration in multiple spaces', async () => {
describe('When installing system integration in multiple spaces', () => {
skipIfNoDockerRegistry(providerContext);
before(async () => {

View file

@ -21,7 +21,7 @@ export default function (providerContext: FtrProviderContext) {
const deletePackage = async (pkg: string, version: string) =>
supertest.delete(`/api/fleet/epm/packages/${pkg}/${version}`).set('kbn-xsrf', 'xxxx');
describe('installs packages that include settings and mappings overrides', async () => {
describe('installs packages that include settings and mappings overrides', () => {
skipIfNoDockerRegistry(providerContext);
before(async () => {

View file

@ -43,7 +43,7 @@ export default function (providerContext: FtrProviderContext) {
describe('installs and uninstalls all assets', () => {
skipIfNoDockerRegistry(providerContext);
describe('installs all assets when installing a package for the first time', async () => {
describe('installs all assets when installing a package for the first time', () => {
before(async () => {
await fleetAndAgents.setup();
if (!isDockerRegistryEnabledOrSkipped(providerContext)) return;
@ -63,16 +63,17 @@ export default function (providerContext: FtrProviderContext) {
});
});
describe('uninstalls all assets when uninstalling a package', async () => {
describe('uninstalls all assets when uninstalling a package', () => {
// these tests ensure that uninstall works properly so make sure that the package gets installed and uninstalled
// and then we'll test that not artifacts are left behind.
before(() => {
if (!isDockerRegistryEnabledOrSkipped(providerContext)) return;
return installPackage(pkgName, pkgVersion);
});
before(() => {
if (!isDockerRegistryEnabledOrSkipped(providerContext)) return;
return uninstallPackage(pkgName, pkgVersion);
before(async () => {
if (isDockerRegistryEnabledOrSkipped(providerContext)) {
await installPackage(pkgName, pkgVersion);
}
if (isDockerRegistryEnabledOrSkipped(providerContext)) {
await uninstallPackage(pkgName, pkgVersion);
}
});
it('should have uninstalled the index templates', async function () {
@ -294,7 +295,7 @@ export default function (providerContext: FtrProviderContext) {
});
});
describe('reinstalls all assets', async () => {
describe('reinstalls all assets', () => {
before(async () => {
if (!isDockerRegistryEnabledOrSkipped(providerContext)) return;
await installPackage(pkgName, pkgVersion);

View file

@ -76,7 +76,7 @@ export default function (providerContext: FtrProviderContext) {
after(async () => {
await deleteSpace(testSpaceId);
});
describe('creates correct tags when installing a package in non default space after installing in default space', async () => {
describe('creates correct tags when installing a package in non default space after installing in default space', () => {
before(async () => {
if (!isDockerRegistryEnabledOrSkipped(providerContext)) return;
await installPackageInSpace('all_assets', pkgVersion, 'default');
@ -104,7 +104,7 @@ export default function (providerContext: FtrProviderContext) {
});
});
describe('Handles presence of legacy tags', async () => {
describe('Handles presence of legacy tags', () => {
before(async () => {
if (!isDockerRegistryEnabledOrSkipped(providerContext)) return;
@ -152,7 +152,7 @@ export default function (providerContext: FtrProviderContext) {
});
});
describe('Handles presence of tags inside integration package', async () => {
describe('Handles presence of tags inside integration package', () => {
const testPackage = 'assets_with_tags';
const testPackageVersion = '0.1.1';
// tag corresponding to `OnlySomeAssets`

View file

@ -19,7 +19,7 @@ export default function (providerContext: FtrProviderContext) {
await supertest.delete(`/api/fleet/epm/packages/${name}/${version}`).set('kbn-xsrf', 'xxxx');
};
describe('installing with tsds disabled', async () => {
describe('installing with tsds disabled', () => {
skipIfNoDockerRegistry(providerContext);
before(async () => {

View file

@ -23,7 +23,7 @@ export default function (providerContext: FtrProviderContext) {
await supertest.delete(`/api/fleet/epm/packages/${name}/${version}`).set('kbn-xsrf', 'xxxx');
};
describe('installing and updating scenarios', async () => {
describe('installing and updating scenarios', () => {
skipIfNoDockerRegistry(providerContext);
before(async () => {

View file

@ -37,14 +37,14 @@ export default function (providerContext: FtrProviderContext) {
return res?._source?.['epm-packages'] as Installation;
};
describe('Installs verified and unverified packages', async () => {
describe('Installs verified and unverified packages', () => {
skipIfNoDockerRegistry(providerContext);
before(async () => {
await fleetAndAgents.setup();
});
describe('verified package', async () => {
describe('verified package', () => {
after(async () => {
if (!isDockerRegistryEnabledOrSkipped(providerContext)) return;
await uninstallPackage('verified', '1.0.0');
@ -56,8 +56,8 @@ export default function (providerContext: FtrProviderContext) {
expect(installationSO?.verification_key_id).equal(TEST_KEY_ID);
});
});
describe('unverified packages', async () => {
describe('unverified package content', async () => {
describe('unverified packages', () => {
describe('unverified package content', () => {
after(async () => {
if (!isDockerRegistryEnabledOrSkipped(providerContext)) return;
await uninstallPackage('unverified_content', '1.0.0');
@ -77,7 +77,7 @@ export default function (providerContext: FtrProviderContext) {
expect(installationSO?.verification_key_id).equal(TEST_KEY_ID);
});
});
describe('package verified with wrong key', async () => {
describe('package verified with wrong key', () => {
after(async () => {
if (!isDockerRegistryEnabledOrSkipped(providerContext)) return;
await uninstallPackage('wrong_key', '1.0.0');

View file

@ -22,7 +22,7 @@ export default function (providerContext: FtrProviderContext) {
// because `this` has to point to the Mocha context
// see https://mochajs.org/#arrow-functions
describe('EPM - list', async function () {
describe('EPM - list', function () {
skipIfNoDockerRegistry(providerContext);
const log = getService('log');
@ -32,12 +32,10 @@ export default function (providerContext: FtrProviderContext) {
});
after(async () => {
await esArchiver.unload('x-pack/test/functional/es_archives/fleet/empty_fleet_server');
});
after(async () => {
await removeBundledPackages(log);
});
describe('list api tests', async () => {
describe('list api tests', () => {
it('lists all packages from the registry', async function () {
const fetchPackageList = async () => {
const response = await supertest

View file

@ -22,14 +22,14 @@ export default function (providerContext: FtrProviderContext) {
const pkgName = 'multiple_versions';
const pkgVersion = '0.1.0';
const pkgUpdateVersion = '0.2.0';
describe('setup checks packages completed install', async () => {
describe('setup checks packages completed install', () => {
skipIfNoDockerRegistry(providerContext);
before(async () => {
await fleetAndAgents.setup();
});
describe('package install', async () => {
describe('package install', () => {
before(async () => {
if (!isDockerRegistryEnabledOrSkipped(providerContext)) return;
await supertest
@ -100,7 +100,7 @@ export default function (providerContext: FtrProviderContext) {
.expect(200);
});
});
describe('package update', async () => {
describe('package update', () => {
before(async () => {
if (!isDockerRegistryEnabledOrSkipped(providerContext)) return;
await supertest

View file

@ -98,7 +98,7 @@ export default function (providerContext: FtrProviderContext) {
await supertest.delete(`/api/fleet/epm/packages/${pkg}/${version}`).set('kbn-xsrf', 'xxxx');
};
describe('Legacy component template removal', async () => {
describe('Legacy component template removal', () => {
skipIfNoDockerRegistry(providerContext);
before(async () => {

View file

@ -27,28 +27,22 @@ export default function (providerContext: FtrProviderContext) {
before(async () => {
await esArchiver.load('x-pack/test/functional/es_archives/fleet/empty_fleet_server');
await fleetAndAgents.setup();
});
before(async () => {
await supertest
.post(`/api/fleet/epm/packages/${ROUTING_RULES_PKG_NAME}/${ROUTING_RULES_PKG_VERSION}`)
.set('kbn-xsrf', 'xxxx')
.send({ force: true })
.expect(200);
});
after(async () => {
await supertest
.delete(`/api/fleet/epm/packages/${ROUTING_RULES_PKG_NAME}/${ROUTING_RULES_PKG_VERSION}`)
.set('kbn-xsrf', 'xxxx')
.send({ force: true })
.expect(200);
});
after(async () => {
await esArchiver.unload('x-pack/test/functional/es_archives/fleet/empty_fleet_server');
});
after(async () => {
const res = await es.search({
index: TEST_REROUTE_INDEX,
ignore_unavailable: true,

View file

@ -25,7 +25,7 @@ export default function (providerContext: FtrProviderContext) {
.send({ force: 'true' });
};
describe('setup api', async () => {
describe('setup api', () => {
skipIfNoDockerRegistry(providerContext);
before(async () => {
@ -37,7 +37,7 @@ export default function (providerContext: FtrProviderContext) {
await uninstallPackage('multiple_versions', '0.3.0');
});
describe('setup performs upgrades', async () => {
describe('setup performs upgrades', () => {
const oldEndpointVersion = '1.0.0';
beforeEach(async () => {
const url = '/api/fleet/epm/packages/endpoint';

View file

@ -16,7 +16,7 @@ export default function ({ getService }: FtrProviderContext) {
const es = getService('es');
// This test was inspired by https://github.com/elastic/kibana/blob/main/x-pack/test/api_integration/apis/monitoring/common/mappings_exist.js
describe('EPM - template', async () => {
describe('EPM - template', () => {
beforeEach(async () => {
appContextService.start({
// @ts-ignore

View file

@ -34,7 +34,7 @@ export default function (providerContext: FtrProviderContext) {
.send({ force: true });
};
describe('updates all assets when updating a package to a different version', async () => {
describe('updates all assets when updating a package to a different version', () => {
skipIfNoDockerRegistry(providerContext);
before(async () => {

View file

@ -10,7 +10,7 @@ import { FtrProviderContext } from '../../../api_integration/ftr_provider_contex
export default function ({ getService }: FtrProviderContext) {
const supertest = getService('supertest');
describe('EPM - verification key id', async () => {
describe('EPM - verification key id', () => {
it('returns the verification key ID ', async () => {
const res = await supertest
.get('/api/fleet/epm/verification_key_id')

View file

@ -31,21 +31,20 @@ export default function (providerContext: FtrProviderContext) {
return policyDocRes.hits.hits[0]?._source;
}
describe('fleet_proxies_crud', async function () {
skipIfNoDockerRegistry(providerContext);
before(async () => {
await esArchiver.load('x-pack/test/functional/es_archives/fleet/empty_fleet_server');
await kibanaServer.savedObjects.cleanStandardList();
await fleetAndAgents.setup();
});
describe('fleet_proxies_crud', function () {
const existingId = 'test-default-123';
const fleetServerHostId = 'test-fleetserver-123';
const policyId = 'test-policy-123';
const outputId = 'test-output-123';
let downloadSourceId: string;
before(async function () {
skipIfNoDockerRegistry(providerContext);
before(async () => {
await esArchiver.load('x-pack/test/functional/es_archives/fleet/empty_fleet_server');
await kibanaServer.savedObjects.cleanStandardList();
await fleetAndAgents.setup();
await kibanaServer.savedObjects.clean({
types: ['fleet-proxy'],
});

View file

@ -16,17 +16,16 @@ export default function (providerContext: FtrProviderContext) {
const kibanaServer = getService('kibanaServer');
const fleetAndAgents = getService('fleetAndAgents');
describe('fleet_fleet_server_hosts_crud', async function () {
describe('fleet_fleet_server_hosts_crud', function () {
let defaultFleetServerHostId: string;
skipIfNoDockerRegistry(providerContext);
before(async () => {
await esArchiver.load('x-pack/test/functional/es_archives/fleet/empty_fleet_server');
await kibanaServer.savedObjects.cleanStandardList();
await fleetAndAgents.setup();
});
let defaultFleetServerHostId: string;
before(async function () {
await kibanaServer.savedObjects.clean({
types: ['fleet-fleet-server-host'],
});

View file

@ -256,10 +256,8 @@ export default function (providerContext: FtrProviderContext) {
await esArchiver.load('x-pack/test/functional/es_archives/fleet/empty_fleet_server');
await kibanaServer.savedObjects.cleanStandardList();
await setupTestUsers(getService('security'));
});
before('create output', () =>
supertest
await supertest
.post(`/api/fleet/outputs`)
.set('kbn-xsrf', 'xxxx')
.send({
@ -268,10 +266,9 @@ export default function (providerContext: FtrProviderContext) {
type: 'elasticsearch',
hosts: ['https://test.fr'],
})
.expect(200)
);
before('create fleet server hosts', () =>
supertest
.expect(200);
await supertest
.post(`/api/fleet/fleet_server_hosts`)
.set('kbn-xsrf', 'xxxx')
.send({
@ -280,10 +277,9 @@ export default function (providerContext: FtrProviderContext) {
is_default: false,
host_urls: ['https://test.fr:8080', 'https://test.fr:8081'],
})
.expect(200)
);
before('create proxy', () =>
supertest
.expect(200);
await supertest
.post(`/api/fleet/proxies`)
.set('kbn-xsrf', 'xxxx')
.send({
@ -291,10 +287,9 @@ export default function (providerContext: FtrProviderContext) {
name: 'Test privileges proxy 1 ' + new Date().toISOString(),
url: 'https://test.fr:3232',
})
.expect(200)
);
before('create download source', () =>
supertest
.expect(200);
await supertest
.post(`/api/fleet/agent_download_sources`)
.set('kbn-xsrf', 'xxxx')
.send({
@ -303,8 +298,8 @@ export default function (providerContext: FtrProviderContext) {
host: 'http://test.fr:443',
is_default: false,
})
.expect(200)
);
.expect(200);
});
after(async () => {
await kibanaServer.savedObjects.cleanStandardList();

View file

@ -41,6 +41,7 @@ export default function (providerContext: FtrProviderContext) {
}
});
// eslint-disable-next-line mocha/no-sibling-hooks
before(async () => {
// we must first force install the fleet_server package to override package verification error on policy create
// https://github.com/elastic/kibana/issues/137450

View file

@ -38,8 +38,7 @@ export default function (providerContext: FtrProviderContext) {
name: 'test standalone agent',
});
apiKey = `${res.id}:${res.api_key}`;
});
before(async () => {
agentImage = `docker.elastic.co/beats/elastic-agent:${await getLatestVersion()}`;
log.info(agentImage);
await execa('docker', ['pull', agentImage]);

View file

@ -196,7 +196,7 @@ export default function (providerContext: FtrProviderContext) {
const TEST_SPACE_ID = 'testspaceoutputs';
describe('fleet_outputs_crud', async function () {
describe('fleet_outputs_crud', function () {
skipIfNoDockerRegistry(providerContext);
before(async () => {
await kibanaServer.savedObjects.cleanStandardList();
@ -209,6 +209,7 @@ export default function (providerContext: FtrProviderContext) {
let fleetServerPolicyId: string;
let fleetServerPolicyWithCustomOutputId: string;
// eslint-disable-next-line mocha/no-sibling-hooks
before(async function () {
await enableSecrets(providerContext);
await enableOutputSecrets();
@ -1352,6 +1353,7 @@ export default function (providerContext: FtrProviderContext) {
});
});
// eslint-disable-next-line mocha/no-identical-title
it('should discard the shipper values when shipper is disabled', async function () {
await supertest
.post(`/api/fleet/outputs`)
@ -1701,6 +1703,7 @@ export default function (providerContext: FtrProviderContext) {
.expect(400);
});
// eslint-disable-next-line mocha/no-identical-title
it('should return a 400 when deleting a default output ', async function () {
await supertest
.delete(`/api/fleet/outputs/${defaultMonitoringOutputId}`)

View file

@ -15,7 +15,7 @@ export default function (providerContext: FtrProviderContext) {
const supertest = getService('supertest');
const supertestWithoutAuth = getService('supertestWithoutAuth');
describe('fleet_output_logstash_api_keys', async function () {
describe('fleet_output_logstash_api_keys', function () {
describe('POST /logstash_api_keys', () => {
it('should allow to create an api key with the right permissions', async () => {
const { body: apiKeyRes } = await supertest

View file

@ -33,15 +33,6 @@ export default function (providerContext: FtrProviderContext) {
await getService('esArchiver').load(
'x-pack/test/functional/es_archives/fleet/empty_fleet_server'
);
});
after(async () => {
await kibanaServer.savedObjects.cleanStandardList();
await getService('esArchiver').unload(
'x-pack/test/functional/es_archives/fleet/empty_fleet_server'
);
});
before(async function () {
const { body: agentPolicyResponse } = await supertest
.post(`/api/fleet/agent_policies`)
.set('kbn-xsrf', 'xxxx')
@ -62,8 +53,11 @@ export default function (providerContext: FtrProviderContext) {
.expect(200);
agentPolicyId2 = agentPolicyResponse2.item.id;
});
after(async function () {
after(async () => {
await kibanaServer.savedObjects.cleanStandardList();
await getService('esArchiver').unload(
'x-pack/test/functional/es_archives/fleet/empty_fleet_server'
);
await supertest
.post(`/api/fleet/agent_policies/delete`)
.set('kbn-xsrf', 'xxxx')

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