Merge pull request #19321 from backstage/rugvip/encode

todo-backend: fix filter validation
This commit is contained in:
Patrik Oldsberg
2023-08-11 15:25:46 +02:00
committed by GitHub
4 changed files with 24 additions and 0 deletions
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-todo-backend': patch
---
Fixed a bug where filter queries from the frontend would always fail validation.
@@ -173,6 +173,7 @@ export const spec = {
name: 'filter',
in: 'query',
required: false,
allowReserved: true,
schema: {
type: 'array',
description:
@@ -111,6 +111,7 @@ paths:
- name: filter
in: query
required: false
allowReserved: true
schema:
type: array
description: A list of filters used to narrow down the listed TODO items
@@ -131,6 +131,23 @@ describe('createRouter', () => {
);
});
it('forwards filter query', async () => {
mockService.listTodos.mockResolvedValueOnce(mockListBody);
const response = await request(app).get('/v1/todos?filter=text=*borked*');
expect(response.status).toEqual(200);
expect(response.body).toEqual(mockListBody);
expect(mockService.listTodos).toHaveBeenCalledWith(
{
entity: undefined,
offset: undefined,
limit: undefined,
filters: [{ field: 'text', value: '*borked*' }],
},
{ token: undefined },
);
});
it('rejects invalid queries', async () => {
request(app)
.get('/v1/todos?entity=k:n&entity=k:n')