Skip to content

Commit d1476ec

Browse files
committed
Merge pull request #468 from codegefluester/ccv_pass_in_request
[Cloud Code][Validation] Pass in request object
2 parents d087ae9 + ce1de0a commit d1476ec

File tree

2 files changed

+24
-14
lines changed

2 files changed

+24
-14
lines changed

spec/ParseAPI.spec.js

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -587,7 +587,7 @@ describe('miscellaneous', function() {
587587
done();
588588
});
589589
});
590-
590+
591591
it('test cloud function query parameters', (done) => {
592592
Parse.Cloud.define('echoParams', (req, res) => {
593593
res.success(req.params);
@@ -621,8 +621,8 @@ describe('miscellaneous', function() {
621621
// Register a function with validation
622622
Parse.Cloud.define('functionWithParameterValidation', (req, res) => {
623623
res.success('works');
624-
}, (params) => {
625-
return params.success === 100;
624+
}, (request) => {
625+
return request.params.success === 100;
626626
});
627627

628628
Parse.Cloud.run('functionWithParameterValidation', {"success":100}).then((s) => {
@@ -638,8 +638,8 @@ describe('miscellaneous', function() {
638638
// Register a function with validation
639639
Parse.Cloud.define('functionWithParameterValidationFailure', (req, res) => {
640640
res.success('noway');
641-
}, (params) => {
642-
return params.success === 100;
641+
}, (request) => {
642+
return request.params.success === 100;
643643
});
644644

645645
Parse.Cloud.run('functionWithParameterValidationFailure', {"success":500}).then((s) => {
@@ -721,4 +721,15 @@ describe('miscellaneous', function() {
721721
});
722722
});
723723

724+
it('fails on invalid function', done => {
725+
Parse.Cloud.run('somethingThatDoesDefinitelyNotExist').then((s) => {
726+
fail('This should have never suceeded');
727+
done();
728+
}, (e) => {
729+
expect(e.code).toEqual(Parse.Error.SCRIPT_FAILED);
730+
expect(e.message).toEqual('Invalid function.');
731+
done();
732+
});
733+
});
734+
724735
});

src/functions.js

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,23 +10,22 @@ var router = new PromiseRouter();
1010
function handleCloudFunction(req) {
1111
if (Parse.Cloud.Functions[req.params.functionName]) {
1212

13-
const params = Object.assign({}, req.body, req.query);
14-
13+
var request = {
14+
params: Object.assign({}, req.body, req.query),
15+
master: req.auth && req.auth.isMaster,
16+
user: req.auth && req.auth.user,
17+
installationId: req.info.installationId
18+
};
19+
1520
if (Parse.Cloud.Validators[req.params.functionName]) {
16-
var result = Parse.Cloud.Validators[req.params.functionName](params);
21+
var result = Parse.Cloud.Validators[req.params.functionName](request);
1722
if (!result) {
1823
throw new Parse.Error(Parse.Error.SCRIPT_FAILED, 'Validation failed.');
1924
}
2025
}
2126

2227
return new Promise(function (resolve, reject) {
2328
var response = createResponseObject(resolve, reject);
24-
var request = {
25-
params: params,
26-
master: req.auth && req.auth.isMaster,
27-
user: req.auth && req.auth.user,
28-
installationId: req.info.installationId
29-
};
3029
Parse.Cloud.Functions[req.params.functionName](request, response);
3130
});
3231
} else {

0 commit comments

Comments
 (0)