From 8c90ff9fa83d72de0d978db4efbd9926d4577383 Mon Sep 17 00:00:00 2001 From: Jayson Ng Date: Thu, 14 Mar 2024 09:59:26 +0800 Subject: [PATCH 1/4] Fix for #9010 --- spec/ParseAPI.spec.js | 29 +++++++++++++++++++++++++++++ src/Routers/FunctionsRouter.js | 2 +- 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/spec/ParseAPI.spec.js b/spec/ParseAPI.spec.js index 9b1a97af87..9f1f9a5086 100644 --- a/spec/ParseAPI.spec.js +++ b/spec/ParseAPI.spec.js @@ -1267,6 +1267,35 @@ describe('miscellaneous', function () { }); }); + it('test cloud function query parameters with array of pointers', done => { + Parse.Cloud.define('echoParams', req => { + return req.params; + }); + const headers = { + 'Content-Type': 'application/json', + 'X-Parse-Application-Id': 'test', + 'X-Parse-Javascript-Key': 'test', + }; + request({ + method: 'POST', + headers: headers, + url: 'http://localhost:8378/1/functions/echoParams', //?option=1&other=2 + qs: { + option: 1, + other: 2, + }, + body: '{"foo":"bar", "other": 1, "arr": [{ "__type": "Pointer" }]}', + }).then(response => { + const res = response.data.result; + expect(res.option).toEqual('1'); + // Make sure query string params override body params + expect(res.other).toEqual('2'); + expect(res.foo).toEqual('bar'); + expect(res.arr.length).toEqual(1); + done(); + }); + }); + it('can handle null params in cloud functions (regression test for #1742)', done => { Parse.Cloud.define('func', request => { expect(request.params.nullParam).toEqual(null); diff --git a/src/Routers/FunctionsRouter.js b/src/Routers/FunctionsRouter.js index bb4b959ebe..eab76eeb1b 100644 --- a/src/Routers/FunctionsRouter.js +++ b/src/Routers/FunctionsRouter.js @@ -12,7 +12,7 @@ import { logger } from '../logger'; function parseObject(obj, config) { if (Array.isArray(obj)) { return obj.map(item => { - return parseObject(item); + return parseObject(item, config); }); } else if (obj && obj.__type == 'Date') { return Object.assign(new Date(obj.iso), obj); From 17ec6688540b1237f282ea6924299ff8b124750c Mon Sep 17 00:00:00 2001 From: Manuel <5673677+mtrezza@users.noreply.github.com> Date: Thu, 14 Mar 2024 20:38:57 +0100 Subject: [PATCH 2/4] remove whitespace Signed-off-by: Manuel <5673677+mtrezza@users.noreply.github.com> --- spec/ParseAPI.spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/ParseAPI.spec.js b/spec/ParseAPI.spec.js index 9f1f9a5086..1515d59d19 100644 --- a/spec/ParseAPI.spec.js +++ b/spec/ParseAPI.spec.js @@ -1295,7 +1295,7 @@ describe('miscellaneous', function () { done(); }); }); - + it('can handle null params in cloud functions (regression test for #1742)', done => { Parse.Cloud.define('func', request => { expect(request.params.nullParam).toEqual(null); From 0cdf3f30c40cc80dba383fa14bd30a5fdcba4f29 Mon Sep 17 00:00:00 2001 From: Manuel <5673677+mtrezza@users.noreply.github.com> Date: Sat, 16 Mar 2024 16:37:51 +0100 Subject: [PATCH 3/4] fix test Signed-off-by: Manuel <5673677+mtrezza@users.noreply.github.com> --- spec/ParseAPI.spec.js | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/spec/ParseAPI.spec.js b/spec/ParseAPI.spec.js index 1515d59d19..c5a786c8c2 100644 --- a/spec/ParseAPI.spec.js +++ b/spec/ParseAPI.spec.js @@ -1267,7 +1267,7 @@ describe('miscellaneous', function () { }); }); - it('test cloud function query parameters with array of pointers', done => { + it('test cloud function query parameters with array of pointers', async () => { Parse.Cloud.define('echoParams', req => { return req.params; }); @@ -1276,24 +1276,14 @@ describe('miscellaneous', function () { 'X-Parse-Application-Id': 'test', 'X-Parse-Javascript-Key': 'test', }; - request({ + const response = await request({ method: 'POST', headers: headers, - url: 'http://localhost:8378/1/functions/echoParams', //?option=1&other=2 - qs: { - option: 1, - other: 2, - }, - body: '{"foo":"bar", "other": 1, "arr": [{ "__type": "Pointer" }]}', - }).then(response => { - const res = response.data.result; - expect(res.option).toEqual('1'); - // Make sure query string params override body params - expect(res.other).toEqual('2'); - expect(res.foo).toEqual('bar'); - expect(res.arr.length).toEqual(1); - done(); + url: 'http://localhost:8378/1/functions/echoParams', + body: '{"arr": [{ "__type": "Pointer", "className": "PointerTest" }]}', }); + const res = response.data.result; + expect(res.arr.length).toEqual(1); }); it('can handle null params in cloud functions (regression test for #1742)', done => { From 5465bc8e860e2e703c4e32f506f43a8de14a96d2 Mon Sep 17 00:00:00 2001 From: Manuel <5673677+mtrezza@users.noreply.github.com> Date: Sat, 16 Mar 2024 16:44:41 +0100 Subject: [PATCH 4/4] remove whitespace Signed-off-by: Manuel <5673677+mtrezza@users.noreply.github.com> --- spec/ParseAPI.spec.js | 1 - 1 file changed, 1 deletion(-) diff --git a/spec/ParseAPI.spec.js b/spec/ParseAPI.spec.js index c5a786c8c2..cc4ee5197a 100644 --- a/spec/ParseAPI.spec.js +++ b/spec/ParseAPI.spec.js @@ -1285,7 +1285,6 @@ describe('miscellaneous', function () { const res = response.data.result; expect(res.arr.length).toEqual(1); }); - it('can handle null params in cloud functions (regression test for #1742)', done => { Parse.Cloud.define('func', request => { expect(request.params.nullParam).toEqual(null);