Skip to content

Commit 492de3e

Browse files
authored
fix: Parse.Query throws error when no response header (#2754)
1 parent 22b0bab commit 492de3e

File tree

3 files changed

+21
-2
lines changed

3 files changed

+21
-2
lines changed

src/RESTController.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ const RESTController = {
158158
const responseHeaders = {};
159159
const availableHeaders = response.headers.get('access-control-expose-headers') || '';
160160
availableHeaders.split(', ').forEach((header: string) => {
161-
if (response.headers.has(header)) {
161+
if (header && response.headers.has(header)) {
162162
responseHeaders[header] = response.headers.get(header);
163163
}
164164
});

src/__tests__/RESTController-test.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,20 @@ describe('RESTController', () => {
5555
expect(status).toBe(200);
5656
});
5757

58+
it('resolves without error when access-control-expose-headers header is missing', async () => {
59+
mockFetch([{ status: 200, response: { success: true } }], {});
60+
const { response, status } = await RESTController.ajax('POST', 'users', {});
61+
expect(response).toEqual({ success: true });
62+
expect(status).toBe(200);
63+
});
64+
65+
it('resolves without error when access-control-expose-headers header is empty', async () => {
66+
mockFetch([{ status: 200, response: { success: true } }], { 'access-control-expose-headers': '' });
67+
const { response, status } = await RESTController.ajax('POST', 'users', {});
68+
expect(response).toEqual({ success: true });
69+
expect(status).toBe(200);
70+
});
71+
5872
it('retries on 5XX errors', async () => {
5973
mockFetch([{ status: 500 }, { status: 500 }, { status: 200, response: { success: true } }])
6074
const { response, status } = await RESTController.ajax('POST', 'users', {});

src/__tests__/test_helpers/mockFetch.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,12 @@ function mockFetch(results, headers = {}, error) {
2525
},
2626
headers: {
2727
get: header => headers[header],
28-
has: header => headers[header] !== undefined,
28+
has: header => {
29+
if (header === '') {
30+
throw new TypeError('Headers.has: "" is an invalid header name.');
31+
}
32+
return headers[header] !== undefined;
33+
},
2934
},
3035
body: {
3136
getReader: () => ({

0 commit comments

Comments
 (0)