diff --git a/README.md b/README.md index f7f8abb..2291500 100644 --- a/README.md +++ b/README.md @@ -280,7 +280,7 @@ CVSS vector filters, SSVC filters, date-bounded positive `knownExploited` search The reported total and pagination are complete only within that bounded candidate set; qualifying records beyond the first 10,000 OpenSearch candidates may not be represented. This preserves the existing bounded post-filter behavior until PIT-based pagination is implemented. A `knownExploited` filter without date boundaries uses a direct OpenSearch query and retains ordinary exact-total behavior. -`/search` orders OpenSearch results by CVE ID so repeated shallow-page requests use a deterministic sort. The response `pageSize` is the number of records actually returned, including zero for an out-of-range page. A stable sort does not provide a point-in-time snapshot, so index updates between separate page requests can still shift results until PIT-based pagination is implemented. +`/search` orders OpenSearch results by CVE ID so repeated shallow-page requests use a deterministic sort. The response `pageSize` preserves the requested `resultsPerPage` value, while `resultsReturned` reports the number of records actually returned and may be smaller for a partial or out-of-range page. A stable sort does not provide a point-in-time snapshot, so index updates between separate page requests can still shift results until PIT-based pagination is implemented. The API does not cache, coalesce, queue, or rate-limit searches in process. Each request executes its own required OpenSearch operations. Public rate enforcement, admission control, shared caching, and performance telemetry must be supplied by the deployment infrastructure when those capabilities are enabled. diff --git a/api-docs/openapi.json b/api-docs/openapi.json index 283caa7..b8c7b06 100644 --- a/api-docs/openapi.json +++ b/api-docs/openapi.json @@ -454,6 +454,7 @@ "required": [ "page", "pageSize", + "resultsReturned", "totalPages", "status", "data" @@ -465,9 +466,14 @@ "description": "One-based page number, or 0 when the search has no matches." }, "pageSize": { + "type": "integer", + "minimum": 1, + "description": "Maximum number of CVE records requested for this page." + }, + "resultsReturned": { "type": "integer", "minimum": 0, - "description": "Number of CVE records returned in this response." + "description": "Number of CVE records actually returned in this response." }, "totalPages": { "type": "integer", diff --git a/api-docs/openapi.test.js b/api-docs/openapi.test.js index b3c5d0a..d724de3 100644 --- a/api-docs/openapi.test.js +++ b/api-docs/openapi.test.js @@ -187,8 +187,16 @@ describe('OpenAPI contract', () => { const schemas = openapi.components.schemas; const searchResponse = schemas.SearchResponse; - expect(searchResponse.required).toStrictEqual(['page', 'pageSize', 'totalPages', 'status', 'data']); - expect(searchResponse.properties.pageSize.description).toContain('returned in this response'); + expect(searchResponse.required).toStrictEqual([ + 'page', + 'pageSize', + 'resultsReturned', + 'totalPages', + 'status', + 'data' + ]); + expect(searchResponse.properties.pageSize.description).toContain('requested for this page'); + expect(searchResponse.properties.resultsReturned.description).toContain('actually returned'); expect(searchResponse.properties.data.properties.hits.$ref).toBe('#/components/schemas/SearchHits'); expect(schemas.SearchHits.properties.hits.items.$ref).toBe('#/components/schemas/SearchHit'); expect(schemas.ApiError.required).toStrictEqual(['error', 'message']); diff --git a/controllers/searchController.js b/controllers/searchController.js index b8d97a8..a8f5a8b 100644 --- a/controllers/searchController.js +++ b/controllers/searchController.js @@ -218,13 +218,14 @@ async function searchHandler(req, res, next) { //Calculate current page and total pages to append to JSON output const totalValue = resp.data.hits.total.value; const requestedPageSize = pagingOptions.resultsPerPage; - const pageSize = resp.data.hits.hits.length; + const resultsReturned = resp.data.hits.hits.length; const page = totalValue === 0 ? 0 : Math.floor(pagingOptions.from / requestedPageSize) + 1; const totalPages = totalValue === 0 ? 0 : Math.ceil(totalValue / requestedPageSize); return res.status(200).json({ page, - pageSize, + pageSize: requestedPageSize, + resultsReturned, totalPages, ...resp }); diff --git a/controllers/searchController.test.js b/controllers/searchController.test.js index c7d1702..ad42d84 100644 --- a/controllers/searchController.test.js +++ b/controllers/searchController.test.js @@ -220,7 +220,8 @@ describe('Search controller SEARCH handler', () => { expect(res.status).toHaveBeenCalledWith(200); expect(res.json).toHaveBeenCalledWith({ page: 3, - pageSize: 1, + pageSize: 10, + resultsReturned: 1, totalPages: 3, ...resp }); @@ -523,6 +524,7 @@ describe('Search controller SEARCH handler', () => { expect(res.json).toHaveBeenCalledWith({ page: 1, pageSize: 1, + resultsReturned: 1, totalPages: 1, status: 'ok', data: { @@ -734,6 +736,7 @@ describe('Search controller SEARCH handler', () => { expect(res.json).toHaveBeenCalledWith({ page: 1, pageSize: 1, + resultsReturned: 1, totalPages: 1, status: 'ok', data: { @@ -789,6 +792,7 @@ describe('Search controller SEARCH handler', () => { expect(res.json).toHaveBeenCalledWith({ page: 1, pageSize: 1, + resultsReturned: 1, totalPages: 1, status: 'ok', data: { @@ -1034,7 +1038,7 @@ describe('Search controller SEARCH handler', () => { expect(mockApiSearch).not.toHaveBeenCalled(); }); - test('SEARCH returns zeroed pagination metadata when OpenSearch returns zero hits', async () => { + test('SEARCH retains requested page size and reports zero returned results when OpenSearch returns zero hits', async () => { const resp = advancedResponse(0); mockApiSearch.mockResolvedValue(resp); @@ -1049,7 +1053,8 @@ describe('Search controller SEARCH handler', () => { expect(res.status).toHaveBeenCalledWith(200); expect(res.json).toHaveBeenCalledWith({ page: 0, - pageSize: 0, + pageSize: 20, + resultsReturned: 0, totalPages: 0, ...resp }); @@ -1073,7 +1078,8 @@ describe('Search controller SEARCH handler', () => { expect(res.status).toHaveBeenCalledWith(200); expect(res.json).toHaveBeenCalledWith({ page: 2, - pageSize: 0, + pageSize: 10, + resultsReturned: 0, totalPages: 1, ...resp }); diff --git a/routes/search.integration.test.js b/routes/search.integration.test.js index df381d0..deb1700 100644 --- a/routes/search.integration.test.js +++ b/routes/search.integration.test.js @@ -97,6 +97,7 @@ describe('search route integration', () => { ); expect(response.body.page).toBe(1); expect(response.body.pageSize).toBe(1); + expect(response.body.resultsReturned).toBe(1); expect(response.body.totalPages).toBe(1); }); diff --git a/routes/swagger.js b/routes/swagger.js index 0e0c273..0996449 100644 --- a/routes/swagger.js +++ b/routes/swagger.js @@ -417,7 +417,7 @@ const doc = { SearchResponse: { type: 'object', additionalProperties: false, - required: ['page', 'pageSize', 'totalPages', 'status', 'data'], + required: ['page', 'pageSize', 'resultsReturned', 'totalPages', 'status', 'data'], properties: { page: { type: 'integer', @@ -425,9 +425,14 @@ const doc = { description: 'One-based page number, or 0 when the search has no matches.' }, pageSize: { + type: 'integer', + minimum: 1, + description: 'Maximum number of CVE records requested for this page.' + }, + resultsReturned: { type: 'integer', minimum: 0, - description: 'Number of CVE records returned in this response.' + description: 'Number of CVE records actually returned in this response.' }, totalPages: { type: 'integer', diff --git a/test/postman/CVE-Search-API.postman_collection.json b/test/postman/CVE-Search-API.postman_collection.json index 14b8c4e..8d9655a 100644 --- a/test/postman/CVE-Search-API.postman_collection.json +++ b/test/postman/CVE-Search-API.postman_collection.json @@ -126,10 +126,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is at least 1', () => pm.expect(payload.data.hits.total.value).to.be.at.least(1));", "}" @@ -164,10 +166,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is at least 1', () => pm.expect(payload.data.hits.total.value).to.be.at.least(1));", "}" @@ -208,10 +212,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is 1', () => pm.expect(payload.data.hits.total.value).to.eql(1));", " const returnedIds = payload.data.hits.hits.map((hit) => hit?._source?.cveMetadata?.cveId ?? hit?._id);", @@ -258,10 +264,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is 2', () => pm.expect(payload.data.hits.total.value).to.eql(2));", " const returnedIds = payload.data.hits.hits.map((hit) => hit?._source?.cveMetadata?.cveId ?? hit?._id);", @@ -308,10 +316,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is 1', () => pm.expect(payload.data.hits.total.value).to.eql(1));", "pm.test('returned hit count is 0', () => pm.expect(payload.data.hits.hits.length).to.eql(0));", @@ -357,10 +367,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is 1', () => pm.expect(payload.data.hits.total.value).to.eql(1));", "pm.test('returned hit count is 0', () => pm.expect(payload.data.hits.hits.length).to.eql(0));", @@ -412,10 +424,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is 1', () => pm.expect(payload.data.hits.total.value).to.eql(1));", " const returnedIds = payload.data.hits.hits.map((hit) => hit?._source?.cveMetadata?.cveId ?? hit?._id);", @@ -462,10 +476,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is 1', () => pm.expect(payload.data.hits.total.value).to.eql(1));", " const returnedIds = payload.data.hits.hits.map((hit) => hit?._source?.cveMetadata?.cveId ?? hit?._id);", @@ -512,10 +528,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is 0', () => pm.expect(payload.data.hits.total.value).to.eql(0));", "pm.test('returned hit count is 0', () => pm.expect(payload.data.hits.hits.length).to.eql(0));", @@ -561,10 +579,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is 1', () => pm.expect(payload.data.hits.total.value).to.eql(1));", " const returnedIds = payload.data.hits.hits.map((hit) => hit?._source?.cveMetadata?.cveId ?? hit?._id);", @@ -611,10 +631,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is 1', () => pm.expect(payload.data.hits.total.value).to.eql(1));", " const returnedIds = payload.data.hits.hits.map((hit) => hit?._source?.cveMetadata?.cveId ?? hit?._id);", @@ -661,10 +683,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is 1', () => pm.expect(payload.data.hits.total.value).to.eql(1));", " const returnedIds = payload.data.hits.hits.map((hit) => hit?._source?.cveMetadata?.cveId ?? hit?._id);", @@ -717,10 +741,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is 1', () => pm.expect(payload.data.hits.total.value).to.eql(1));", " const returnedIds = payload.data.hits.hits.map((hit) => hit?._source?.cveMetadata?.cveId ?? hit?._id);", @@ -767,10 +793,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is 1', () => pm.expect(payload.data.hits.total.value).to.eql(1));", " const returnedIds = payload.data.hits.hits.map((hit) => hit?._source?.cveMetadata?.cveId ?? hit?._id);", @@ -817,10 +845,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is 1', () => pm.expect(payload.data.hits.total.value).to.eql(1));", " const returnedIds = payload.data.hits.hits.map((hit) => hit?._source?.cveMetadata?.cveId ?? hit?._id);", @@ -867,10 +897,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is 1', () => pm.expect(payload.data.hits.total.value).to.eql(1));", " const returnedIds = payload.data.hits.hits.map((hit) => hit?._source?.cveMetadata?.cveId ?? hit?._id);", @@ -917,10 +949,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is 2', () => pm.expect(payload.data.hits.total.value).to.eql(2));", " const returnedIds = payload.data.hits.hits.map((hit) => hit?._source?.cveMetadata?.cveId ?? hit?._id);", @@ -967,10 +1001,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is 1', () => pm.expect(payload.data.hits.total.value).to.eql(1));", " const returnedIds = payload.data.hits.hits.map((hit) => hit?._source?.cveMetadata?.cveId ?? hit?._id);", @@ -1023,10 +1059,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is 1', () => pm.expect(payload.data.hits.total.value).to.eql(1));", " const returnedIds = payload.data.hits.hits.map((hit) => hit?._source?.cveMetadata?.cveId ?? hit?._id);", @@ -1073,10 +1111,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is 1', () => pm.expect(payload.data.hits.total.value).to.eql(1));", " const returnedIds = payload.data.hits.hits.map((hit) => hit?._source?.cveMetadata?.cveId ?? hit?._id);", @@ -1123,10 +1163,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is 1', () => pm.expect(payload.data.hits.total.value).to.eql(1));", " const returnedIds = payload.data.hits.hits.map((hit) => hit?._source?.cveMetadata?.cveId ?? hit?._id);", @@ -1173,10 +1215,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is 1', () => pm.expect(payload.data.hits.total.value).to.eql(1));", " const returnedIds = payload.data.hits.hits.map((hit) => hit?._source?.cveMetadata?.cveId ?? hit?._id);", @@ -1223,10 +1267,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is 1', () => pm.expect(payload.data.hits.total.value).to.eql(1));", " const returnedIds = payload.data.hits.hits.map((hit) => hit?._source?.cveMetadata?.cveId ?? hit?._id);", @@ -1273,10 +1319,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is 1', () => pm.expect(payload.data.hits.total.value).to.eql(1));", " const returnedIds = payload.data.hits.hits.map((hit) => hit?._source?.cveMetadata?.cveId ?? hit?._id);", @@ -1323,10 +1371,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is 1', () => pm.expect(payload.data.hits.total.value).to.eql(1));", " const returnedIds = payload.data.hits.hits.map((hit) => hit?._source?.cveMetadata?.cveId ?? hit?._id);", @@ -1373,10 +1423,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is 1', () => pm.expect(payload.data.hits.total.value).to.eql(1));", " const returnedIds = payload.data.hits.hits.map((hit) => hit?._source?.cveMetadata?.cveId ?? hit?._id);", @@ -1423,10 +1475,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is 1', () => pm.expect(payload.data.hits.total.value).to.eql(1));", " const returnedIds = payload.data.hits.hits.map((hit) => hit?._source?.cveMetadata?.cveId ?? hit?._id);", @@ -1473,10 +1527,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is 1', () => pm.expect(payload.data.hits.total.value).to.eql(1));", " const returnedIds = payload.data.hits.hits.map((hit) => hit?._source?.cveMetadata?.cveId ?? hit?._id);", @@ -1523,10 +1579,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is 1', () => pm.expect(payload.data.hits.total.value).to.eql(1));", " const returnedIds = payload.data.hits.hits.map((hit) => hit?._source?.cveMetadata?.cveId ?? hit?._id);", @@ -1579,10 +1637,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is 1', () => pm.expect(payload.data.hits.total.value).to.eql(1));", " const returnedIds = payload.data.hits.hits.map((hit) => hit?._source?.cveMetadata?.cveId ?? hit?._id);", @@ -1629,10 +1689,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is 1', () => pm.expect(payload.data.hits.total.value).to.eql(1));", " const returnedIds = payload.data.hits.hits.map((hit) => hit?._source?.cveMetadata?.cveId ?? hit?._id);", @@ -1679,10 +1741,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is 1', () => pm.expect(payload.data.hits.total.value).to.eql(1));", " const returnedIds = payload.data.hits.hits.map((hit) => hit?._source?.cveMetadata?.cveId ?? hit?._id);", @@ -1729,10 +1793,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is 1', () => pm.expect(payload.data.hits.total.value).to.eql(1));", " const returnedIds = payload.data.hits.hits.map((hit) => hit?._source?.cveMetadata?.cveId ?? hit?._id);", @@ -1779,10 +1845,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is 1', () => pm.expect(payload.data.hits.total.value).to.eql(1));", " const returnedIds = payload.data.hits.hits.map((hit) => hit?._source?.cveMetadata?.cveId ?? hit?._id);", @@ -1829,10 +1897,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is 1', () => pm.expect(payload.data.hits.total.value).to.eql(1));", " const returnedIds = payload.data.hits.hits.map((hit) => hit?._source?.cveMetadata?.cveId ?? hit?._id);", @@ -1885,10 +1955,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is 1', () => pm.expect(payload.data.hits.total.value).to.eql(1));", " const returnedIds = payload.data.hits.hits.map((hit) => hit?._source?.cveMetadata?.cveId ?? hit?._id);", @@ -1935,10 +2007,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is 1', () => pm.expect(payload.data.hits.total.value).to.eql(1));", " const returnedIds = payload.data.hits.hits.map((hit) => hit?._source?.cveMetadata?.cveId ?? hit?._id);", @@ -1985,10 +2059,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is 1', () => pm.expect(payload.data.hits.total.value).to.eql(1));", " const returnedIds = payload.data.hits.hits.map((hit) => hit?._source?.cveMetadata?.cveId ?? hit?._id);", @@ -2035,10 +2111,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is 1', () => pm.expect(payload.data.hits.total.value).to.eql(1));", " const returnedIds = payload.data.hits.hits.map((hit) => hit?._source?.cveMetadata?.cveId ?? hit?._id);", @@ -2085,10 +2163,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is 1', () => pm.expect(payload.data.hits.total.value).to.eql(1));", " const returnedIds = payload.data.hits.hits.map((hit) => hit?._source?.cveMetadata?.cveId ?? hit?._id);", @@ -2135,10 +2215,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is 1', () => pm.expect(payload.data.hits.total.value).to.eql(1));", " const returnedIds = payload.data.hits.hits.map((hit) => hit?._source?.cveMetadata?.cveId ?? hit?._id);", @@ -2185,10 +2267,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is 1', () => pm.expect(payload.data.hits.total.value).to.eql(1));", " const returnedIds = payload.data.hits.hits.map((hit) => hit?._source?.cveMetadata?.cveId ?? hit?._id);", @@ -2241,10 +2325,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is 1', () => pm.expect(payload.data.hits.total.value).to.eql(1));", " const returnedIds = payload.data.hits.hits.map((hit) => hit?._source?.cveMetadata?.cveId ?? hit?._id);", @@ -2291,10 +2377,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is 1', () => pm.expect(payload.data.hits.total.value).to.eql(1));", " const returnedIds = payload.data.hits.hits.map((hit) => hit?._source?.cveMetadata?.cveId ?? hit?._id);", @@ -2341,10 +2429,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is 1', () => pm.expect(payload.data.hits.total.value).to.eql(1));", " const returnedIds = payload.data.hits.hits.map((hit) => hit?._source?.cveMetadata?.cveId ?? hit?._id);", @@ -2391,10 +2481,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is 1', () => pm.expect(payload.data.hits.total.value).to.eql(1));", " const returnedIds = payload.data.hits.hits.map((hit) => hit?._source?.cveMetadata?.cveId ?? hit?._id);", @@ -2441,10 +2533,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is 1', () => pm.expect(payload.data.hits.total.value).to.eql(1));", " const returnedIds = payload.data.hits.hits.map((hit) => hit?._source?.cveMetadata?.cveId ?? hit?._id);", @@ -2491,10 +2585,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is 1', () => pm.expect(payload.data.hits.total.value).to.eql(1));", " const returnedIds = payload.data.hits.hits.map((hit) => hit?._source?.cveMetadata?.cveId ?? hit?._id);", @@ -2541,10 +2637,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is 1', () => pm.expect(payload.data.hits.total.value).to.eql(1));", " const returnedIds = payload.data.hits.hits.map((hit) => hit?._source?.cveMetadata?.cveId ?? hit?._id);", @@ -2597,10 +2695,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is 1', () => pm.expect(payload.data.hits.total.value).to.eql(1));", " const returnedIds = payload.data.hits.hits.map((hit) => hit?._source?.cveMetadata?.cveId ?? hit?._id);", @@ -2647,10 +2747,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is 1', () => pm.expect(payload.data.hits.total.value).to.eql(1));", " const returnedIds = payload.data.hits.hits.map((hit) => hit?._source?.cveMetadata?.cveId ?? hit?._id);", @@ -2697,10 +2799,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is 1', () => pm.expect(payload.data.hits.total.value).to.eql(1));", " const returnedIds = payload.data.hits.hits.map((hit) => hit?._source?.cveMetadata?.cveId ?? hit?._id);", @@ -2747,10 +2851,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is 1', () => pm.expect(payload.data.hits.total.value).to.eql(1));", " const returnedIds = payload.data.hits.hits.map((hit) => hit?._source?.cveMetadata?.cveId ?? hit?._id);", @@ -2797,10 +2903,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is 1', () => pm.expect(payload.data.hits.total.value).to.eql(1));", " const returnedIds = payload.data.hits.hits.map((hit) => hit?._source?.cveMetadata?.cveId ?? hit?._id);", @@ -2853,10 +2961,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is 1', () => pm.expect(payload.data.hits.total.value).to.eql(1));", " const returnedIds = payload.data.hits.hits.map((hit) => hit?._source?.cveMetadata?.cveId ?? hit?._id);", @@ -2903,10 +3013,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is 1', () => pm.expect(payload.data.hits.total.value).to.eql(1));", " const returnedIds = payload.data.hits.hits.map((hit) => hit?._source?.cveMetadata?.cveId ?? hit?._id);", @@ -2953,10 +3065,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is 1', () => pm.expect(payload.data.hits.total.value).to.eql(1));", " const returnedIds = payload.data.hits.hits.map((hit) => hit?._source?.cveMetadata?.cveId ?? hit?._id);", @@ -3003,10 +3117,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is 0', () => pm.expect(payload.data.hits.total.value).to.eql(0));", "pm.test('returned hit count is 0', () => pm.expect(payload.data.hits.hits.length).to.eql(0));", @@ -3052,10 +3168,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is 1', () => pm.expect(payload.data.hits.total.value).to.eql(1));", " const returnedIds = payload.data.hits.hits.map((hit) => hit?._source?.cveMetadata?.cveId ?? hit?._id);", @@ -3102,10 +3220,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is 1', () => pm.expect(payload.data.hits.total.value).to.eql(1));", " const returnedIds = payload.data.hits.hits.map((hit) => hit?._source?.cveMetadata?.cveId ?? hit?._id);", @@ -3158,10 +3278,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is 1', () => pm.expect(payload.data.hits.total.value).to.eql(1));", " const returnedIds = payload.data.hits.hits.map((hit) => hit?._source?.cveMetadata?.cveId ?? hit?._id);", @@ -3208,10 +3330,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is 1', () => pm.expect(payload.data.hits.total.value).to.eql(1));", " const returnedIds = payload.data.hits.hits.map((hit) => hit?._source?.cveMetadata?.cveId ?? hit?._id);", @@ -3258,10 +3382,12 @@ " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + " pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);", "});", "pm.test('total is 1', () => pm.expect(payload.data.hits.total.value).to.eql(1));", " const returnedIds = payload.data.hits.hits.map((hit) => hit?._source?.cveMetadata?.cveId ?? hit?._id);", diff --git a/test/postman/buildCollection.js b/test/postman/buildCollection.js index 94b2095..be6fe13 100644 --- a/test/postman/buildCollection.js +++ b/test/postman/buildCollection.js @@ -61,10 +61,12 @@ function successTests({ status = 200, exactTotal, minimumTotal, expectedIds = [] " pm.expect(payload.status).to.eql('ok');", " pm.expect(payload.page).to.be.a('number');", " pm.expect(payload.pageSize).to.be.a('number');", + " pm.expect(payload.resultsReturned).to.be.a('number');", " pm.expect(payload.totalPages).to.be.a('number');", " pm.expect(payload.data).to.be.an('object');", " pm.expect(payload.data.hits.total.value).to.be.a('number');", " pm.expect(payload.data.hits.hits).to.be.an('array');", + ' pm.expect(payload.resultsReturned).to.eql(payload.data.hits.hits.length);', '});' ];