Encode query filters in requests made to msgraph
Signed-off-by: Stephen Glass <stephen@stephen.glass>
This commit is contained in:
@@ -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,
|
||||
},
|
||||
);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user