Skip to content

Commit

Permalink
[ML] Adding tests for ML's field caps endpoint (#104315)
Browse files Browse the repository at this point in the history
* [ML] Adding tests for ML's field caps endpoint

* fixing typos
  • Loading branch information
jgowdyelastic authored and kibanamachine committed Jul 7, 2021
1 parent 04dbcec commit 3de9e73
Show file tree
Hide file tree
Showing 3 changed files with 90 additions and 5 deletions.
11 changes: 6 additions & 5 deletions x-pack/test/api_integration/apis/ml/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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'));
});
Expand Down
70 changes: 70 additions & 0 deletions x-pack/test/api_integration/apis/ml/indices/field_caps.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
/*
* 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 responsetime 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 21, but got ${fieldsLength}`
);
});
});
};
14 changes: 14 additions & 0 deletions x-pack/test/api_integration/apis/ml/indices/index.ts
Original file line number Diff line number Diff line change
@@ -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'));
});
}

0 comments on commit 3de9e73

Please sign in to comment.