Encode query filters in requests made to msgraph

Signed-off-by: Stephen Glass <stephen@stephen.glass>
This commit is contained in:
Stephen Glass
2025-07-16 19:47:01 -04:00
parent 4337750bdd
commit 577f0ed993
3 changed files with 31 additions and 3 deletions
+11
View File
@@ -0,0 +1,11 @@
---
'@backstage/plugin-catalog-backend-module-msgraph': minor
---
Encode query filters for requests made to msgraph. If you currently have manually encoded characters in a filter, this is a breaking change and must be updated to avoid requests being double encoded.
```diff
user:
- filter: department in('MARKETING', 'RESEARCH %26 DEVELOPMENT')
+ filter: department in('MARKETING', 'RESEARCH & DEVELOPMENT')
```
@@ -87,7 +87,25 @@ describe('MicrosoftGraphClient', () => {
expect(response.status).toBe(200);
expect(await response.json()).toEqual({
queryString:
'?$filter=test%20eq%20true&$select=id,children&$expand=children&$top=471',
'?%24filter=test%20eq%20true&%24select=id%2Cchildren&%24expand=children&%24top=471',
});
});
it('should correctly encode filter with special characters like "&"', async () => {
worker.use(
rest.get('https://example.com/users', (req, res, ctx) =>
res(ctx.status(200), ctx.json({ queryString: req.url.search })),
),
);
const response = await client.requestApi('users', {
filter: "department eq 'research & development'",
});
expect(response.status).toBe(200);
expect(await response.json()).toEqual({
queryString:
'?%24filter=department%20eq%20%27research%20%26%20development%27',
});
});
@@ -195,8 +195,7 @@ export class MicrosoftGraphClient {
},
{
addQueryPrefix: true,
// Microsoft Graph doesn't like an encoded query string
encode: false,
encode: true,
},
);