Skip to content

Commit 3c79cae

Browse files
miguel-sflovilmart
authored andcommitted
feat: add request headers to trigger functions (#4012)
* add request headers to trigger functions * reverse changes * add headers in request config and trigger request
1 parent e6cc820 commit 3c79cae

File tree

3 files changed

+101
-2
lines changed

3 files changed

+101
-2
lines changed

spec/CloudCode.spec.js

+96
Original file line numberDiff line numberDiff line change
@@ -1200,6 +1200,61 @@ describe('Cloud Code', () => {
12001200
});
12011201
});
12021202

1203+
describe('beforeSave hooks', () => {
1204+
it('should have request headers', (done) => {
1205+
Parse.Cloud.beforeSave('MyObject', (req, res) => {
1206+
expect(req.headers).toBeDefined();
1207+
res.success();
1208+
});
1209+
1210+
const MyObject = Parse.Object.extend('MyObject');
1211+
const myObject = new MyObject();
1212+
myObject.save().then(() => done());
1213+
});
1214+
});
1215+
1216+
describe('afterSave hooks', () => {
1217+
it('should have request headers', (done) => {
1218+
Parse.Cloud.afterSave('MyObject', (req) => {
1219+
expect(req.headers).toBeDefined();
1220+
});
1221+
1222+
const MyObject = Parse.Object.extend('MyObject');
1223+
const myObject = new MyObject();
1224+
myObject.save()
1225+
.then(() => done());
1226+
});
1227+
});
1228+
1229+
describe('beforeDelete hooks', () => {
1230+
it('should have request headers', (done) => {
1231+
Parse.Cloud.beforeDelete('MyObject', (req, res) => {
1232+
expect(req.headers).toBeDefined();
1233+
res.success();
1234+
});
1235+
1236+
const MyObject = Parse.Object.extend('MyObject');
1237+
const myObject = new MyObject();
1238+
myObject.save()
1239+
.then(myObj => myObj.destroy())
1240+
.then(() => done());
1241+
});
1242+
});
1243+
1244+
describe('afterDelete hooks', () => {
1245+
it('should have request headers', (done) => {
1246+
Parse.Cloud.afterDelete('MyObject', (req) => {
1247+
expect(req.headers).toBeDefined();
1248+
});
1249+
1250+
const MyObject = Parse.Object.extend('MyObject');
1251+
const myObject = new MyObject();
1252+
myObject.save()
1253+
.then(myObj => myObj.destroy())
1254+
.then(() => done());
1255+
});
1256+
});
1257+
12031258
describe('beforeFind hooks', () => {
12041259
it('should add beforeFind trigger', (done) => {
12051260
Parse.Cloud.beforeFind('MyObject', (req) => {
@@ -1334,6 +1389,26 @@ describe('beforeFind hooks', () => {
13341389
});
13351390
});
13361391
});
1392+
1393+
it('should have request headers', (done) => {
1394+
Parse.Cloud.beforeFind('MyObject', (req) => {
1395+
expect(req.headers).toBeDefined();
1396+
});
1397+
1398+
const MyObject = Parse.Object.extend('MyObject');
1399+
const myObject = new MyObject();
1400+
myObject.save()
1401+
.then((myObj) => {
1402+
const query = new Parse.Query('MyObject');
1403+
query.equalTo('objectId', myObj.id);
1404+
return Promise.all([
1405+
query.get(myObj.id),
1406+
query.first(),
1407+
query.find(),
1408+
]);
1409+
})
1410+
.then(() => done());
1411+
});
13371412
});
13381413

13391414
describe('afterFind hooks', () => {
@@ -1531,4 +1606,25 @@ describe('afterFind hooks', () => {
15311606
done();
15321607
});
15331608
});
1609+
1610+
it('should have request headers', (done) => {
1611+
Parse.Cloud.afterFind('MyObject', (req, res) => {
1612+
expect(req.headers).toBeDefined();
1613+
res.success();
1614+
});
1615+
1616+
const MyObject = Parse.Object.extend('MyObject');
1617+
const myObject = new MyObject();
1618+
myObject.save()
1619+
.then((myObj) => {
1620+
const query = new Parse.Query('MyObject');
1621+
query.equalTo('objectId', myObj.id);
1622+
return Promise.all([
1623+
query.get(myObj.id),
1624+
query.first(),
1625+
query.find(),
1626+
]);
1627+
})
1628+
.then(() => done());
1629+
});
15341630
});

src/middlewares.js

+1
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ export function handleParseHeaders(req, res, next) {
108108

109109
info.app = AppCache.get(info.appId);
110110
req.config = new Config(info.appId, mount);
111+
req.config.headers = req.headers || {};
111112
req.info = info;
112113

113114
var isMaster = (info.masterKey === req.config.masterKey);

src/triggers.js

+4-2
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,8 @@ export function getRequestObject(triggerType, auth, parseObject, originalParseOb
133133
triggerName: triggerType,
134134
object: parseObject,
135135
master: false,
136-
log: config.loggerController
136+
log: config.loggerController,
137+
headers: config.headers,
137138
};
138139

139140
if (originalParseObject) {
@@ -164,7 +165,8 @@ export function getRequestQueryObject(triggerType, auth, query, count, config, i
164165
master: false,
165166
count,
166167
log: config.loggerController,
167-
isGet
168+
isGet,
169+
headers: config.headers,
168170
};
169171

170172
if (!auth) {

0 commit comments

Comments
 (0)