Skip to content

Commit aeb6880

Browse files
drew-grossflovilmart
authored andcommitted
Allow installation get (#1980)
1 parent bea655e commit aeb6880

File tree

3 files changed

+52
-16
lines changed

3 files changed

+52
-16
lines changed

spec/ParseInstallation.spec.js

+38-9
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,15 @@
22
// These tests check the Installations functionality of the REST API.
33
// Ported from installation_collection_test.go
44

5-
var auth = require('../src/Auth');
6-
var cache = require('../src/cache');
7-
var Config = require('../src/Config');
8-
var DatabaseAdapter = require('../src/DatabaseAdapter');
9-
var Parse = require('parse/node').Parse;
10-
var rest = require('../src/rest');
11-
12-
var config = new Config('test');
5+
let auth = require('../src/Auth');
6+
let cache = require('../src/cache');
7+
let Config = require('../src/Config');
8+
let DatabaseAdapter = require('../src/DatabaseAdapter');
9+
let Parse = require('parse/node').Parse;
10+
let rest = require('../src/rest');
11+
let request = require("request");
12+
13+
let config = new Config('test');
1314
let database = DatabaseAdapter.getDatabaseConnection('test', 'test_');
1415
let defaultColumns = require('../src/Controllers/SchemaController').defaultColumns;
1516

@@ -808,8 +809,36 @@ describe('Installations', () => {
808809
});
809810
});
810811

812+
it('allows you to get your own installation (regression test for #1718)', done => {
813+
let installId = '12345678-abcd-abcd-abcd-123456789abc';
814+
let device = 'android';
815+
let input = {
816+
'installationId': installId,
817+
'deviceType': device
818+
};
819+
rest.create(config, auth.nobody(config), '_Installation', input)
820+
.then(createResult => {
821+
let headers = {
822+
'X-Parse-Application-Id': 'test',
823+
'X-Parse-REST-API-Key': 'rest',
824+
};
825+
request.get({
826+
headers: headers,
827+
url: 'http://localhost:8378/1/installations/' + createResult.response.objectId,
828+
json: true,
829+
}, (error, response, body) => {
830+
expect(body.objectId).toEqual(createResult.response.objectId);
831+
done();
832+
});
833+
})
834+
.catch(error => {
835+
console.log(error);
836+
fail('failed');
837+
done();
838+
});
839+
});
840+
811841
// TODO: Look at additional tests from installation_collection_test.go:882
812842
// TODO: Do we need to support _tombstone disabling of installations?
813843
// TODO: Test deletion, badge increments
814-
815844
});

src/Routers/ClassesRouter.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ export class ClassesRouter extends PromiseRouter {
7777
options.include = String(body.include);
7878
}
7979

80-
return rest.find(req.config, req.auth, req.params.className, {objectId: req.params.objectId}, options)
80+
return rest.get(req.config, req.auth, req.params.className, req.params.objectId, options)
8181
.then((response) => {
8282
if (!response.results || response.results.length == 0) {
8383
throw new Parse.Error(Parse.Error.OBJECT_NOT_FOUND, 'Object not found.');

src/rest.js

+13-6
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,14 @@ var triggers = require('./triggers');
1717
// Returns a promise for an object with optional keys 'results' and 'count'.
1818
function find(config, auth, className, restWhere, restOptions) {
1919
enforceRoleSecurity('find', className, auth);
20-
var query = new RestQuery(config, auth, className,
21-
restWhere, restOptions);
20+
let query = new RestQuery(config, auth, className, restWhere, restOptions);
21+
return query.execute();
22+
}
23+
24+
// get is just like find but only queries an objectId.
25+
const get = (config, auth, className, objectId, restOptions) => {
26+
enforceRoleSecurity('get', className, auth);
27+
let query = new RestQuery(config, auth, className, { objectId }, restOptions);
2228
return query.execute();
2329
}
2430

@@ -128,8 +134,9 @@ function enforceRoleSecurity(method, className, auth) {
128134
}
129135

130136
module.exports = {
131-
create: create,
132-
del: del,
133-
find: find,
134-
update: update
137+
create,
138+
del,
139+
find,
140+
get,
141+
update
135142
};

0 commit comments

Comments
 (0)