Skip to content

Commit 1f3fa8a

Browse files
committed
working single date-only query (i.e., no multi search term searches, only either date or string). It has 1 problem in that the results are larger than what the developer console returns, and also that it is only searching containers.cna.providerMetadata.dateUpdated and containers.cna.timeline.time. Note change in devel.jsonc search index
1 parent 25a52d4 commit 1f3fa8a

File tree

8 files changed

+270
-70
lines changed

8 files changed

+270
-70
lines changed

config/devel.jsonc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@
3131
"fixtures": {
3232
// @todo these constants needs to be in sync in cve-fixtures
3333
// so that testing snapshots are consistent and valid
34-
"name": "fixtures-search-baseline-1086", // release tag
35-
"numCves": "1086" // possible identifier assuming we always add cves to a new release
34+
"name": "fixtures-search-baseline-1008", // release tag
35+
"numCves": "1008" // possible identifier assuming we always add cves to a new release
3636
}
3737
},
3838
// constants for testing node-config

src/search/BasicSearchManager.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ export class BasicSearchManager {
5454
let response = undefined;
5555
const builder = new SearchQueryBuilder(searchText, options);
5656
const result: CveResult = builder.buildQuery()
57-
// console.log(`result=${JSON.stringify(result, null, 2)}`)
57+
// console.log(`query body (q)=${JSON.stringify(result.data['q'], null, 2)}`)
5858
if (result.isOk()) {
5959
// console.log(`q: ${JSON.stringify(result.data['q'], null, 2)}`)
6060
response = await this._searchReader._client.search({

src/search/SearchQueryBuilder.test.unit.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
// For a more comprehensive set of test cases, see the tests
22
// in test_cases/search_*
3+
import { describe, it, test, expect } from '@jest/globals';
34

45
import { SearchOptions } from "./BasicSearchManager.js"
56
import { SearchRequestType, SearchRequest, SearchRequestTypeId } from "./SearchRequest.js";

src/search/SearchQueryBuilder.ts

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,16 @@ export class SearchQueryBuilder {
1414

1515
/** the JSON paths to CVE fields that are of the date type */
1616
static kDateFieldPaths = [
17-
'cveMetadata.datePublished',
18-
'cveMetadata.dateRejected',
19-
'cveMetadata.dateReserved',
20-
'cveMetadata.dateUpdated',
21-
'containers.cna.datePublic',
17+
// 'cveMetadata.datePublished',
18+
// 'cveMetadata.dateRejected',
19+
// 'cveMetadata.dateReserved',
20+
// 'cveMetadata.dateUpdated',
21+
// 'containers.cna.datePublic',
2222
'containers.cna.providerMetadata.dateUpdated',
2323
'containers.cna.timeline.time',
24-
'containers.adp.metrics.other.content.dateAdded',
25-
'containers.adp.metrics.other.content.timestamp',
26-
'containers.adp.providerMetadata.dateUpdated'
24+
// 'containers.adp.metrics.other.content.dateAdded',
25+
// 'containers.adp.metrics.other.content.timestamp',
26+
// 'containers.adp.providerMetadata.dateUpdated'
2727
];
2828

2929
/** the user entered text */
@@ -81,6 +81,7 @@ export class SearchQueryBuilder {
8181
// 1. date/date ranges
8282
// 2. query_string for everything else
8383
const isDate = SearchRequest.isDateString(this._searchText);
84+
// console.log(`isDate(): ${isDate}`)
8485
if (isDate) {
8586
// assemble all the date fields into an array
8687
let dateFields = [];
@@ -94,7 +95,7 @@ export class SearchQueryBuilder {
9495
}`;
9596
dateFields.push(JSON.parse(field));
9697
});
97-
console.log(`dateFields: ${JSON.stringify(dateFields, null, 2)}`);
98+
// console.log(`dateFields: ${JSON.stringify(dateFields, null, 2)}`);
9899
q = {
99100
query: {
100101
bool: {
@@ -147,7 +148,7 @@ export class SearchQueryBuilder {
147148
q['size'] = this._searchOptions.size;
148149
// ----- q
149150
result.data['q'] = q;
150-
151+
// console.log(`q: ${JSON.stringify(q, null, 2)}`)
151152
return result;
152153
}
153154

src/search/SearchRequest.test.unit.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// For a more comprehensive set of test cases, see the tests
22
// in test_cases/search_*
3-
3+
import { describe, it, expect } from '@jest/globals';
44
import { SearchOptions } from "./BasicSearchManager.js"
55
import { SearchRequestType, SearchRequest, SearchRequestTypeId } from "./SearchRequest.js";
66

src/search/__snapshots__/SearchQueryBuilder.test.unit.ts.snap

Lines changed: 0 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -105,41 +105,6 @@ CveResult {
105105
"bool": Object {
106106
"minimum_should_match": 1,
107107
"should": Array [
108-
Object {
109-
"range": Object {
110-
"cveMetadata.datePublished": Object {
111-
"gte": "2023-12-21",
112-
},
113-
},
114-
},
115-
Object {
116-
"range": Object {
117-
"cveMetadata.dateRejected": Object {
118-
"gte": "2023-12-21",
119-
},
120-
},
121-
},
122-
Object {
123-
"range": Object {
124-
"cveMetadata.dateReserved": Object {
125-
"gte": "2023-12-21",
126-
},
127-
},
128-
},
129-
Object {
130-
"range": Object {
131-
"cveMetadata.dateUpdated": Object {
132-
"gte": "2023-12-21",
133-
},
134-
},
135-
},
136-
Object {
137-
"range": Object {
138-
"containers.cna.datePublic": Object {
139-
"gte": "2023-12-21",
140-
},
141-
},
142-
},
143108
Object {
144109
"range": Object {
145110
"containers.cna.providerMetadata.dateUpdated": Object {
@@ -154,27 +119,6 @@ CveResult {
154119
},
155120
},
156121
},
157-
Object {
158-
"range": Object {
159-
"containers.adp.metrics.other.content.dateAdded": Object {
160-
"gte": "2023-12-21",
161-
},
162-
},
163-
},
164-
Object {
165-
"range": Object {
166-
"containers.adp.metrics.other.content.timestamp": Object {
167-
"gte": "2023-12-21",
168-
},
169-
},
170-
},
171-
Object {
172-
"range": Object {
173-
"containers.adp.providerMetadata.dateUpdated": Object {
174-
"gte": "2023-12-21",
175-
},
176-
},
177-
},
178122
],
179123
},
180124
},
Lines changed: 190 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,190 @@
1+
// Jest Snapshot v1, https://goo.gl/fbAQLP
2+
3+
exports[`Date Search (e2e tests) BasicSearchManager.search() search('2024-06-14') should return cves including CVE-2024-6006 1`] = `
4+
Array [
5+
"CVE-2017-9711",
6+
"CVE-2018-4301",
7+
"CVE-2018-9367",
8+
"CVE-2022-21833",
9+
"CVE-2022-21834",
10+
"CVE-2022-21836",
11+
"CVE-2022-21843",
12+
"CVE-2022-21862",
13+
"CVE-2022-21864",
14+
"CVE-2022-21867",
15+
"CVE-2022-21880",
16+
"CVE-2022-21881",
17+
"CVE-2022-21883",
18+
"CVE-2022-21894",
19+
"CVE-2022-21900",
20+
"CVE-2022-21903",
21+
"CVE-2022-21904",
22+
"CVE-2022-21908",
23+
"CVE-2022-21916",
24+
"CVE-2022-21924",
25+
"CVE-2022-21958",
26+
"CVE-2022-21960",
27+
"CVE-2022-21961",
28+
"CVE-2022-21962",
29+
"CVE-2022-21963",
30+
"CVE-2022-21983",
31+
"CVE-2022-21989",
32+
"CVE-2022-21990",
33+
"CVE-2022-25622",
34+
"CVE-2022-30133",
35+
"CVE-2022-30146",
36+
"CVE-2022-30190",
37+
"CVE-2022-30194",
38+
"CVE-2022-30202",
39+
"CVE-2022-30213",
40+
"CVE-2022-34714",
41+
"CVE-2022-45186",
42+
"CVE-2023-32041",
43+
"CVE-2023-40708",
44+
"CVE-2023-47039",
45+
"CVE-2023-50781",
46+
"CVE-2024-10277",
47+
"CVE-2024-10451",
48+
"CVE-2024-10773",
49+
"CVE-2024-10785",
50+
"CVE-2024-10881",
51+
"CVE-2024-10941",
52+
"CVE-2024-11385",
53+
"CVE-2024-11388",
54+
"CVE-2024-11396",
55+
"CVE-2024-11424",
56+
"CVE-2024-11921",
57+
"CVE-2024-12012",
58+
"CVE-2024-12110",
59+
"CVE-2024-20151",
60+
"CVE-2024-20152",
61+
"CVE-2024-20153",
62+
"CVE-2024-20441",
63+
"CVE-2024-26118",
64+
"CVE-2024-26817",
65+
"CVE-2024-31162",
66+
"CVE-2024-31315",
67+
"CVE-2024-31318",
68+
"CVE-2024-31880",
69+
"CVE-2024-35532",
70+
"CVE-2024-36155",
71+
"CVE-2024-36156",
72+
"CVE-2024-36157",
73+
"CVE-2024-36158",
74+
"CVE-2024-36159",
75+
"CVE-2024-36160",
76+
"CVE-2024-36176",
77+
"CVE-2024-36177",
78+
"CVE-2024-38633",
79+
"CVE-2024-38634",
80+
"CVE-2024-38635",
81+
"CVE-2024-38649",
82+
"CVE-2024-40750",
83+
"CVE-2024-41030",
84+
"CVE-2024-41875",
85+
"CVE-2024-41877",
86+
"CVE-2024-42169",
87+
"CVE-2024-43624",
88+
"CVE-2024-43639",
89+
"CVE-2024-44025",
90+
"CVE-2024-44042",
91+
"CVE-2024-44043",
92+
"CVE-2024-44045",
93+
"CVE-2024-44299",
94+
"CVE-2024-45251",
95+
"CVE-2024-46685",
96+
"CVE-2024-46689",
97+
"CVE-2024-46692",
98+
"CVE-2024-46704",
99+
"CVE-2024-46705",
100+
"CVE-2024-46706",
101+
"CVE-2024-46707",
102+
"CVE-2024-46835",
103+
"CVE-2024-46847",
104+
"CVE-2024-46866",
105+
"CVE-2024-47333",
106+
"CVE-2024-47360",
107+
"CVE-2024-47517",
108+
"CVE-2024-47518",
109+
"CVE-2024-47519",
110+
"CVE-2024-47642",
111+
"CVE-2024-47863",
112+
"CVE-2024-48245",
113+
"CVE-2024-48510",
114+
"CVE-2024-51757",
115+
"CVE-2024-52940",
116+
"CVE-2024-53476",
117+
"CVE-2024-54014",
118+
"CVE-2024-54763",
119+
"CVE-2024-54818",
120+
"CVE-2024-54849",
121+
"CVE-2024-55408",
122+
"CVE-2024-56521",
123+
"CVE-2024-56527",
124+
"CVE-2024-57224",
125+
"CVE-2024-57650",
126+
"CVE-2024-5938",
127+
"CVE-2024-5965",
128+
"CVE-2024-5981",
129+
"CVE-2024-6006",
130+
"CVE-2024-6073",
131+
"CVE-2024-6136",
132+
"CVE-2024-6615",
133+
"CVE-2024-7234",
134+
"CVE-2024-7382",
135+
"CVE-2024-7658",
136+
"CVE-2024-8608",
137+
"CVE-2024-8848",
138+
"CVE-2024-9134",
139+
"CVE-2024-9313",
140+
"CVE-2024-9420",
141+
"CVE-2024-9442",
142+
"CVE-2025-0240",
143+
"CVE-2025-0241",
144+
"CVE-2025-23022",
145+
"CVE-2025-23036",
146+
"CVE-2025-23037",
147+
"CVE-2025-23091",
148+
"CVE-2025-23114",
149+
"CVE-2025-24339",
150+
"CVE-2025-25305",
151+
"CVE-2025-25728",
152+
"CVE-2025-27594",
153+
"CVE-2025-27722",
154+
"CVE-2025-28169",
155+
"CVE-2025-30140",
156+
"CVE-2025-30474",
157+
"CVE-2025-30676",
158+
"CVE-2025-32053",
159+
"CVE-2025-37730",
160+
]
161+
`;
162+
163+
exports[`Date Search (e2e tests) BasicSearchManager.search() search('2025-01-11') should return cves including CVE-2025-37730 1`] = `
164+
Array [
165+
"CVE-2022-25622",
166+
"CVE-2024-11396",
167+
"CVE-2024-12012",
168+
"CVE-2024-26817",
169+
"CVE-2024-42169",
170+
"CVE-2024-57650",
171+
"CVE-2025-0240",
172+
"CVE-2025-0241",
173+
"CVE-2025-23022",
174+
"CVE-2025-23036",
175+
"CVE-2025-23037",
176+
"CVE-2025-23091",
177+
"CVE-2025-23114",
178+
"CVE-2025-24339",
179+
"CVE-2025-25305",
180+
"CVE-2025-25728",
181+
"CVE-2025-27594",
182+
"CVE-2025-27722",
183+
"CVE-2025-28169",
184+
"CVE-2025-30140",
185+
"CVE-2025-30474",
186+
"CVE-2025-30676",
187+
"CVE-2025-32053",
188+
"CVE-2025-37730",
189+
]
190+
`;

0 commit comments

Comments
 (0)