Skip to content

Commit 957b592

Browse files
drew-grossflovilmart
authored andcommitted
Ignore _RevoableSession "header" that is sent by JS SDK. Fixes #1548. (#1627)
1 parent 234d009 commit 957b592

File tree

4 files changed

+44
-16
lines changed

4 files changed

+44
-16
lines changed

spec/ParseAPI.spec.js

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1299,7 +1299,7 @@ describe('miscellaneous', function() {
12991299
});
13001300
})
13011301
});
1302-
1302+
13031303
it('properly returns incremented values (#1554)', (done) => {
13041304
let headers = {
13051305
'Content-Type': 'application/json',
@@ -1312,12 +1312,12 @@ describe('miscellaneous', function() {
13121312
json: true
13131313
};
13141314
let object = new Parse.Object('AnObject');;
1315-
1315+
13161316
function runIncrement(amount) {
13171317
let options = Object.assign({}, requestOptions, {
13181318
body: {
13191319
"key": {
1320-
__op: 'Increment',
1320+
__op: 'Increment',
13211321
amount: amount
13221322
}
13231323
},
@@ -1333,7 +1333,7 @@ describe('miscellaneous', function() {
13331333
});
13341334
})
13351335
}
1336-
1336+
13371337
object.save().then(() => {
13381338
return runIncrement(1);
13391339
}).then((res) => {
@@ -1345,4 +1345,30 @@ describe('miscellaneous', function() {
13451345
})
13461346
})
13471347

1348+
it('ignores _RevocableSession "header" send by JS SDK', (done) => {
1349+
let object = new Parse.Object('AnObject');
1350+
object.set('a', 'b');
1351+
object.save().then(() => {
1352+
request.post({
1353+
headers: {'Content-Type': 'application/json'},
1354+
url: 'http://localhost:8378/1/classes/AnObject',
1355+
body: {
1356+
_method: 'GET',
1357+
_ApplicationId: 'test',
1358+
_JavaScriptKey: 'test',
1359+
_ClientVersion: 'js1.8.3',
1360+
_InstallationId: 'iid',
1361+
_RevocableSession: "1",
1362+
},
1363+
json: true
1364+
}, (err, res, body) => {
1365+
expect(body.error).toBeUndefined();
1366+
expect(body.results).not.toBeUndefined();
1367+
expect(body.results.length).toBe(1);
1368+
let result = body.results[0];
1369+
expect(result.a).toBe('b');
1370+
done();
1371+
})
1372+
});
1373+
});
13481374
});

spec/RestQuery.spec.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,6 @@ describe('rest query', () => {
167167
expect(error).toBe(null);
168168
var b = JSON.parse(body);
169169
expect(b.code).toEqual(Parse.Error.INVALID_QUERY);
170-
expect(b.error).toEqual('Improper encode of parameter');
171170
done();
172171
});
173172
}).then(() => {
@@ -185,7 +184,6 @@ describe('rest query', () => {
185184
expect(error).toBe(null);
186185
var b = JSON.parse(body);
187186
expect(b.code).toEqual(Parse.Error.INVALID_QUERY);
188-
expect(b.error).toEqual('Improper encode of parameter');
189187
done();
190188
});
191189
});

src/Routers/ClassesRouter.js

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11

22
import PromiseRouter from '../PromiseRouter';
3-
import rest from '../rest';
3+
import rest from '../rest';
44

5-
import url from 'url';
5+
import url from 'url';
66

77
const ALLOWED_GET_QUERY_KEYS = ['keys', 'include'];
88

99
export class ClassesRouter extends PromiseRouter {
10-
10+
1111
handleFind(req) {
1212
let body = Object.assign(req.body, ClassesRouter.JSONFromQuery(req.query));
1313
let options = {};
@@ -16,7 +16,7 @@ export class ClassesRouter extends PromiseRouter {
1616

1717
for (let key of Object.keys(body)) {
1818
if (allowConstraints.indexOf(key) === -1) {
19-
throw new Parse.Error(Parse.Error.INVALID_QUERY, 'Improper encode of parameter');
19+
throw new Parse.Error(Parse.Error.INVALID_QUERY, `Invalid paramater for query: ${key}`);
2020
}
2121
}
2222

@@ -82,18 +82,18 @@ export class ClassesRouter extends PromiseRouter {
8282
if (!response.results || response.results.length == 0) {
8383
throw new Parse.Error(Parse.Error.OBJECT_NOT_FOUND, 'Object not found.');
8484
}
85-
85+
8686
if (req.params.className === "_User") {
87-
87+
8888
delete response.results[0].sessionToken;
89-
89+
9090
const user = response.results[0];
91-
91+
9292
if (req.auth.user && user.objectId == req.auth.user.id) {
9393
// Force the session token
9494
response.results[0].sessionToken = req.info.sessionToken;
9595
}
96-
}
96+
}
9797
return { response: response.results[0] };
9898
});
9999
}
@@ -124,7 +124,7 @@ export class ClassesRouter extends PromiseRouter {
124124
}
125125
return json
126126
}
127-
127+
128128
mountRoutes() {
129129
this.route('GET', '/classes/:className', (req) => { return this.handleFind(req); });
130130
this.route('GET', '/classes/:className/:objectId', (req) => { return this.handleGet(req); });

src/middlewares.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,10 @@ function handleParseHeaders(req, res, next) {
4545
fileViaJSON = true;
4646
}
4747

48+
if (req.body) {
49+
delete req.body._RevocableSession;
50+
}
51+
4852
if (req.body &&
4953
req.body._ApplicationId &&
5054
cache.apps.get(req.body._ApplicationId) &&

0 commit comments

Comments
 (0)