Skip to content

Commit 5b0efb2

Browse files
authored
fix: Parse.Cloud.startJob and Parse.Push.send not returning status ID when setting Parse Server option directAccess: true (#8766)
1 parent 6364948 commit 5b0efb2

File tree

2 files changed

+59
-3
lines changed

2 files changed

+59
-3
lines changed

spec/ParseServerRESTController.spec.js

+54
Original file line numberDiff line numberDiff line change
@@ -631,4 +631,58 @@ describe('ParseServerRESTController', () => {
631631
expect(sessions[0].get('installationId')).toBe(installationId);
632632
expect(sessions[0].get('sessionToken')).toBe(loggedUser.sessionToken);
633633
});
634+
635+
it('returns a statusId when running jobs', async () => {
636+
Parse.Cloud.job('CloudJob', () => {
637+
return 'Cloud job completed';
638+
});
639+
const res = await RESTController.request(
640+
'POST',
641+
'/jobs/CloudJob',
642+
{},
643+
{ useMasterKey: true, returnStatus: true }
644+
);
645+
const jobStatusId = res._headers['X-Parse-Job-Status-Id'];
646+
expect(jobStatusId).toBeDefined();
647+
const result = await Parse.Cloud.getJobStatus(jobStatusId);
648+
expect(result.id).toBe(jobStatusId);
649+
});
650+
651+
it('returns a statusId when running push notifications', async () => {
652+
const payload = {
653+
data: { alert: 'We return status!' },
654+
where: { deviceType: 'ios' },
655+
};
656+
const res = await RESTController.request('POST', '/push', payload, {
657+
useMasterKey: true,
658+
returnStatus: true,
659+
});
660+
const pushStatusId = res._headers['X-Parse-Push-Status-Id'];
661+
expect(pushStatusId).toBeDefined();
662+
663+
const result = await Parse.Push.getPushStatus(pushStatusId);
664+
expect(result.id).toBe(pushStatusId);
665+
});
666+
667+
it('returns a statusId when running batch push notifications', async () => {
668+
const payload = {
669+
data: { alert: 'We return status!' },
670+
where: { deviceType: 'ios' },
671+
};
672+
const res = await RESTController.request('POST', 'batch', {
673+
requests: [{
674+
method: 'POST',
675+
path: '/push',
676+
body: payload,
677+
}],
678+
}, {
679+
useMasterKey: true,
680+
returnStatus: true,
681+
});
682+
const pushStatusId = res[0]._headers['X-Parse-Push-Status-Id'];
683+
expect(pushStatusId).toBeDefined();
684+
685+
const result = await Parse.Push.getPushStatus(pushStatusId);
686+
expect(result.id).toBe(pushStatusId);
687+
});
634688
});

src/ParseServerRESTController.js

+5-3
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,10 @@ function ParseServerRESTController(applicationId, router) {
5858
response => {
5959
if (options.returnStatus) {
6060
const status = response._status;
61+
const headers = response._headers;
6162
delete response._status;
62-
return { success: response, _status: status };
63+
delete response._headers;
64+
return { success: response, _status: status, _headers: headers };
6365
}
6466
return { success: response };
6567
},
@@ -128,9 +130,9 @@ function ParseServerRESTController(applicationId, router) {
128130
})
129131
.then(
130132
resp => {
131-
const { response, status } = resp;
133+
const { response, status, headers = {} } = resp;
132134
if (options.returnStatus) {
133-
resolve({ ...response, _status: status });
135+
resolve({ ...response, _status: status, _headers: headers });
134136
} else {
135137
resolve(response);
136138
}

0 commit comments

Comments
 (0)