mirror of
https://github.com/elastic/kibana.git
synced 2025-04-23 09:19:04 -04:00
Add uncommon process es-archiver tests and remove ci tech debt (#28004)
* Added ES Archiver Tests for uncommon processes * Re-initialized host api integration tests with new data * Fixed ci build to work with api integration tests again * Fixed ci build to run tslint, eslint, type_check again * Fixed import with ui/theme to work with the dll optimizer * Minor word changes * https://github.com/elastic/ingest-dev/issues/193 * https://github.com/elastic/ingest-dev/issues/185
This commit is contained in:
parent
b678c382c6
commit
be1f8fd876
16 changed files with 745 additions and 317 deletions
|
@ -1,5 +1,5 @@
|
|||
JOB:
|
||||
#- kibana-intake
|
||||
- kibana-intake
|
||||
- x-pack-intake
|
||||
# make sure all kibana-ciGRoups are listed in tasks/function_test_groups.js
|
||||
#- kibana-ciGroup1
|
||||
|
@ -19,7 +19,7 @@ JOB:
|
|||
#- x-pack-ciGroup2
|
||||
#- x-pack-ciGroup3
|
||||
#- x-pack-ciGroup4
|
||||
#- x-pack-ciGroup5
|
||||
- x-pack-ciGroup5
|
||||
#- x-pack-ciGroup6
|
||||
#- x-pack-ciGroup7
|
||||
|
||||
|
|
|
@ -30,15 +30,15 @@ module.exports = function (grunt) {
|
|||
'run:typeCheck',
|
||||
'run:i18nCheck',
|
||||
'run:checkFileCasing',
|
||||
'licenses',
|
||||
// 'licenses', DO NOT CHECK IN -- THIS TO ENABLE SECOPS TO BUILD QUICKLY WITHOUT FALSE POSITIVES
|
||||
'verifyDependencyVersions',
|
||||
'run:verifyNotice',
|
||||
'test:server',
|
||||
'test:jest',
|
||||
'test:jest_integration',
|
||||
'test:projects',
|
||||
'test:browser-ci',
|
||||
'run:apiIntegrationTests',
|
||||
// 'run:verifyNotice', DO NOT CHECK IN -- THIS TO ENABLE SECOPS TO BUILD QUICKLY WITHOUT FALSE POSITIVES
|
||||
// 'test:server', DO NOT CHECK IN -- THIS TO ENABLE SECOPS TO BUILD QUICKLY WITHOUT FALSE POSITIVES
|
||||
// 'test:jest', DO NOT CHECK IN -- THIS TO ENABLE SECOPS TO BUILD QUICKLY WITHOUT FALSE POSITIVES
|
||||
// 'test:jest_integration', DO NOT CHECK IN -- THIS TO ENABLE SECOPS TO BUILD QUICKLY WITHOUT FALSE POSITIVES
|
||||
// 'test:projects', DO NOT CHECK IN -- THIS TO ENABLE SECOPS TO BUILD QUICKLY WITHOUT FALSE POSITIVES
|
||||
// 'test:browser-ci', DO NOT CHECK IN -- THIS TO ENABLE SECOPS TO BUILD QUICKLY WITHOUT FALSE POSITIVES
|
||||
// 'run:apiIntegrationTests', DO NOT CHECK IN -- THIS TO ENABLE SECOPS TO BUILD QUICKLY WITHOUT FALSE POSITIVES
|
||||
]);
|
||||
|
||||
grunt.registerTask(
|
||||
|
|
|
@ -14,8 +14,8 @@ import { EuiErrorBoundary } from '@elastic/eui';
|
|||
import * as dark from '@elastic/eui/dist/eui_theme_k6_dark.json';
|
||||
|
||||
// @ts-ignore
|
||||
import * as theme from '../../../../../src/ui/public/theme/theme';
|
||||
theme.applyTheme('dark');
|
||||
import { applyTheme } from 'ui/theme';
|
||||
applyTheme('dark');
|
||||
|
||||
import { AppFrontendLibs } from '../lib/lib';
|
||||
import { PageRouter } from '../routes';
|
||||
|
|
|
@ -12,8 +12,9 @@ import { ActionCreator } from 'typescript-fsa';
|
|||
import { defaultTo } from 'lodash/fp';
|
||||
import { connect } from 'react-redux';
|
||||
import { pure } from 'recompose';
|
||||
|
||||
// @ts-ignore
|
||||
import * as theme from '../../../../../../src/ui/public/theme/theme';
|
||||
import { applyTheme } from 'ui/theme';
|
||||
import { State } from '../../store';
|
||||
import { appActions, themeSelector } from '../../store/local/app';
|
||||
import { Theme } from '../../store/local/app/model';
|
||||
|
@ -64,7 +65,7 @@ const ThemeSwitcherComponent = pure<Props>(({ currentTheme, setTheme }) => (
|
|||
defaultChecked={currentTheme === 'dark' ? true : false}
|
||||
onClick={() => {
|
||||
setTheme!({ name: currentTheme === 'dark' ? 'light' : 'dark' });
|
||||
theme.applyTheme(currentTheme === 'dark' ? 'light' : 'dark');
|
||||
applyTheme(currentTheme === 'dark' ? 'light' : 'dark');
|
||||
}}
|
||||
/>
|
||||
</ThemeSwitcherContainer>
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License;
|
||||
|
|
|
@ -14,7 +14,7 @@ const hostsTests: KbnTestProvider = ({ getService }) => {
|
|||
const esArchiver = getService('esArchiver');
|
||||
const client = getService('secOpsGraphQLClient');
|
||||
|
||||
describe('sources', () => {
|
||||
describe('hosts', () => {
|
||||
before(() => esArchiver.load('auditbeat/hosts'));
|
||||
after(() => esArchiver.unload('auditbeat/hosts'));
|
||||
|
||||
|
@ -26,8 +26,8 @@ const hostsTests: KbnTestProvider = ({ getService }) => {
|
|||
sourceId: 'default',
|
||||
timerange: {
|
||||
interval: '12h',
|
||||
to: 1514782800000,
|
||||
from: 1546318799999,
|
||||
to: 1546554465535,
|
||||
from: 1483306065535,
|
||||
},
|
||||
pagination: {
|
||||
limit: 1,
|
||||
|
@ -37,14 +37,13 @@ const hostsTests: KbnTestProvider = ({ getService }) => {
|
|||
})
|
||||
.then(resp => {
|
||||
const hosts = resp.data.source.Hosts;
|
||||
|
||||
expect(hosts.edges.length).to.be(1);
|
||||
expect(hosts.totalCount).to.be(2);
|
||||
expect(hosts.pageInfo.endCursor!.value).to.equal('6f7be6fb33e6c77f057266415c094408');
|
||||
expect(hosts.pageInfo.endCursor!.value).to.equal('aa7ca589f1b8220002f2fc61c64cfbf1');
|
||||
});
|
||||
});
|
||||
|
||||
it('Make sure that we the pagination is working in Hosts query', () => {
|
||||
it('Make sure that pagination is working in Hosts query', () => {
|
||||
return client
|
||||
.query<GetHostsQuery.Query>({
|
||||
query: hostsQuery,
|
||||
|
@ -52,12 +51,12 @@ const hostsTests: KbnTestProvider = ({ getService }) => {
|
|||
sourceId: 'default',
|
||||
timerange: {
|
||||
interval: '12h',
|
||||
to: 1514782800000,
|
||||
from: 1546318799999,
|
||||
to: 1546554465535,
|
||||
from: 1483306065535,
|
||||
},
|
||||
pagination: {
|
||||
limit: 2,
|
||||
cursor: '6f7be6fb33e6c77f057266415c094408',
|
||||
cursor: 'aa7ca589f1b8220002f2fc61c64cfbf1',
|
||||
},
|
||||
},
|
||||
})
|
||||
|
@ -66,7 +65,7 @@ const hostsTests: KbnTestProvider = ({ getService }) => {
|
|||
|
||||
expect(hosts.edges.length).to.be(1);
|
||||
expect(hosts.totalCount).to.be(2);
|
||||
expect(hosts.edges[0]!.host.name).to.be('elrond.elstc.co');
|
||||
expect(hosts.edges[0]!.host.name).to.be('siem-general');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
@ -9,5 +9,6 @@ export default function ({ loadTestFile }) {
|
|||
describe('SecOps GraphQL Endpoints', () => {
|
||||
loadTestFile(require.resolve('./sources'));
|
||||
loadTestFile(require.resolve('./hosts'));
|
||||
loadTestFile(require.resolve('./uncommon_processes'));
|
||||
});
|
||||
}
|
||||
|
|
125
x-pack/test/api_integration/apis/secops/uncommon_processes.ts
Normal file
125
x-pack/test/api_integration/apis/secops/uncommon_processes.ts
Normal file
|
@ -0,0 +1,125 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License;
|
||||
* you may not use this file except in compliance with the Elastic License.
|
||||
*/
|
||||
|
||||
import expect from 'expect.js';
|
||||
import { uncommonProcessesQuery } from '../../../../plugins/secops/public/containers/uncommon_processes/index.gql_query';
|
||||
import { GetUncommonProcessesQuery } from '../../../../plugins/secops/public/graphql/types';
|
||||
|
||||
import { KbnTestProvider } from './types';
|
||||
|
||||
const hostsTests: KbnTestProvider = ({ getService }) => {
|
||||
const esArchiver = getService('esArchiver');
|
||||
const client = getService('secOpsGraphQLClient');
|
||||
|
||||
describe('uncommon_processes', () => {
|
||||
before(() => esArchiver.load('auditbeat/hosts'));
|
||||
after(() => esArchiver.unload('auditbeat/hosts'));
|
||||
|
||||
it('should return an edge of length 1 when given a pagination of length 1', async () => {
|
||||
const {
|
||||
data: {
|
||||
source: { UncommonProcesses },
|
||||
},
|
||||
} = await client.query<GetUncommonProcessesQuery.Query>({
|
||||
query: uncommonProcessesQuery,
|
||||
variables: {
|
||||
sourceId: 'default',
|
||||
timerange: {
|
||||
interval: '12h',
|
||||
to: 1546554465535,
|
||||
from: 1483306065535,
|
||||
},
|
||||
pagination: {
|
||||
limit: 1,
|
||||
},
|
||||
},
|
||||
});
|
||||
expect(UncommonProcesses.edges.length).to.be(1);
|
||||
});
|
||||
|
||||
it('should return an edge of length 2 when given a pagination of length 2', async () => {
|
||||
const {
|
||||
data: {
|
||||
source: { UncommonProcesses },
|
||||
},
|
||||
} = await client.query<GetUncommonProcessesQuery.Query>({
|
||||
query: uncommonProcessesQuery,
|
||||
variables: {
|
||||
sourceId: 'default',
|
||||
timerange: {
|
||||
interval: '12h',
|
||||
to: 1546554465535,
|
||||
from: 1483306065535,
|
||||
},
|
||||
pagination: {
|
||||
limit: 2,
|
||||
},
|
||||
},
|
||||
});
|
||||
expect(UncommonProcesses.edges.length).to.be(2);
|
||||
});
|
||||
|
||||
it('should return a total count of 6 elements', async () => {
|
||||
const {
|
||||
data: {
|
||||
source: { UncommonProcesses },
|
||||
},
|
||||
} = await client.query<GetUncommonProcessesQuery.Query>({
|
||||
query: uncommonProcessesQuery,
|
||||
variables: {
|
||||
sourceId: 'default',
|
||||
timerange: {
|
||||
interval: '12h',
|
||||
to: 1546554465535,
|
||||
from: 1483306065535,
|
||||
},
|
||||
pagination: {
|
||||
limit: 1,
|
||||
},
|
||||
},
|
||||
});
|
||||
expect(UncommonProcesses.totalCount).to.be(6);
|
||||
});
|
||||
|
||||
it('should return a single data set with pagination of 1', async () => {
|
||||
const {
|
||||
data: {
|
||||
source: { UncommonProcesses },
|
||||
},
|
||||
} = await client.query<GetUncommonProcessesQuery.Query>({
|
||||
query: uncommonProcessesQuery,
|
||||
variables: {
|
||||
sourceId: 'default',
|
||||
timerange: {
|
||||
interval: '12h',
|
||||
to: 1546554465535,
|
||||
from: 1483306065535,
|
||||
},
|
||||
pagination: {
|
||||
limit: 1,
|
||||
},
|
||||
},
|
||||
});
|
||||
expect(UncommonProcesses.edges[0].uncommonProcess).to.eql({
|
||||
_id: 'QD1yEWgBiyhPd5Zoyisj',
|
||||
name: 'sshd',
|
||||
title: null,
|
||||
instances: 2,
|
||||
hosts: [
|
||||
{
|
||||
id: 'aa7ca589f1b8220002f2fc61c64cfbf1',
|
||||
name: 'siem-kibana',
|
||||
__typename: 'HostEcsFields',
|
||||
},
|
||||
],
|
||||
__typename: 'UncommonProcessItem',
|
||||
});
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
// tslint:disable-next-line no-default-export
|
||||
export default hostsTests;
|
|
@ -10,7 +10,7 @@ import { InMemoryCache, IntrospectionFragmentMatcher } from 'apollo-cache-inmemo
|
|||
import { ApolloClient } from 'apollo-client';
|
||||
import { HttpLink } from 'apollo-link-http';
|
||||
|
||||
import introspectionQueryResultData from '../../../plugins/secops/common/graphql/introspection.json';
|
||||
import introspectionQueryResultData from '../../../plugins/secops/public/graphql/introspection.json';
|
||||
|
||||
export function SecOpsGraphQLProvider({ getService }) {
|
||||
const config = getService('config');
|
||||
|
|
Binary file not shown.
File diff suppressed because it is too large
Load diff
|
@ -13,7 +13,7 @@ export default function({ getService, loadTestFile }: TestInvoker) {
|
|||
const supertest = getService('supertest');
|
||||
|
||||
describe('saved objects security and spaces enabled', function() {
|
||||
this.tags('ciGroup5');
|
||||
this.tags('ciGroup1'); // DO NOT CHECK THIS BACK INTO MASTER -- THIS IS TEMP FROM ciGroup5 to ciGroup1 for secops to keep this running quickly
|
||||
|
||||
before(async () => {
|
||||
await createUsersAndRoles(es, supertest);
|
||||
|
|
|
@ -13,7 +13,7 @@ export default function({ getService, loadTestFile }: TestInvoker) {
|
|||
const supertest = getService('supertest');
|
||||
|
||||
describe('saved objects security only enabled', function() {
|
||||
this.tags('ciGroup5');
|
||||
this.tags('ciGroup1'); // DO NOT CHECK THIS BACK INTO MASTER -- THIS IS TEMP FROM ciGroup5 to ciGroup1 for secops to keep this running quickly
|
||||
|
||||
before(async () => {
|
||||
await createUsersAndRoles(es, supertest);
|
||||
|
|
|
@ -9,7 +9,7 @@ import { TestInvoker } from '../../common/lib/types';
|
|||
// tslint:disable:no-default-export
|
||||
export default function({ loadTestFile }: TestInvoker) {
|
||||
describe('saved objects spaces only enabled', function() {
|
||||
this.tags('ciGroup5');
|
||||
this.tags('ciGroup1'); // DO NOT CHECK THIS BACK INTO MASTER -- THIS IS TEMP FROM ciGroup5 to ciGroup1 for secops to keep this running quickly
|
||||
|
||||
loadTestFile(require.resolve('./bulk_create'));
|
||||
loadTestFile(require.resolve('./bulk_get'));
|
||||
|
|
|
@ -13,7 +13,7 @@ export default function({ loadTestFile, getService }: TestInvoker) {
|
|||
const supertest = getService('supertest');
|
||||
|
||||
describe('spaces api with security', function() {
|
||||
this.tags('ciGroup5');
|
||||
this.tags('ciGroup1'); // DO NOT CHECK THIS BACK INTO MASTER -- THIS IS TEMP FROM ciGroup5 to ciGroup1 for secops to keep this running quickly
|
||||
|
||||
before(async () => {
|
||||
await createUsersAndRoles(es, supertest);
|
||||
|
|
|
@ -9,7 +9,7 @@ import { TestInvoker } from '../../common/lib/types';
|
|||
// tslint:disable:no-default-export
|
||||
export default function spacesOnlyTestSuite({ loadTestFile }: TestInvoker) {
|
||||
describe('spaces api without security', function() {
|
||||
this.tags('ciGroup5');
|
||||
this.tags('ciGroup1'); // DO NOT CHECK THIS BACK INTO MASTER -- THIS IS TEMP FROM ciGroup5 to ciGroup1 for secops to keep this running quickly
|
||||
|
||||
loadTestFile(require.resolve('./create'));
|
||||
loadTestFile(require.resolve('./delete'));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue