Skip to content

Commit c9a398f

Browse files
committed
Merge branch 'master' of github.com:ParsePlatform/parse-server into new-quickstart
2 parents c9e5a6a + 7d78732 commit c9a398f

32 files changed

+1350
-254
lines changed

bin/parse-server

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,3 @@
1+
#!/usr/bin/env node
2+
13
require("../lib/cli/parse-server");

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@
6060
"build": "./node_modules/.bin/babel src/ -d lib/",
6161
"pretest": "cross-env MONGODB_VERSION=${MONGODB_VERSION:=3.0.8} ./node_modules/.bin/mongodb-runner start",
6262
"test": "cross-env NODE_ENV=test TESTING=1 ./node_modules/.bin/babel-node $COVERAGE_OPTION ./node_modules/jasmine/bin/jasmine.js",
63+
"test:win": "npm run pretest && cross-env NODE_ENV=test TESTING=1 ./node_modules/.bin/babel-node ./node_modules/babel-istanbul/lib/cli.js cover -x **/spec/** ./node_modules/jasmine/bin/jasmine.js && npm run posttest",
6364
"posttest": "./node_modules/.bin/mongodb-runner stop",
6465
"coverage": "cross-env COVERAGE_OPTION='./node_modules/babel-istanbul/lib/cli.js cover -x **/spec/**' npm test",
6566
"start": "node ./bin/parse-server",

spec/DatabaseAdapter.spec.js

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
'use strict';
2+
3+
let DatabaseAdapter = require('../src/DatabaseAdapter');
4+
5+
describe('DatabaseAdapter', () => {
6+
it('options and URI are available to adapter', done => {
7+
DatabaseAdapter.setAppDatabaseURI('optionsTest', 'mongodb://localhost:27017/optionsTest');
8+
DatabaseAdapter.setAppDatabaseOptions('optionsTest', {foo: "bar"});
9+
let optionsTestDatabaseConnection = DatabaseAdapter.getDatabaseConnection('optionsTest');
10+
11+
expect(optionsTestDatabaseConnection instanceof Object).toBe(true);
12+
expect(optionsTestDatabaseConnection.adapter._options instanceof Object).toBe(true);
13+
expect(optionsTestDatabaseConnection.adapter._options.foo).toBe("bar");
14+
15+
DatabaseAdapter.setAppDatabaseURI('noOptionsTest', 'mongodb://localhost:27017/noOptionsTest');
16+
let noOptionsTestDatabaseConnection = DatabaseAdapter.getDatabaseConnection('noOptionsTest');
17+
18+
expect(noOptionsTestDatabaseConnection instanceof Object).toBe(true);
19+
expect(noOptionsTestDatabaseConnection.adapter._options instanceof Object).toBe(false);
20+
21+
done();
22+
});
23+
});

spec/FileLoggerAdapter.spec.js

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,13 @@ describe('info logs', () => {
3535
size: 1,
3636
level: 'info'
3737
}, (results) => {
38-
expect(results[0].message).toEqual('testing info logs');
39-
done();
38+
if(results.length == 0) {
39+
fail('The adapter should return non-empty results');
40+
done();
41+
} else {
42+
expect(results[0].message).toEqual('testing info logs');
43+
done();
44+
}
4045
});
4146
});
4247
});
@@ -56,8 +61,14 @@ describe('error logs', () => {
5661
size: 1,
5762
level: 'error'
5863
}, (results) => {
59-
expect(results[0].message).toEqual('testing error logs');
60-
done();
64+
if(results.length == 0) {
65+
fail('The adapter should return non-empty results');
66+
done();
67+
}
68+
else {
69+
expect(results[0].message).toEqual('testing error logs');
70+
done();
71+
}
6172
});
6273
});
6374
});

spec/OAuth.spec.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
var OAuth = require("../src/oauth/OAuth1Client");
1+
var OAuth = require("../src/authDataManager/OAuth1Client");
22
var request = require('request');
33

44
describe('OAuth', function() {
@@ -138,7 +138,7 @@ describe('OAuth', function() {
138138

139139
["facebook", "github", "instagram", "google", "linkedin", "meetup", "twitter"].map(function(providerName){
140140
it("Should validate structure of "+providerName, (done) => {
141-
var provider = require("../src/oauth/"+providerName);
141+
var provider = require("../src/authDataManager/"+providerName);
142142
jequal(typeof provider.validateAuthData, "function");
143143
jequal(typeof provider.validateAppId, "function");
144144
jequal(provider.validateAuthData({}, {}).constructor, Promise.prototype.constructor);

spec/ParseAPI.spec.js

Lines changed: 51 additions & 0 deletions
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

0 commit comments

Comments
 (0)