Skip to content

Commit 3cb89f1

Browse files
[Security Solution][Platform] - Bug fix when loading a saved query in detections (#114347) (#114668)
Bug in checking === for null when possibility of undefined, added tests. Co-authored-by: Yara Tercero <yctercero@users.noreply.github.com>
1 parent a85e1cd commit 3cb89f1

File tree

2 files changed

+61
-3
lines changed

2 files changed

+61
-3
lines changed

x-pack/plugins/security_solution/public/common/components/url_state/helpers.test.ts

Lines changed: 56 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66
*/
77

88
import { navTabs } from '../../../app/home/home_navigations';
9-
import { getTitle } from './helpers';
9+
import { getTitle, isQueryStateEmpty } from './helpers';
10+
import { CONSTANTS } from './constants';
1011

1112
describe('Helpers Url_State', () => {
1213
describe('getTitle', () => {
@@ -31,4 +32,58 @@ describe('Helpers Url_State', () => {
3132
expect(result).toEqual('');
3233
});
3334
});
35+
36+
describe('isQueryStateEmpty', () => {
37+
test('returns true if queryState is undefined', () => {
38+
const result = isQueryStateEmpty(undefined, CONSTANTS.savedQuery);
39+
expect(result).toBeTruthy();
40+
});
41+
42+
test('returns true if queryState is null', () => {
43+
const result = isQueryStateEmpty(null, CONSTANTS.savedQuery);
44+
expect(result).toBeTruthy();
45+
});
46+
47+
test('returns true if url key is "query" and queryState is empty string', () => {
48+
const result = isQueryStateEmpty({}, CONSTANTS.appQuery);
49+
expect(result).toBeTruthy();
50+
});
51+
52+
test('returns false if url key is "query" and queryState is not empty', () => {
53+
const result = isQueryStateEmpty(
54+
{ query: { query: '*:*' }, language: 'kuery' },
55+
CONSTANTS.appQuery
56+
);
57+
expect(result).toBeFalsy();
58+
});
59+
60+
test('returns true if url key is "filters" and queryState is empty', () => {
61+
const result = isQueryStateEmpty([], CONSTANTS.filters);
62+
expect(result).toBeTruthy();
63+
});
64+
65+
test('returns false if url key is "filters" and queryState is not empty', () => {
66+
const result = isQueryStateEmpty(
67+
[{ query: { query: '*:*' }, meta: { key: '123' } }],
68+
CONSTANTS.filters
69+
);
70+
expect(result).toBeFalsy();
71+
});
72+
73+
// TODO: Is this a bug, or intended?
74+
test('returns false if url key is "timeline" and queryState is empty', () => {
75+
const result = isQueryStateEmpty({}, CONSTANTS.timeline);
76+
expect(result).toBeFalsy();
77+
});
78+
79+
test('returns true if url key is "timeline" and queryState id is empty string', () => {
80+
const result = isQueryStateEmpty({ id: '', isOpen: true }, CONSTANTS.timeline);
81+
expect(result).toBeTruthy();
82+
});
83+
84+
test('returns false if url key is "timeline" and queryState is not empty', () => {
85+
const result = isQueryStateEmpty({ id: '123', isOpen: true }, CONSTANTS.timeline);
86+
expect(result).toBeFalsy();
87+
});
88+
});
3489
});

x-pack/plugins/security_solution/public/common/components/url_state/helpers.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -199,8 +199,11 @@ export const updateTimerangeUrl = (
199199
return timeRange;
200200
};
201201

202-
export const isQueryStateEmpty = (queryState: ValueUrlState | null, urlKey: KeyUrlState) =>
203-
queryState === null ||
202+
export const isQueryStateEmpty = (
203+
queryState: ValueUrlState | undefined | null,
204+
urlKey: KeyUrlState
205+
): boolean =>
206+
queryState == null ||
204207
(urlKey === CONSTANTS.appQuery && isEmpty((queryState as Query).query)) ||
205208
(urlKey === CONSTANTS.filters && isEmpty(queryState)) ||
206209
(urlKey === CONSTANTS.timeline && (queryState as TimelineUrl).id === '');

0 commit comments

Comments
 (0)