Skip to content
This repository has been archived by the owner on Mar 28, 2024. It is now read-only.

Commit

Permalink
[Security Solution][Exceptions] - Fix bug allowing user to type in cu…
Browse files Browse the repository at this point in the history
…stom field option for endpoint exception (elastic#152619)

## Summary

Addresses elastic#149814
  • Loading branch information
yctercero authored and Sloane Perrault committed Mar 8, 2023
1 parent 4017534 commit 0f0893a
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,9 @@ describe('BuilderEntryItem', () => {
expect(wrapper.find('.euiFormHelpText.euiFormRow__text').at(0).text()).toEqual(
i18n.CUSTOM_COMBOBOX_OPTION_TEXT
);
expect(wrapper.find('[data-test-subj="exceptionBuilderEntryField"]').at(0).props()).toEqual(
expect.objectContaining({ acceptsCustomOptions: true })
);
});

test('it does not render custom option text when "allowCustomOptions" is "true" and it is a nested entry', () => {
Expand Down Expand Up @@ -154,6 +157,44 @@ describe('BuilderEntryItem', () => {
);

expect(wrapper.find('.euiFormHelpText.euiFormRow__text').exists()).toBeFalsy();
expect(wrapper.find('[data-test-subj="exceptionBuilderEntryField"]').at(0).props()).toEqual(
expect.objectContaining({ acceptsCustomOptions: false })
);
});

test('it does not render custom option text when "allowCustomOptions" is "false"', () => {
wrapper = mount(
<BuilderEntryItem
autocompleteService={autocompleteStartMock}
entry={{
correspondingKeywordField: undefined,
entryIndex: 0,
field: getField('ip'),
id: '123',
nested: undefined,
operator: isOperator,
parent: undefined,
value: '1234',
}}
httpService={mockKibanaHttpService}
indexPattern={{
fields,
id: '1234',
title: 'logstash-*',
}}
listType="detection"
onChange={jest.fn()}
setErrorsExist={jest.fn()}
setWarningsExist={jest.fn()}
showLabel
allowCustomOptions={false}
/>
);

expect(wrapper.find('.euiFormHelpText.euiFormRow__text').exists()).toBeFalsy();
expect(wrapper.find('[data-test-subj="exceptionBuilderEntryField"]').at(0).props()).toEqual(
expect.objectContaining({ acceptsCustomOptions: false })
);
});

test('it render mapping issues warning text when field has mapping conflicts', () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,7 @@ export const BuilderEntryItem: React.FC<EntryItemProps> = ({
isLoading={false}
isDisabled={isDisabled || indexPattern == null}
onChange={handleFieldChange}
acceptsCustomOptions={entry.nested == null}
acceptsCustomOptions={entry.nested == null && allowCustomOptions}
data-test-subj="exceptionBuilderEntryField"
showMappingConflicts={true}
/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ describe('Add endpoint exception from rule details', () => {
it('edits an endpoint exception item', () => {
const NEW_ITEM_NAME = 'Exception item-EDITED';
const ITEM_FIELD = 'event.code';
const FIELD_DIFFERENT_FROM_EXISTING_ITEM_FIELD = 'agent.name';
const FIELD_DIFFERENT_FROM_EXISTING_ITEM_FIELD = 'agent.type';

// displays existing exception items
cy.get(EXCEPTION_ITEM_VIEWER_CONTAINER).should('have.length', 1);
Expand Down Expand Up @@ -159,7 +159,7 @@ describe('Add endpoint exception from rule details', () => {

// check that updates stuck
cy.get(EXCEPTION_CARD_ITEM_NAME).should('have.text', NEW_ITEM_NAME);
cy.get(EXCEPTION_CARD_ITEM_CONDITIONS).should('have.text', ' agent.nameIS foo');
cy.get(EXCEPTION_CARD_ITEM_CONDITIONS).should('have.text', ' agent.typeIS foo');
});

it('allows user to search for items', () => {
Expand Down

0 comments on commit 0f0893a

Please sign in to comment.