Be less restrictive with unknown keys on query endpoint
Signed-off-by: Pedro Nastasi <v-pnastasi@expediagroup.com>
This commit is contained in:
@@ -18,7 +18,9 @@ import { getVoidLogger } from '@backstage/backend-common';
|
||||
import { ConfigReader } from '@backstage/config';
|
||||
import { PermissionEvaluator } from '@backstage/plugin-permission-common';
|
||||
import { IndexBuilder } from '@backstage/plugin-search-backend-node';
|
||||
import { SearchEngine } from '@backstage/plugin-search-common';
|
||||
import {
|
||||
SearchEngine,
|
||||
} from '@backstage/plugin-search-common';
|
||||
import express from 'express';
|
||||
import request from 'supertest';
|
||||
|
||||
@@ -148,6 +150,25 @@ describe('createRouter', () => {
|
||||
});
|
||||
});
|
||||
|
||||
it('is less restrictive with unknown keys on query endpoint', async () => {
|
||||
const queryString =
|
||||
'term=test&%5BdocType%5D%5B0%5D=Service&filters%5BdocType%5D%5B0%5D=filter1&unknownKey1%5B2%5D=unknownValue1&unknownKey1%5B3%5D=unknownValue2&unknownKey2=unknownValue1&pageCursor';
|
||||
const response = await request(app).get(`/query?${queryString}`);
|
||||
const firstArg: Object = {
|
||||
docType: ['Service'],
|
||||
filters: { docType: ['filter1'] },
|
||||
pageCursor: '',
|
||||
term: 'test',
|
||||
unknownKey1: ['unknownValue1', 'unknownValue2'],
|
||||
unknownKey2: 'unknownValue1',
|
||||
};
|
||||
const secondArg = {
|
||||
token: undefined,
|
||||
};
|
||||
expect(response.status).toEqual(200);
|
||||
expect(mockSearchEngine.query).toHaveBeenCalledWith(firstArg, secondArg);
|
||||
});
|
||||
|
||||
describe('search result filtering', () => {
|
||||
beforeAll(async () => {
|
||||
const logger = getVoidLogger();
|
||||
|
||||
@@ -133,7 +133,7 @@ export async function createRouter(
|
||||
req: express.Request,
|
||||
res: express.Response<SearchResultSet | ErrorResponseBody>,
|
||||
) => {
|
||||
const parseResult = requestSchema.safeParse(req.query);
|
||||
const parseResult = requestSchema.passthrough().safeParse(req.query);
|
||||
|
||||
if (!parseResult.success) {
|
||||
throw new InputError(`Invalid query string: ${parseResult.error}`);
|
||||
|
||||
Reference in New Issue
Block a user