diff --git a/x-pack/test/api_integration/apis/ml/index.ts b/x-pack/test/api_integration/apis/ml/index.ts index 9ed654c5b9f6b..7154debc3e195 100644 --- a/x-pack/test/api_integration/apis/ml/index.ts +++ b/x-pack/test/api_integration/apis/ml/index.ts @@ -68,17 +68,18 @@ export default function ({ getService, loadTestFile }: FtrProviderContext) { await ml.testResources.resetKibanaTimeZone(); }); - loadTestFile(require.resolve('./modules')); + loadTestFile(require.resolve('./annotations')); loadTestFile(require.resolve('./anomaly_detectors')); + loadTestFile(require.resolve('./calendars')); + loadTestFile(require.resolve('./data_frame_analytics')); loadTestFile(require.resolve('./data_visualizer')); loadTestFile(require.resolve('./fields_service')); + loadTestFile(require.resolve('./filters')); + loadTestFile(require.resolve('./indices')); loadTestFile(require.resolve('./job_validation')); loadTestFile(require.resolve('./jobs')); + loadTestFile(require.resolve('./modules')); loadTestFile(require.resolve('./results')); - loadTestFile(require.resolve('./data_frame_analytics')); - loadTestFile(require.resolve('./filters')); - loadTestFile(require.resolve('./calendars')); - loadTestFile(require.resolve('./annotations')); loadTestFile(require.resolve('./saved_objects')); loadTestFile(require.resolve('./system')); }); diff --git a/x-pack/test/api_integration/apis/ml/indices/field_caps.ts b/x-pack/test/api_integration/apis/ml/indices/field_caps.ts new file mode 100644 index 0000000000000..882427aeda1a6 --- /dev/null +++ b/x-pack/test/api_integration/apis/ml/indices/field_caps.ts @@ -0,0 +1,64 @@ +/* + * 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 expect from '@kbn/expect'; + +import { FtrProviderContext } from '../../../ftr_provider_context'; +import { COMMON_REQUEST_HEADERS } from '../../../../functional/services/ml/common_api'; +import { USER } from '../../../../functional/services/ml/security_common'; + +export default ({ getService }: FtrProviderContext) => { + const supertest = getService('supertestWithoutAuth'); + const esArchiver = getService('esArchiver'); + const ml = getService('ml'); + + async function runRequest( + index: string, + fields?: string[] + ): Promise<{ indices: string[]; fields: any }> { + const { body } = await supertest + .post(`/api/ml/indices/field_caps`) + .auth(USER.ML_POWERUSER, ml.securityCommon.getPasswordForUser(USER.ML_POWERUSER)) + .set(COMMON_REQUEST_HEADERS) + .send({ index, fields }) + .expect(200); + + return body; + } + + describe('field_caps', () => { + before(async () => { + await esArchiver.loadIfNeeded('x-pack/test/functional/es_archives/ml/farequote'); + }); + + after(async () => { + await ml.api.cleanMlIndices(); + }); + + it('selected fields in index', async () => { + const { indices, fields } = await runRequest('ft_farequote', ['airline', 'responsetime']); + expect(indices.length).to.eql( + 1, + `Expected number of indices to be 1, but got ${indices.length}` + ); + const fieldsLength = Object.keys(fields).length; + expect(fieldsLength).to.eql(2, `Expected number of fields to be 2, but got ${fieldsLength}`); + expect(fields.airline.keyword.type).to.eql('keyword', 'Expected airline type to be keyword'); + expect(fields.responsetime.float.type).to.eql('float', 'Expected airline type to be float'); + }); + + it('all fields in index', async () => { + const { indices, fields } = await runRequest('ft_farequote'); + expect(indices.length).to.eql( + 1, + `Expected number of indices to be 1, but got ${indices.length}` + ); + const fieldsLength = Object.keys(fields).length; + expect(fieldsLength).to.eql(21, `Expected number of fields to be 2, but got ${fieldsLength}`); + }); + }); +}; diff --git a/x-pack/test/api_integration/apis/ml/indices/index.ts b/x-pack/test/api_integration/apis/ml/indices/index.ts new file mode 100644 index 0000000000000..563a0de4d20d8 --- /dev/null +++ b/x-pack/test/api_integration/apis/ml/indices/index.ts @@ -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 function ({ loadTestFile }: FtrProviderContext) { + describe('system', function () { + loadTestFile(require.resolve('./field_caps')); + }); +}