Skip to content

Commit 8ea2b61

Browse files
committed
Do master query for before/afterSaveHook
1 parent 2300b21 commit 8ea2b61

File tree

2 files changed

+54
-2
lines changed

2 files changed

+54
-2
lines changed

spec/ParseAPI.spec.js

+51
Original file line numberDiff line numberDiff line change
@@ -643,6 +643,7 @@ describe('miscellaneous', function() {
643643
it('test afterSave get original object on update', function(done) {
644644
var triggerTime = 0;
645645
// Register a mock beforeSave hook
646+
646647
Parse.Cloud.afterSave('GameScore', function(req, res) {
647648
var object = req.object;
648649
expect(object instanceof Parse.Object).toBeTruthy();
@@ -693,6 +694,56 @@ describe('miscellaneous', function() {
693694
});
694695
});
695696

697+
it('test afterSave get full original object even req auth can not query it', (done) => {
698+
var triggerTime = 0;
699+
// Register a mock beforeSave hook
700+
Parse.Cloud.afterSave('GameScore', function(req, res) {
701+
var object = req.object;
702+
var originalObject = req.original;
703+
if (triggerTime == 0) {
704+
// Create
705+
} else if (triggerTime == 1) {
706+
// Update
707+
expect(object.get('foo')).toEqual('baz');
708+
// Make sure we get the full originalObject
709+
expect(originalObject instanceof Parse.Object).toBeTruthy();
710+
expect(originalObject.get('fooAgain')).toEqual('barAgain');
711+
expect(originalObject.id).not.toBeUndefined();
712+
expect(originalObject.createdAt).not.toBeUndefined();
713+
expect(originalObject.updatedAt).not.toBeUndefined();
714+
expect(originalObject.get('foo')).toEqual('bar');
715+
} else {
716+
res.error();
717+
}
718+
triggerTime++;
719+
res.success();
720+
});
721+
722+
var obj = new Parse.Object('GameScore');
723+
obj.set('foo', 'bar');
724+
obj.set('fooAgain', 'barAgain');
725+
var acl = new Parse.ACL();
726+
// Make sure our update request can not query the object
727+
acl.setPublicReadAccess(false);
728+
acl.setPublicWriteAccess(true);
729+
obj.setACL(acl);
730+
obj.save().then(function() {
731+
// We only update foo
732+
obj.set('foo', 'baz');
733+
return obj.save();
734+
}).then(function() {
735+
// Make sure the checking has been triggered
736+
expect(triggerTime).toBe(2);
737+
// Clear mock afterSave
738+
Parse.Cloud._removeHook("Triggers", "afterSave", "GameScore");
739+
done();
740+
}, function(error) {
741+
console.error(error);
742+
fail(error);
743+
done();
744+
});
745+
});
746+
696747
it('afterSave flattens custom operations', done => {
697748
var triggerTime = 0;
698749
// Register a mock beforeSave hook

src/rest.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
var Parse = require('parse/node').Parse;
1111
import cache from './cache';
12+
import Auth from './Auth';
1213

1314
var RestQuery = require('./RestQuery');
1415
var RestWrite = require('./RestWrite');
@@ -42,7 +43,7 @@ function del(config, auth, className, objectId) {
4243
if (triggers.getTrigger(className, triggers.Types.beforeDelete, config.applicationId) ||
4344
triggers.getTrigger(className, triggers.Types.afterDelete, config.applicationId) ||
4445
className == '_Session') {
45-
return find(config, auth, className, {objectId: objectId})
46+
return find(config, Auth.master(config), className, {objectId: objectId})
4647
.then((response) => {
4748
if (response && response.results && response.results.length) {
4849
response.results[0].className = className;
@@ -97,7 +98,7 @@ function update(config, auth, className, objectId, restObject) {
9798
return Promise.resolve().then(() => {
9899
if (triggers.getTrigger(className, triggers.Types.beforeSave, config.applicationId) ||
99100
triggers.getTrigger(className, triggers.Types.afterSave, config.applicationId)) {
100-
return find(config, auth, className, {objectId: objectId});
101+
return find(config, Auth.master(config), className, {objectId: objectId});
101102
}
102103
return Promise.resolve({});
103104
}).then((response) => {

0 commit comments

Comments
 (0)