[SecuritySolution] Migrate (some) resolver tests to testing-library (#134643)

* chore: remove unused file

* test: migrate to testing-library

Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
This commit is contained in:
Jan Monschke 2022-06-22 16:15:08 +02:00 committed by GitHub
parent 2010a56a35
commit f65685b2ac
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 35 additions and 58 deletions

View file

@ -1,18 +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 { ReactWrapper } from 'enzyme';
/**
* Return a collection of attribute 'entries'.
* The 'entries' are attributeName-attributeValue tuples.
*/
export function attributeEntries(wrapper: ReactWrapper): Array<[string, string]> {
return Array.prototype.slice
.call(wrapper.getDOMNode().attributes)
.map(({ name, value }) => [name, value]);
}

View file

@ -6,46 +6,48 @@
*/
import React from 'react';
import { render, screen } from '@testing-library/react';
import { I18nProvider } from '@kbn/i18n-react';
import { EndpointDocGenerator } from '../../../../common/endpoint/generate_data';
import { DescriptiveName } from './descriptive_name';
import { SafeResolverEvent } from '../../../../common/endpoint/types';
import { mount, ReactWrapper } from 'enzyme';
import { I18nProvider } from '@kbn/i18n-react';
describe('DescriptiveName', () => {
let generator: EndpointDocGenerator;
let wrapper: (event: SafeResolverEvent) => ReactWrapper;
beforeEach(() => {
generator = new EndpointDocGenerator('seed');
wrapper = (event: SafeResolverEvent) =>
mount(
<I18nProvider>
<DescriptiveName event={event} />
</I18nProvider>
);
});
const generator = new EndpointDocGenerator('seed');
function renderEvent(event: SafeResolverEvent) {
render(
<I18nProvider>
<DescriptiveName event={event} />
</I18nProvider>
);
}
it('returns the right name for a registry event', () => {
const extensions = { registry: { key: `HKLM/Windows/Software/abc` } };
const event = generator.generateEvent({ eventCategory: 'registry', extensions });
expect(wrapper(event).text()).toEqual(`HKLM/Windows/Software/abc`);
renderEvent(generator.generateEvent({ eventCategory: 'registry', extensions }));
expect(screen.queryByText('HKLM/Windows/Software/abc')).toBeInTheDocument();
});
it('returns the right name for a network event', () => {
const randomIP = `${generator.randomIP()}`;
const extensions = { network: { direction: 'outbound', forwarded_ip: randomIP } };
const event = generator.generateEvent({ eventCategory: 'network', extensions });
expect(wrapper(event).text()).toEqual(`outbound ${randomIP}`);
renderEvent(generator.generateEvent({ eventCategory: 'network', extensions }));
expect(screen.queryByText(`outbound ${randomIP}`)).toBeInTheDocument();
});
it('returns the right name for a file event', () => {
const extensions = { file: { path: 'C:\\My Documents\\business\\January\\processName' } };
const event = generator.generateEvent({ eventCategory: 'file', extensions });
expect(wrapper(event).text()).toEqual('C:\\My Documents\\business\\January\\processName');
renderEvent(generator.generateEvent({ eventCategory: 'file', extensions }));
expect(
screen.queryByText('C:\\My Documents\\business\\January\\processName')
).toBeInTheDocument();
});
it('returns the right name for a dns event', () => {
const extensions = { dns: { question: { name: `${generator.randomIP()}` } } };
const event = generator.generateEvent({ eventCategory: 'dns', extensions });
expect(wrapper(event).text()).toEqual(extensions.dns.question.name);
renderEvent(generator.generateEvent({ eventCategory: 'dns', extensions }));
expect(screen.queryByText(extensions.dns.question.name)).toBeInTheDocument();
});
});

View file

@ -5,7 +5,7 @@
* 2.0.
*/
import { mount } from 'enzyme';
import { render, screen } from '@testing-library/react';
import React from 'react';
import { useFormattedDate } from './use_formatted_date';
@ -16,23 +16,11 @@ import { uiSetting } from '../../mocks/ui_setting';
describe(`useFormattedDate, when the "dateFormat" UI setting is "${uiSetting(
'dateFormat'
)}" and the "dateFormat:tz" setting is "${uiSetting('dateFormat:tz')}"`, () => {
let formattedDate: (date: ConstructorParameters<typeof Date>[0] | Date | undefined) => string;
beforeEach(async () => {
const mockCoreStart = coreMock.createStart();
mockCoreStart.uiSettings.get.mockImplementation(uiSetting);
function Test({ date }: { date: ConstructorParameters<typeof Date>[0] | Date | undefined }) {
return <>{useFormattedDate(date)}</>;
}
formattedDate = (date: ConstructorParameters<typeof Date>[0] | Date | undefined): string =>
mount(
<KibanaContextProvider services={mockCoreStart}>
<Test date={date} />
</KibanaContextProvider>
).text();
});
function Test({ date }: { date: ConstructorParameters<typeof Date>[0] | Date | undefined }) {
return <span data-test-subj="useFormattedDateTest">{useFormattedDate(date)}</span>;
}
const mockCoreStart = coreMock.createStart();
mockCoreStart.uiSettings.get.mockImplementation(uiSetting);
it.each([
['randomString', 'an invalid string', 'Invalid Date'],
@ -51,6 +39,11 @@ describe(`useFormattedDate, when the "dateFormat" UI setting is "${uiSetting(
],
[new Date(1600863932316), 'a defined Date object', 'Sep 23, 2020 @ 08:25:32.316'],
])('when the provided date is %p (%s) it should return %p', (value, _explanation, expected) => {
expect(formattedDate(value)).toBe(expected);
render(
<KibanaContextProvider services={mockCoreStart}>
<Test date={value} />
</KibanaContextProvider>
);
expect(screen.queryByTestId('useFormattedDateTest')?.textContent).toBe(expected);
});
});