Removes need to use babel-register (#4865)

* Removes need to use babel-register

- Adds watch to watch changes when running the test to regenerate
- Tests are now pure node 8

* Adds timing to helper.js

* Update contribution guide

* Adds inline sourcemaps generation to restore coverage

* nits
This commit is contained in:
Florent Vilmart
2018-07-02 23:30:14 -04:00
parent f23eb4c419
commit 305e4ba445
86 changed files with 260 additions and 225 deletions

View File

@@ -9,5 +9,6 @@
"node": "8" "node": "8"
} }
}] }]
] ],
"sourceMaps": "inline"
} }

2
.nycrc
View File

@@ -5,7 +5,7 @@
], ],
"exclude": [ "exclude": [
"**/spec/**", "**/spec/**",
"lib/" "src/"
] ]
} }

View File

@@ -1,10 +1,49 @@
### Contributing to Parse Server # Contributing to Parse Server
#### Pull Requests Welcome!
We really want Parse to be yours, to see it grow and thrive in the open source community. We really want Parse to be yours, to see it grow and thrive in the open source community.
##### Please Do's If you are not familiar with Pull Requests and want to know more about them, you can visit the [Creating a pull request](https://help.github.com/articles/creating-a-pull-request/) article. It contains detailed informations about the process.
## Setting up the project for debugging and contributing:
### Recommended setup:
* [vscode](https://code.visualstudio.com), the popular IDE.
* [Jasmine Test Explorer](https://marketplace.visualstudio.com/items?itemName=hbenl.vscode-test-explorer), a very practical test exploration plugin which let you run, debug and see the test results inline.
### Setting up you local machine:
* [Fork](https://github.com/parse-community/parse-server) this project and clone the fork on your local machine:
```sh
$ git clone https://github.com/parse-community/parse-server
$ cd parse-server # go into the clone directory
$ npm install # install all the node dependencies
$ code . # launch vscode
$ npm run watch # run babel watching for local file changes
```
Once you have babel running in watch mode, you can start making changes to parse-server.
### Good to know:
* The lib/ folder is not commited, so never make changes in there.
* Always make changes to files in the `src/` folder.
* All the tests should point to sources in the `lib/` folder.
### Troubleshooting:
*Question*: I modify the code in the src folder but it doesn't seem to have any effect.<br/>
*Answer*: Check that `npm run watch` is running
*Question*: How do I use breakpoints and debug step by step?<br/>
*Answer*: The easiest way is to install [Jasmine Test Explorer](https://marketplace.visualstudio.com/items?itemName=hbenl.vscode-test-explorer), it will let you run selectively tests and debug them.
*Question*: How do I deploy my forked version on my servers?<br/>
*Answer*: In your `package.json`, update the `parse-server` dependency to `https://github.com/MY_USERNAME/parse-server#MY_FEATURE`. Run `npm install`, commit the changes and deploy to your servers.
### Please Do's
* Begin by reading the [Development Guide](http://docs.parseplatform.org/parse-server/guide/#development-guide) to learn how to get started running the parse-server. * Begin by reading the [Development Guide](http://docs.parseplatform.org/parse-server/guide/#development-guide) to learn how to get started running the parse-server.
* Take testing seriously! Aim to increase the test coverage with every pull request. To obtain the test coverage of the project, run: * Take testing seriously! Aim to increase the test coverage with every pull request. To obtain the test coverage of the project, run:
@@ -17,7 +56,7 @@ We really want Parse to be yours, to see it grow and thrive in the open source c
* Lint your code by running `npm run lint` to make sure the code is not going to be rejected by the CI. * Lint your code by running `npm run lint` to make sure the code is not going to be rejected by the CI.
* **Do not** publish the *lib* folder. * **Do not** publish the *lib* folder.
##### Run your tests against Postgres (optional) ### Run your tests against Postgres (optional)
If your pull request introduces a change that may affect the storage or retrieval of objects, you may want to make sure it plays nice with Postgres. If your pull request introduces a change that may affect the storage or retrieval of objects, you may want to make sure it plays nice with Postgres.
@@ -28,6 +67,6 @@ If your pull request introduces a change that may affect the storage or retrieva
- `it_only_db('mongo')` // will make a test that only runs on mongo - `it_only_db('mongo')` // will make a test that only runs on mongo
- `it_exclude_dbs(['postgres'])` // will make a test that runs against all DB's but postgres - `it_exclude_dbs(['postgres'])` // will make a test that runs against all DB's but postgres
##### Code of Conduct ### Code of Conduct
This project adheres to the [Contributor Covenant Code of Conduct](https://github.com/parse-community/parse-server/blob/master/CODE_OF_CONDUCT.md). By participating, you are expected to honor this code. This project adheres to the [Contributor Covenant Code of Conduct](https://github.com/parse-community/parse-server/blob/master/CODE_OF_CONDUCT.md). By participating, you are expected to honor this code.

View File

@@ -70,6 +70,7 @@
"dev": "npm run build && node bin/dev", "dev": "npm run build && node bin/dev",
"lint": "flow && eslint --cache ./", "lint": "flow && eslint --cache ./",
"build": "babel src/ -d lib/ --copy-files", "build": "babel src/ -d lib/ --copy-files",
"watch": "babel --watch src/ -d lib/ --copy-files",
"pretest": "npm run lint", "pretest": "npm run lint",
"test": "cross-env MONGODB_VERSION=${MONGODB_VERSION:=3.2.6} MONGODB_STORAGE_ENGINE=mmapv1 TESTING=1 jasmine", "test": "cross-env MONGODB_VERSION=${MONGODB_VERSION:=3.2.6} MONGODB_STORAGE_ENGINE=mmapv1 TESTING=1 jasmine",
"coverage": "cross-env MONGODB_VERSION=${MONGODB_VERSION:=3.2.6} MONGODB_STORAGE_ENGINE=mmapv1 TESTING=1 nyc jasmine", "coverage": "cross-env MONGODB_VERSION=${MONGODB_VERSION:=3.2.6} MONGODB_STORAGE_ENGINE=mmapv1 TESTING=1 nyc jasmine",

View File

@@ -1,6 +1,6 @@
"use strict"; "use strict";
const Config = require("../src/Config"); const Config = require("../lib/Config");
const loginWithWrongCredentialsShouldFail = function(username, password) { const loginWithWrongCredentialsShouldFail = function(username, password) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {

View File

@@ -1,7 +1,7 @@
const AdaptableController = require("../src/Controllers/AdaptableController").AdaptableController; const AdaptableController = require("../lib/Controllers/AdaptableController").AdaptableController;
const FilesAdapter = require("../src/Adapters/Files/FilesAdapter").default; const FilesAdapter = require("../lib/Adapters/Files/FilesAdapter").default;
const FilesController = require("../src/Controllers/FilesController").FilesController; const FilesController = require("../lib/Controllers/FilesController").FilesController;
const MockController = function(options) { const MockController = function(options) {
AdaptableController.call(this, options); AdaptableController.call(this, options);

View File

@@ -1,9 +1,9 @@
const loadAdapter = require("../src/Adapters/AdapterLoader").loadAdapter; const loadAdapter = require("../lib/Adapters/AdapterLoader").loadAdapter;
const FilesAdapter = require("@parse/fs-files-adapter").default; const FilesAdapter = require("@parse/fs-files-adapter").default;
const S3Adapter = require("@parse/s3-files-adapter").default; const S3Adapter = require("@parse/s3-files-adapter").default;
const ParsePushAdapter = require("@parse/push-adapter").default; const ParsePushAdapter = require("@parse/push-adapter").default;
const Config = require('../src/Config'); const Config = require('../lib/Config');
describe("AdapterLoader", ()=>{ describe("AdapterLoader", ()=>{
@@ -33,7 +33,7 @@ describe("AdapterLoader", ()=>{
}); });
it("should instantiate an adapter from string that is module", (done) => { it("should instantiate an adapter from string that is module", (done) => {
const adapterPath = require('path').resolve("./src/Adapters/Files/FilesAdapter"); const adapterPath = require('path').resolve("./lib/Adapters/Files/FilesAdapter");
const adapter = loadAdapter({ const adapter = loadAdapter({
adapter: adapterPath adapter: adapterPath
}); });

View File

@@ -1,7 +1,7 @@
const auth = require('../src/Auth'); const auth = require('../lib/Auth');
const Config = require('../src/Config'); const Config = require('../lib/Config');
const rest = require('../src/rest'); const rest = require('../lib/rest');
const AudiencesRouter = require('../src/Routers/AudiencesRouter').AudiencesRouter; const AudiencesRouter = require('../lib/Routers/AudiencesRouter').AudiencesRouter;
describe('AudiencesRouter', () => { describe('AudiencesRouter', () => {
it('uses find condition from request.body', (done) => { it('uses find condition from request.body', (done) => {

View File

@@ -1,5 +1,5 @@
describe('Auth', () => { describe('Auth', () => {
const Auth = require('../src/Auth.js').Auth; const Auth = require('../lib/Auth.js').Auth;
describe('getUserRoles', () => { describe('getUserRoles', () => {
let auth; let auth;

View File

@@ -1,13 +1,13 @@
const request = require('request'); const request = require('request');
const Config = require("../src/Config"); const Config = require("../lib/Config");
const defaultColumns = require('../src/Controllers/SchemaController').defaultColumns; const defaultColumns = require('../lib/Controllers/SchemaController').defaultColumns;
const authenticationLoader = require('../src/Adapters/Auth'); const authenticationLoader = require('../lib/Adapters/Auth');
const path = require('path'); const path = require('path');
describe('AuthenticationProviders', function() { describe('AuthenticationProviders', function() {
["facebook", "facebookaccountkit", "github", "instagram", "google", "linkedin", "meetup", "twitter", "janrainengage", "janraincapture", "vkontakte"].map(function(providerName){ ["facebook", "facebookaccountkit", "github", "instagram", "google", "linkedin", "meetup", "twitter", "janrainengage", "janraincapture", "vkontakte"].map(function(providerName){
it("Should validate structure of " + providerName, (done) => { it("Should validate structure of " + providerName, (done) => {
const provider = require("../src/Adapters/Auth/" + providerName); const provider = require("../lib/Adapters/Auth/" + providerName);
jequal(typeof provider.validateAuthData, "function"); jequal(typeof provider.validateAuthData, "function");
jequal(typeof provider.validateAppId, "function"); jequal(typeof provider.validateAppId, "function");
const authDataPromise = provider.validateAuthData({}, {}); const authDataPromise = provider.validateAuthData({}, {});

View File

@@ -1,7 +1,7 @@
'use strict'; 'use strict';
import commander from '../src/cli/utils/commander'; const commander = require('../lib/cli/utils/commander').default;
import definitions from '../src/cli/definitions/parse-server'; const definitions = require('../lib/cli/definitions/parse-server').default;
import liveQueryDefinitions from '../src/cli/definitions/parse-live-query-server'; const liveQueryDefinitions = require('../lib/cli/definitions/parse-live-query-server').default;
const testDefinitions = { const testDefinitions = {
'arg0': 'PROGRAM_ARG_0', 'arg0': 'PROGRAM_ARG_0',
@@ -173,7 +173,7 @@ describe('LiveQuery definitions', () => {
if (typeof definition.env !== 'undefined') { if (typeof definition.env !== 'undefined') {
expect(typeof definition.env).toBe('string'); expect(typeof definition.env).toBe('string');
} }
expect(typeof definition.help).toBe('string'); expect(typeof definition.help).toBe('string', `help for ${key} should be a string`);
if (typeof definition.required !== 'undefined') { if (typeof definition.required !== 'undefined') {
expect(typeof definition.required).toBe('boolean'); expect(typeof definition.required).toBe('boolean');
} }

View File

@@ -1,4 +1,4 @@
const CacheController = require('../src/Controllers/CacheController.js').default; const CacheController = require('../lib/Controllers/CacheController.js').default;
describe('CacheController', function() { describe('CacheController', function() {
let FakeCacheAdapter; let FakeCacheAdapter;

View File

@@ -1,5 +1,5 @@
const Client = require('../src/LiveQuery/Client').Client; const Client = require('../lib/LiveQuery/Client').Client;
const ParseWebSocket = require('../src/LiveQuery/ParseWebSocketServer').ParseWebSocket; const ParseWebSocket = require('../lib/LiveQuery/ParseWebSocketServer').ParseWebSocket;
describe('Client', function() { describe('Client', function() {
it('can be initialized', function() { it('can be initialized', function() {

View File

@@ -1,4 +1,4 @@
const ClientSDK = require('../src/ClientSDK'); const ClientSDK = require('../lib/ClientSDK');
describe('ClientSDK', () => { describe('ClientSDK', () => {
it('should properly parse the SDK versions', () => { it('should properly parse the SDK versions', () => {

View File

@@ -1,7 +1,7 @@
"use strict" "use strict"
const Parse = require("parse/node"); const Parse = require("parse/node");
const rp = require('request-promise'); const rp = require('request-promise');
const InMemoryCacheAdapter = require('../src/Adapters/Cache/InMemoryCacheAdapter').InMemoryCacheAdapter; const InMemoryCacheAdapter = require('../lib/Adapters/Cache/InMemoryCacheAdapter').InMemoryCacheAdapter;
describe('Cloud Code', () => { describe('Cloud Code', () => {
it('can load absolute cloud code file', done => { it('can load absolute cloud code file', done => {

View File

@@ -1,5 +1,5 @@
const LoggerController = require('../src/Controllers/LoggerController').LoggerController; const LoggerController = require('../lib/Controllers/LoggerController').LoggerController;
const WinstonLoggerAdapter = require('../src/Adapters/Logger/WinstonLoggerAdapter').WinstonLoggerAdapter; const WinstonLoggerAdapter = require('../lib/Adapters/Logger/WinstonLoggerAdapter').WinstonLoggerAdapter;
const fs = require('fs'); const fs = require('fs');
const loremFile = __dirname + '/support/lorem.txt'; const loremFile = __dirname + '/support/lorem.txt';

View File

@@ -1,4 +1,4 @@
const DatabaseController = require('../src/Controllers/DatabaseController.js'); const DatabaseController = require('../lib/Controllers/DatabaseController.js');
const validateQuery = DatabaseController._validateQuery; const validateQuery = DatabaseController._validateQuery;
describe('DatabaseController', function() { describe('DatabaseController', function() {

View File

@@ -2,7 +2,7 @@
const request = require('request'); const request = require('request');
const requestp = require('request-promise'); const requestp = require('request-promise');
const Config = require('../src/Config'); const Config = require('../lib/Config');
describe("Email Verification Token Expiration: ", () => { describe("Email Verification Token Expiration: ", () => {

View File

@@ -1,6 +1,6 @@
const auth = require('../src/Auth'); const auth = require('../lib/Auth');
const Config = require('../src/Config'); const Config = require('../lib/Config');
const rest = require('../src/rest'); const rest = require('../lib/rest');
describe('Enable single schema cache', () => { describe('Enable single schema cache', () => {
beforeEach((done) => { beforeEach((done) => {

View File

@@ -1,4 +1,4 @@
const EventEmitterPubSub = require('../src/Adapters/PubSub/EventEmitterPubSub').EventEmitterPubSub; const EventEmitterPubSub = require('../lib/Adapters/PubSub/EventEmitterPubSub').EventEmitterPubSub;
describe('EventEmitterPubSub', function() { describe('EventEmitterPubSub', function() {
it('can publish and subscribe', function() { it('can publish and subscribe', function() {

View File

@@ -1,8 +1,8 @@
const LoggerController = require('../src/Controllers/LoggerController').LoggerController; const LoggerController = require('../lib/Controllers/LoggerController').LoggerController;
const WinstonLoggerAdapter = require('../src/Adapters/Logger/WinstonLoggerAdapter').WinstonLoggerAdapter; const WinstonLoggerAdapter = require('../lib/Adapters/Logger/WinstonLoggerAdapter').WinstonLoggerAdapter;
const GridStoreAdapter = require("../src/Adapters/Files/GridStoreAdapter").GridStoreAdapter; const GridStoreAdapter = require("../lib/Adapters/Files/GridStoreAdapter").GridStoreAdapter;
const Config = require("../src/Config"); const Config = require("../lib/Config");
const FilesController = require('../src/Controllers/FilesController').default; const FilesController = require('../lib/Controllers/FilesController').default;
const mockAdapter = { const mockAdapter = {
createFile: () => { createFile: () => {

View File

@@ -1,9 +1,9 @@
const MongoClient = require("mongodb").MongoClient; const MongoClient = require("mongodb").MongoClient;
const GridStore = require("mongodb").GridStore; const GridStore = require("mongodb").GridStore;
const GridStoreAdapter = require("../src/Adapters/Files/GridStoreAdapter").GridStoreAdapter; const GridStoreAdapter = require("../lib/Adapters/Files/GridStoreAdapter").GridStoreAdapter;
const Config = require("../src/Config"); const Config = require("../lib/Config");
const FilesController = require('../src/Controllers/FilesController').default; const FilesController = require('../lib/Controllers/FilesController').default;
// Small additional tests to improve overall coverage // Small additional tests to improve overall coverage

View File

@@ -1,7 +1,7 @@
'use strict'; 'use strict';
const httpRequest = require("../src/cloud-code/httpRequest"), const httpRequest = require("../lib/cloud-code/httpRequest"),
HTTPResponse = require('../src/cloud-code/HTTPResponse').default, HTTPResponse = require('../lib/cloud-code/HTTPResponse').default,
bodyParser = require('body-parser'), bodyParser = require('body-parser'),
express = require("express"); express = require("express");

View File

@@ -1,4 +1,4 @@
const InMemoryCache = require('../src/Adapters/Cache/InMemoryCache').default; const InMemoryCache = require('../lib/Adapters/Cache/InMemoryCache').default;
describe('InMemoryCache', function() { describe('InMemoryCache', function() {

View File

@@ -1,4 +1,4 @@
const InMemoryCacheAdapter = require('../src/Adapters/Cache/InMemoryCacheAdapter').default; const InMemoryCacheAdapter = require('../lib/Adapters/Cache/InMemoryCacheAdapter').default;
describe('InMemoryCacheAdapter', function() { describe('InMemoryCacheAdapter', function() {
const KEY = 'hello'; const KEY = 'hello';

View File

@@ -1,7 +1,7 @@
const auth = require('../src/Auth'); const auth = require('../lib/Auth');
const Config = require('../src/Config'); const Config = require('../lib/Config');
const rest = require('../src/rest'); const rest = require('../lib/rest');
const InstallationsRouter = require('../src/Routers/InstallationsRouter').InstallationsRouter; const InstallationsRouter = require('../lib/Routers/InstallationsRouter').InstallationsRouter;
describe('InstallationsRouter', () => { describe('InstallationsRouter', () => {
it('uses find condition from request.body', (done) => { it('uses find condition from request.body', (done) => {

View File

@@ -1,4 +1,4 @@
const logging = require('../src/Adapters/Logger/WinstonLogger'); const logging = require('../lib/Adapters/Logger/WinstonLogger');
const winston = require('winston'); const winston = require('winston');
class TestTransport extends winston.Transport { class TestTransport extends winston.Transport {

View File

@@ -1,5 +1,5 @@
const LoggerController = require('../src/Controllers/LoggerController').LoggerController; const LoggerController = require('../lib/Controllers/LoggerController').LoggerController;
const WinstonLoggerAdapter = require('../src/Adapters/Logger/WinstonLoggerAdapter').WinstonLoggerAdapter; const WinstonLoggerAdapter = require('../lib/Adapters/Logger/WinstonLoggerAdapter').WinstonLoggerAdapter;
describe('LoggerController', () => { describe('LoggerController', () => {
it('can check process a query without throwing', (done) => { it('can check process a query without throwing', (done) => {

View File

@@ -1,9 +1,9 @@
'use strict'; 'use strict';
const request = require('request'); const request = require('request');
const LogsRouter = require('../src/Routers/LogsRouter').LogsRouter; const LogsRouter = require('../lib/Routers/LogsRouter').LogsRouter;
const LoggerController = require('../src/Controllers/LoggerController').LoggerController; const LoggerController = require('../lib/Controllers/LoggerController').LoggerController;
const WinstonLoggerAdapter = require('../src/Adapters/Logger/WinstonLoggerAdapter').WinstonLoggerAdapter; const WinstonLoggerAdapter = require('../lib/Adapters/Logger/WinstonLoggerAdapter').WinstonLoggerAdapter;
const loggerController = new LoggerController(new WinstonLoggerAdapter()); const loggerController = new LoggerController(new WinstonLoggerAdapter());

View File

@@ -1,5 +1,5 @@
const middlewares = require('../src/middlewares'); const middlewares = require('../lib/middlewares');
const AppCache = require('../src/cache').AppCache; const AppCache = require('../lib/cache').AppCache;
describe('middlewares', () => { describe('middlewares', () => {

View File

@@ -1,6 +1,6 @@
'use strict'; 'use strict';
const MongoSchemaCollection = require('../src/Adapters/Storage/Mongo/MongoSchemaCollection').default; const MongoSchemaCollection = require('../lib/Adapters/Storage/Mongo/MongoSchemaCollection').default;
describe('MongoSchemaCollection', () => { describe('MongoSchemaCollection', () => {
it('can transform legacy _client_permissions keys to parse format', done => { it('can transform legacy _client_permissions keys to parse format', done => {

View File

@@ -1,6 +1,6 @@
'use strict'; 'use strict';
import MongoStorageAdapter from '../src/Adapters/Storage/Mongo/MongoStorageAdapter'; const MongoStorageAdapter = require('../lib/Adapters/Storage/Mongo/MongoStorageAdapter').default;
const { MongoClient } = require('mongodb'); const { MongoClient } = require('mongodb');
const databaseURI = 'mongodb://localhost:27017/parseServerMongoAdapterTestDatabase'; const databaseURI = 'mongodb://localhost:27017/parseServerMongoAdapterTestDatabase';

View File

@@ -1,7 +1,7 @@
// These tests are unit tests designed to only test transform.js. // These tests are unit tests designed to only test transform.js.
"use strict"; "use strict";
const transform = require('../src/Adapters/Storage/Mongo/MongoTransform'); const transform = require('../lib/Adapters/Storage/Mongo/MongoTransform');
const dd = require('deep-diff'); const dd = require('deep-diff');
const mongodb = require('mongodb'); const mongodb = require('mongodb');

View File

@@ -1,4 +1,4 @@
const NullCacheAdapter = require('../src/Adapters/Cache/NullCacheAdapter').default; const NullCacheAdapter = require('../lib/Adapters/Cache/NullCacheAdapter').default;
describe('NullCacheAdapter', function() { describe('NullCacheAdapter', function() {
const KEY = 'hello'; const KEY = 'hello';

View File

@@ -1,4 +1,4 @@
const OAuth = require("../src/Adapters/Auth/OAuth1Client"); const OAuth = require("../lib/Adapters/Auth/OAuth1Client");
describe('OAuth', function() { describe('OAuth', function() {
it("Nonce should have right length", (done) => { it("Nonce should have right length", (done) => {

View File

@@ -1,8 +1,8 @@
// This is a port of the test suite: // This is a port of the test suite:
// hungry/js/test/parse_acl_test.js // hungry/js/test/parse_acl_test.js
const rest = require('../src/rest'); const rest = require('../lib/rest');
const Config = require('../src/Config'); const Config = require('../lib/Config');
const auth = require('../src/Auth'); const auth = require('../lib/Auth');
describe('Parse.ACL', () => { describe('Parse.ACL', () => {
it("acl must be valid", (done) => { it("acl must be valid", (done) => {

View File

@@ -5,9 +5,9 @@
const request = require('request'); const request = require('request');
const rp = require('request-promise'); const rp = require('request-promise');
const Parse = require("parse/node"); const Parse = require("parse/node");
const Config = require('../src/Config'); const Config = require('../lib/Config');
const SchemaController = require('../src/Controllers/SchemaController'); const SchemaController = require('../lib/Controllers/SchemaController');
const TestUtils = require('../src/TestUtils'); const TestUtils = require('../lib/TestUtils');
const userSchema = SchemaController.convertSchemaToAdapterSchema({ className: '_User', fields: Object.assign({}, SchemaController.defaultColumns._Default, SchemaController.defaultColumns._User) }); const userSchema = SchemaController.convertSchemaToAdapterSchema({ className: '_User', fields: Object.assign({}, SchemaController.defaultColumns._Default, SchemaController.defaultColumns._User) });

View File

@@ -1,4 +1,4 @@
const ParseCloudCodePublisher = require('../src/LiveQuery/ParseCloudCodePublisher').ParseCloudCodePublisher; const ParseCloudCodePublisher = require('../lib/LiveQuery/ParseCloudCodePublisher').ParseCloudCodePublisher;
const Parse = require('parse/node'); const Parse = require('parse/node');
describe('ParseCloudCodePublisher', function() { describe('ParseCloudCodePublisher', function() {
@@ -14,7 +14,7 @@ describe('ParseCloudCodePublisher', function() {
on: jasmine.createSpy('on') on: jasmine.createSpy('on')
}) })
}; };
jasmine.mockLibrary('../src/LiveQuery/ParsePubSub', 'ParsePubSub', mockParsePubSub); jasmine.mockLibrary('../lib/LiveQuery/ParsePubSub', 'ParsePubSub', mockParsePubSub);
done(); done();
}); });
@@ -22,7 +22,7 @@ describe('ParseCloudCodePublisher', function() {
const config = {} const config = {}
new ParseCloudCodePublisher(config); new ParseCloudCodePublisher(config);
const ParsePubSub = require('../src/LiveQuery/ParsePubSub').ParsePubSub; const ParsePubSub = require('../lib/LiveQuery/ParsePubSub').ParsePubSub;
expect(ParsePubSub.createPublisher).toHaveBeenCalledWith(config); expect(ParsePubSub.createPublisher).toHaveBeenCalledWith(config);
}); });
@@ -64,6 +64,6 @@ describe('ParseCloudCodePublisher', function() {
}); });
afterEach(function(){ afterEach(function(){
jasmine.restoreLibrary('../src/LiveQuery/ParsePubSub', 'ParsePubSub'); jasmine.restoreLibrary('../lib/LiveQuery/ParsePubSub', 'ParsePubSub');
}); });
}); });

View File

@@ -1,7 +1,7 @@
'use strict'; 'use strict';
const request = require('request'); const request = require('request');
const Config = require('../src/Config'); const Config = require('../lib/Config');
describe('a GlobalConfig', () => { describe('a GlobalConfig', () => {
beforeEach(done => { beforeEach(done => {

View File

@@ -1,14 +1,14 @@
"use strict"; "use strict";
/* global describe, it, expect, fail, Parse */ /* global describe, it, expect, fail, Parse */
const request = require('request'); const request = require('request');
const triggers = require('../src/triggers'); const triggers = require('../lib/triggers');
const HooksController = require('../src/Controllers/HooksController').default; const HooksController = require('../lib/Controllers/HooksController').default;
const express = require("express"); const express = require("express");
const bodyParser = require('body-parser'); const bodyParser = require('body-parser');
const port = 12345; const port = 12345;
const hookServerURL = "http://localhost:" + port; const hookServerURL = "http://localhost:" + port;
const AppCache = require('../src/cache').AppCache; const AppCache = require('../lib/cache').AppCache;
describe('Hooks', () => { describe('Hooks', () => {
let server; let server;

View File

@@ -2,15 +2,15 @@
// These tests check the Installations functionality of the REST API. // These tests check the Installations functionality of the REST API.
// Ported from installation_collection_test.go // Ported from installation_collection_test.go
const auth = require('../src/Auth'); const auth = require('../lib/Auth');
const Config = require('../src/Config'); const Config = require('../lib/Config');
const Parse = require('parse/node').Parse; const Parse = require('parse/node').Parse;
const rest = require('../src/rest'); const rest = require('../lib/rest');
const request = require("request"); const request = require("request");
let config; let config;
let database; let database;
const defaultColumns = require('../src/Controllers/SchemaController').defaultColumns; const defaultColumns = require('../lib/Controllers/SchemaController').defaultColumns;
const delay = function delay(delay) { const delay = function delay(delay) {
return new Promise(resolve => setTimeout(resolve, delay)); return new Promise(resolve => setTimeout(resolve, delay));

View File

@@ -1,6 +1,6 @@
const Parse = require('parse/node'); const Parse = require('parse/node');
const ParseLiveQueryServer = require('../src/LiveQuery/ParseLiveQueryServer').ParseLiveQueryServer; const ParseLiveQueryServer = require('../lib/LiveQuery/ParseLiveQueryServer').ParseLiveQueryServer;
const ParseServer = require('../src/ParseServer').default; const ParseServer = require('../lib/ParseServer').default;
// Global mock info // Global mock info
const queryHashValue = 'hash'; const queryHashValue = 'hash';
@@ -11,7 +11,7 @@ describe('ParseLiveQueryServer', function() {
beforeEach(function(done) { beforeEach(function(done) {
// Mock ParseWebSocketServer // Mock ParseWebSocketServer
const mockParseWebSocketServer = jasmine.createSpy('ParseWebSocketServer'); const mockParseWebSocketServer = jasmine.createSpy('ParseWebSocketServer');
jasmine.mockLibrary('../src/LiveQuery/ParseWebSocketServer', 'ParseWebSocketServer', mockParseWebSocketServer); jasmine.mockLibrary('../lib/LiveQuery/ParseWebSocketServer', 'ParseWebSocketServer', mockParseWebSocketServer);
// Mock Client // Mock Client
const mockClient = function(id, socket, hasMasterKey) { const mockClient = function(id, socket, hasMasterKey) {
this.pushConnect = jasmine.createSpy('pushConnect'); this.pushConnect = jasmine.createSpy('pushConnect');
@@ -28,19 +28,19 @@ describe('ParseLiveQueryServer', function() {
this.hasMasterKey = hasMasterKey; this.hasMasterKey = hasMasterKey;
} }
mockClient.pushError = jasmine.createSpy('pushError'); mockClient.pushError = jasmine.createSpy('pushError');
jasmine.mockLibrary('../src/LiveQuery/Client', 'Client', mockClient); jasmine.mockLibrary('../lib/LiveQuery/Client', 'Client', mockClient);
// Mock Subscription // Mock Subscription
const mockSubscriotion = function() { const mockSubscriotion = function() {
this.addClientSubscription = jasmine.createSpy('addClientSubscription'); this.addClientSubscription = jasmine.createSpy('addClientSubscription');
this.deleteClientSubscription = jasmine.createSpy('deleteClientSubscription'); this.deleteClientSubscription = jasmine.createSpy('deleteClientSubscription');
} }
jasmine.mockLibrary('../src/LiveQuery/Subscription', 'Subscription', mockSubscriotion); jasmine.mockLibrary('../lib/LiveQuery/Subscription', 'Subscription', mockSubscriotion);
// Mock queryHash // Mock queryHash
const mockQueryHash = jasmine.createSpy('matchesQuery').and.returnValue(queryHashValue); const mockQueryHash = jasmine.createSpy('matchesQuery').and.returnValue(queryHashValue);
jasmine.mockLibrary('../src/LiveQuery/QueryTools', 'queryHash', mockQueryHash); jasmine.mockLibrary('../lib/LiveQuery/QueryTools', 'queryHash', mockQueryHash);
// Mock matchesQuery // Mock matchesQuery
const mockMatchesQuery = jasmine.createSpy('matchesQuery').and.returnValue(true); const mockMatchesQuery = jasmine.createSpy('matchesQuery').and.returnValue(true);
jasmine.mockLibrary('../src/LiveQuery/QueryTools', 'matchesQuery', mockMatchesQuery); jasmine.mockLibrary('../lib/LiveQuery/QueryTools', 'matchesQuery', mockMatchesQuery);
// Mock ParsePubSub // Mock ParsePubSub
const mockParsePubSub = { const mockParsePubSub = {
createPublisher: function() { createPublisher: function() {
@@ -56,7 +56,7 @@ describe('ParseLiveQueryServer', function() {
} }
} }
}; };
jasmine.mockLibrary('../src/LiveQuery/ParsePubSub', 'ParsePubSub', mockParsePubSub); jasmine.mockLibrary('../lib/LiveQuery/ParsePubSub', 'ParsePubSub', mockParsePubSub);
// Make mock SessionTokenCache // Make mock SessionTokenCache
const mockSessionTokenCache = function(){ const mockSessionTokenCache = function(){
this.getUserId = function(sessionToken){ this.getUserId = function(sessionToken){
@@ -69,7 +69,7 @@ describe('ParseLiveQueryServer', function() {
return Parse.Promise.as(testUserId); return Parse.Promise.as(testUserId);
}; };
}; };
jasmine.mockLibrary('../src/LiveQuery/SessionTokenCache', 'SessionTokenCache', mockSessionTokenCache); jasmine.mockLibrary('../lib/LiveQuery/SessionTokenCache', 'SessionTokenCache', mockSessionTokenCache);
done(); done();
}); });
@@ -167,7 +167,7 @@ describe('ParseLiveQueryServer', function() {
}; };
parseLiveQueryServer._handleSubscribe(incompleteParseConn, {}); parseLiveQueryServer._handleSubscribe(incompleteParseConn, {});
const Client = require('../src/LiveQuery/Client').Client; const Client = require('../lib/LiveQuery/Client').Client;
expect(Client.pushError).toHaveBeenCalled(); expect(Client.pushError).toHaveBeenCalled();
}); });
@@ -273,7 +273,7 @@ describe('ParseLiveQueryServer', function() {
}; };
parseLiveQueryServer._handleUnsubscribe(incompleteParseConn, {}); parseLiveQueryServer._handleUnsubscribe(incompleteParseConn, {});
const Client = require('../src/LiveQuery/Client').Client; const Client = require('../lib/LiveQuery/Client').Client;
expect(Client.pushError).toHaveBeenCalled(); expect(Client.pushError).toHaveBeenCalled();
}); });
@@ -284,7 +284,7 @@ describe('ParseLiveQueryServer', function() {
}; };
parseLiveQueryServer._handleUnsubscribe(parseWebSocket, {}); parseLiveQueryServer._handleUnsubscribe(parseWebSocket, {});
const Client = require('../src/LiveQuery/Client').Client; const Client = require('../lib/LiveQuery/Client').Client;
expect(Client.pushError).toHaveBeenCalled(); expect(Client.pushError).toHaveBeenCalled();
}); });
@@ -299,7 +299,7 @@ describe('ParseLiveQueryServer', function() {
}; };
parseLiveQueryServer._handleUnsubscribe(parseWebSocket, {}); parseLiveQueryServer._handleUnsubscribe(parseWebSocket, {});
const Client = require('../src/LiveQuery/Client').Client; const Client = require('../lib/LiveQuery/Client').Client;
expect(Client.pushError).toHaveBeenCalled(); expect(Client.pushError).toHaveBeenCalled();
}); });
@@ -445,7 +445,7 @@ describe('ParseLiveQueryServer', function() {
const invalidRequest = '{}'; const invalidRequest = '{}';
// Trigger message event // Trigger message event
parseWebSocket.emit('message', invalidRequest); parseWebSocket.emit('message', invalidRequest);
const Client = require('../src/LiveQuery/Client').Client; const Client = require('../lib/LiveQuery/Client').Client;
expect(Client.pushError).toHaveBeenCalled(); expect(Client.pushError).toHaveBeenCalled();
}); });
@@ -461,7 +461,7 @@ describe('ParseLiveQueryServer', function() {
const unknownRequest = '{"op":"unknown"}'; const unknownRequest = '{"op":"unknown"}';
// Trigger message event // Trigger message event
parseWebSocket.emit('message', unknownRequest); parseWebSocket.emit('message', unknownRequest);
const Client = require('../src/LiveQuery/Client').Client; const Client = require('../lib/LiveQuery/Client').Client;
expect(Client.pushError).toHaveBeenCalled(); expect(Client.pushError).toHaveBeenCalled();
}); });
@@ -788,7 +788,7 @@ describe('ParseLiveQueryServer', function() {
const parseObject = {}; const parseObject = {};
expect(parseLiveQueryServer._matchesSubscription(parseObject, subscription)).toBe(true); expect(parseLiveQueryServer._matchesSubscription(parseObject, subscription)).toBe(true);
// Make sure matchesQuery is called // Make sure matchesQuery is called
const matchesQuery = require('../src/LiveQuery/QueryTools').matchesQuery; const matchesQuery = require('../lib/LiveQuery/QueryTools').matchesQuery;
expect(matchesQuery).toHaveBeenCalledWith(parseObject, subscription.query); expect(matchesQuery).toHaveBeenCalledWith(parseObject, subscription.query);
}); });
@@ -1209,18 +1209,18 @@ describe('ParseLiveQueryServer', function() {
}); });
afterEach(function(){ afterEach(function(){
jasmine.restoreLibrary('../src/LiveQuery/ParseWebSocketServer', 'ParseWebSocketServer'); jasmine.restoreLibrary('../lib/LiveQuery/ParseWebSocketServer', 'ParseWebSocketServer');
jasmine.restoreLibrary('../src/LiveQuery/Client', 'Client'); jasmine.restoreLibrary('../lib/LiveQuery/Client', 'Client');
jasmine.restoreLibrary('../src/LiveQuery/Subscription', 'Subscription'); jasmine.restoreLibrary('../lib/LiveQuery/Subscription', 'Subscription');
jasmine.restoreLibrary('../src/LiveQuery/QueryTools', 'queryHash'); jasmine.restoreLibrary('../lib/LiveQuery/QueryTools', 'queryHash');
jasmine.restoreLibrary('../src/LiveQuery/QueryTools', 'matchesQuery'); jasmine.restoreLibrary('../lib/LiveQuery/QueryTools', 'matchesQuery');
jasmine.restoreLibrary('../src/LiveQuery/ParsePubSub', 'ParsePubSub'); jasmine.restoreLibrary('../lib/LiveQuery/ParsePubSub', 'ParsePubSub');
jasmine.restoreLibrary('../src/LiveQuery/SessionTokenCache', 'SessionTokenCache'); jasmine.restoreLibrary('../lib/LiveQuery/SessionTokenCache', 'SessionTokenCache');
}); });
// Helper functions to add mock client and subscription to a liveQueryServer // Helper functions to add mock client and subscription to a liveQueryServer
function addMockClient(parseLiveQueryServer, clientId) { function addMockClient(parseLiveQueryServer, clientId) {
const Client = require('../src/LiveQuery/Client').Client; const Client = require('../lib/LiveQuery/Client').Client;
const client = new Client(clientId, {}); const client = new Client(clientId, {});
parseLiveQueryServer.clients.set(clientId, client); parseLiveQueryServer.clients.set(clientId, client);
return client; return client;

View File

@@ -1,5 +1,5 @@
const TestObject = Parse.Object.extend('TestObject'); const TestObject = Parse.Object.extend('TestObject');
import MongoStorageAdapter from '../src/Adapters/Storage/Mongo/MongoStorageAdapter'; const MongoStorageAdapter = require('../lib/Adapters/Storage/Mongo/MongoStorageAdapter').default;
const mongoURI = 'mongodb://localhost:27017/parseServerMongoAdapterTestDatabase'; const mongoURI = 'mongodb://localhost:27017/parseServerMongoAdapterTestDatabase';
const rp = require('request-promise'); const rp = require('request-promise');
const defaultHeaders = { const defaultHeaders = {
@@ -314,7 +314,7 @@ describe_only_db('mongo')('Parse.Polygon testing', () => {
}); });
it('polygon coordinates reverse input', (done) => { it('polygon coordinates reverse input', (done) => {
const Config = require('../src/Config'); const Config = require('../lib/Config');
const config = Config.get('test'); const config = Config.get('test');
// When stored the first point should be the last point // When stored the first point should be the last point

View File

@@ -1,4 +1,4 @@
const ParsePubSub = require('../src/LiveQuery/ParsePubSub').ParsePubSub; const ParsePubSub = require('../lib/LiveQuery/ParsePubSub').ParsePubSub;
describe('ParsePubSub', function() { describe('ParsePubSub', function() {
@@ -8,13 +8,13 @@ describe('ParsePubSub', function() {
createPublisher: jasmine.createSpy('createPublisherRedis'), createPublisher: jasmine.createSpy('createPublisherRedis'),
createSubscriber: jasmine.createSpy('createSubscriberRedis') createSubscriber: jasmine.createSpy('createSubscriberRedis')
}; };
jasmine.mockLibrary('../src/Adapters/PubSub/RedisPubSub', 'RedisPubSub', mockRedisPubSub); jasmine.mockLibrary('../lib/Adapters/PubSub/RedisPubSub', 'RedisPubSub', mockRedisPubSub);
// Mock EventEmitterPubSub // Mock EventEmitterPubSub
const mockEventEmitterPubSub = { const mockEventEmitterPubSub = {
createPublisher: jasmine.createSpy('createPublisherEventEmitter'), createPublisher: jasmine.createSpy('createPublisherEventEmitter'),
createSubscriber: jasmine.createSpy('createSubscriberEventEmitter') createSubscriber: jasmine.createSpy('createSubscriberEventEmitter')
}; };
jasmine.mockLibrary('../src/Adapters/PubSub/EventEmitterPubSub', 'EventEmitterPubSub', mockEventEmitterPubSub); jasmine.mockLibrary('../lib/Adapters/PubSub/EventEmitterPubSub', 'EventEmitterPubSub', mockEventEmitterPubSub);
done(); done();
}); });
@@ -23,8 +23,8 @@ describe('ParsePubSub', function() {
redisURL: 'redisURL' redisURL: 'redisURL'
}); });
const RedisPubSub = require('../src/Adapters/PubSub/RedisPubSub').RedisPubSub; const RedisPubSub = require('../lib/Adapters/PubSub/RedisPubSub').RedisPubSub;
const EventEmitterPubSub = require('../src/Adapters/PubSub/EventEmitterPubSub').EventEmitterPubSub; const EventEmitterPubSub = require('../lib/Adapters/PubSub/EventEmitterPubSub').EventEmitterPubSub;
expect(RedisPubSub.createPublisher).toHaveBeenCalledWith({redisURL: 'redisURL'}); expect(RedisPubSub.createPublisher).toHaveBeenCalledWith({redisURL: 'redisURL'});
expect(EventEmitterPubSub.createPublisher).not.toHaveBeenCalled(); expect(EventEmitterPubSub.createPublisher).not.toHaveBeenCalled();
}); });
@@ -32,8 +32,8 @@ describe('ParsePubSub', function() {
it('can create event emitter publisher', function() { it('can create event emitter publisher', function() {
ParsePubSub.createPublisher({}); ParsePubSub.createPublisher({});
const RedisPubSub = require('../src/Adapters/PubSub/RedisPubSub').RedisPubSub; const RedisPubSub = require('../lib/Adapters/PubSub/RedisPubSub').RedisPubSub;
const EventEmitterPubSub = require('../src/Adapters/PubSub/EventEmitterPubSub').EventEmitterPubSub; const EventEmitterPubSub = require('../lib/Adapters/PubSub/EventEmitterPubSub').EventEmitterPubSub;
expect(RedisPubSub.createPublisher).not.toHaveBeenCalled(); expect(RedisPubSub.createPublisher).not.toHaveBeenCalled();
expect(EventEmitterPubSub.createPublisher).toHaveBeenCalled(); expect(EventEmitterPubSub.createPublisher).toHaveBeenCalled();
}); });
@@ -43,8 +43,8 @@ describe('ParsePubSub', function() {
redisURL: 'redisURL' redisURL: 'redisURL'
}); });
const RedisPubSub = require('../src/Adapters/PubSub/RedisPubSub').RedisPubSub; const RedisPubSub = require('../lib/Adapters/PubSub/RedisPubSub').RedisPubSub;
const EventEmitterPubSub = require('../src/Adapters/PubSub/EventEmitterPubSub').EventEmitterPubSub; const EventEmitterPubSub = require('../lib/Adapters/PubSub/EventEmitterPubSub').EventEmitterPubSub;
expect(RedisPubSub.createSubscriber).toHaveBeenCalledWith({redisURL: 'redisURL'}); expect(RedisPubSub.createSubscriber).toHaveBeenCalledWith({redisURL: 'redisURL'});
expect(EventEmitterPubSub.createSubscriber).not.toHaveBeenCalled(); expect(EventEmitterPubSub.createSubscriber).not.toHaveBeenCalled();
}); });
@@ -52,8 +52,8 @@ describe('ParsePubSub', function() {
it('can create event emitter subscriber', function() { it('can create event emitter subscriber', function() {
ParsePubSub.createSubscriber({}); ParsePubSub.createSubscriber({});
const RedisPubSub = require('../src/Adapters/PubSub/RedisPubSub').RedisPubSub; const RedisPubSub = require('../lib/Adapters/PubSub/RedisPubSub').RedisPubSub;
const EventEmitterPubSub = require('../src/Adapters/PubSub/EventEmitterPubSub').EventEmitterPubSub; const EventEmitterPubSub = require('../lib/Adapters/PubSub/EventEmitterPubSub').EventEmitterPubSub;
expect(RedisPubSub.createSubscriber).not.toHaveBeenCalled(); expect(RedisPubSub.createSubscriber).not.toHaveBeenCalled();
expect(EventEmitterPubSub.createSubscriber).toHaveBeenCalled(); expect(EventEmitterPubSub.createSubscriber).toHaveBeenCalled();
}); });
@@ -73,8 +73,8 @@ describe('ParsePubSub', function() {
}); });
expect(adapter.createSubscriber).toHaveBeenCalled(); expect(adapter.createSubscriber).toHaveBeenCalled();
const RedisPubSub = require('../src/Adapters/PubSub/RedisPubSub').RedisPubSub; const RedisPubSub = require('../lib/Adapters/PubSub/RedisPubSub').RedisPubSub;
const EventEmitterPubSub = require('../src/Adapters/PubSub/EventEmitterPubSub').EventEmitterPubSub; const EventEmitterPubSub = require('../lib/Adapters/PubSub/EventEmitterPubSub').EventEmitterPubSub;
expect(RedisPubSub.createSubscriber).not.toHaveBeenCalled(); expect(RedisPubSub.createSubscriber).not.toHaveBeenCalled();
expect(EventEmitterPubSub.createSubscriber).not.toHaveBeenCalled(); expect(EventEmitterPubSub.createSubscriber).not.toHaveBeenCalled();
expect(RedisPubSub.createPublisher).not.toHaveBeenCalled(); expect(RedisPubSub.createPublisher).not.toHaveBeenCalled();
@@ -100,8 +100,8 @@ describe('ParsePubSub', function() {
}); });
expect(adapter.createSubscriber).toHaveBeenCalled(); expect(adapter.createSubscriber).toHaveBeenCalled();
const RedisPubSub = require('../src/Adapters/PubSub/RedisPubSub').RedisPubSub; const RedisPubSub = require('../lib/Adapters/PubSub/RedisPubSub').RedisPubSub;
const EventEmitterPubSub = require('../src/Adapters/PubSub/EventEmitterPubSub').EventEmitterPubSub; const EventEmitterPubSub = require('../lib/Adapters/PubSub/EventEmitterPubSub').EventEmitterPubSub;
expect(RedisPubSub.createSubscriber).not.toHaveBeenCalled(); expect(RedisPubSub.createSubscriber).not.toHaveBeenCalled();
expect(EventEmitterPubSub.createSubscriber).not.toHaveBeenCalled(); expect(EventEmitterPubSub.createSubscriber).not.toHaveBeenCalled();
expect(RedisPubSub.createPublisher).not.toHaveBeenCalled(); expect(RedisPubSub.createPublisher).not.toHaveBeenCalled();
@@ -109,7 +109,7 @@ describe('ParsePubSub', function() {
}); });
afterEach(function(){ afterEach(function(){
jasmine.restoreLibrary('../src/Adapters/PubSub/RedisPubSub', 'RedisPubSub'); jasmine.restoreLibrary('../lib/Adapters/PubSub/RedisPubSub', 'RedisPubSub');
jasmine.restoreLibrary('../src/Adapters/PubSub/EventEmitterPubSub', 'EventEmitterPubSub'); jasmine.restoreLibrary('../lib/Adapters/PubSub/EventEmitterPubSub', 'EventEmitterPubSub');
}); });
}); });

View File

@@ -1,8 +1,8 @@
'use strict'; 'use strict';
import MongoStorageAdapter from '../src/Adapters/Storage/Mongo/MongoStorageAdapter'; const MongoStorageAdapter = require('../lib/Adapters/Storage/Mongo/MongoStorageAdapter').default;
const mongoURI = 'mongodb://localhost:27017/parseServerMongoAdapterTestDatabase'; const mongoURI = 'mongodb://localhost:27017/parseServerMongoAdapterTestDatabase';
import PostgresStorageAdapter from '../src/Adapters/Storage/Postgres/PostgresStorageAdapter'; const PostgresStorageAdapter = require('../lib/Adapters/Storage/Postgres/PostgresStorageAdapter').default;
const postgresURI = 'postgres://localhost:5432/parse_server_postgres_adapter_test_database'; const postgresURI = 'postgres://localhost:5432/parse_server_postgres_adapter_test_database';
const Parse = require('parse/node'); const Parse = require('parse/node');
const rp = require('request-promise'); const rp = require('request-promise');

View File

@@ -2,9 +2,9 @@
// Roles are not accessible without the master key, so they are not intended // Roles are not accessible without the master key, so they are not intended
// for use by clients. We can manually test them using the master key. // for use by clients. We can manually test them using the master key.
const RestQuery = require("../src/RestQuery"); const RestQuery = require("../lib/RestQuery");
const Auth = require("../src/Auth").Auth; const Auth = require("../lib/Auth").Auth;
const Config = require("../src/Config"); const Config = require("../lib/Config");
describe('Parse Role testing', () => { describe('Parse Role testing', () => {
it('Do a bunch of basic role testing', done => { it('Do a bunch of basic role testing', done => {

View File

@@ -1,9 +1,9 @@
'use strict'; 'use strict';
/* Tests for ParseServer.js */ /* Tests for ParseServer.js */
const express = require('express'); const express = require('express');
import MongoStorageAdapter from '../src/Adapters/Storage/Mongo/MongoStorageAdapter'; const MongoStorageAdapter = require('../lib/Adapters/Storage/Mongo/MongoStorageAdapter').default;
import PostgresStorageAdapter from '../src/Adapters/Storage/Postgres/PostgresStorageAdapter'; const PostgresStorageAdapter = require('../lib/Adapters/Storage/Postgres/PostgresStorageAdapter').default;
import ParseServer from '../src/ParseServer'; const ParseServer = require('../lib/ParseServer').default;
describe('Server Url Checks', () => { describe('Server Url Checks', () => {

View File

@@ -1,5 +1,5 @@
const ParseServerRESTController = require('../src/ParseServerRESTController').ParseServerRESTController; const ParseServerRESTController = require('../lib/ParseServerRESTController').ParseServerRESTController;
const ParseServer = require('../src/ParseServer').default; const ParseServer = require('../lib/ParseServer').default;
const Parse = require('parse/node').Parse; const Parse = require('parse/node').Parse;
let RESTController; let RESTController;

View File

@@ -7,10 +7,10 @@
"use strict"; "use strict";
import MongoStorageAdapter from '../src/Adapters/Storage/Mongo/MongoStorageAdapter'; const MongoStorageAdapter = require('../lib/Adapters/Storage/Mongo/MongoStorageAdapter').default;
const request = require('request'); const request = require('request');
const passwordCrypto = require('../src/password'); const passwordCrypto = require('../lib/password');
const Config = require('../src/Config'); const Config = require('../lib/Config');
const rp = require('request-promise'); const rp = require('request-promise');
function verifyACL(user) { function verifyACL(user) {

View File

@@ -1,4 +1,4 @@
const ParseWebSocket = require('../src/LiveQuery/ParseWebSocketServer').ParseWebSocket; const ParseWebSocket = require('../lib/LiveQuery/ParseWebSocketServer').ParseWebSocket;
describe('ParseWebSocket', function() { describe('ParseWebSocket', function() {

View File

@@ -1,4 +1,4 @@
const ParseWebSocketServer = require('../src/LiveQuery/ParseWebSocketServer').ParseWebSocketServer; const ParseWebSocketServer = require('../lib/LiveQuery/ParseWebSocketServer').ParseWebSocketServer;
describe('ParseWebSocketServer', function() { describe('ParseWebSocketServer', function() {

View File

@@ -1,5 +1,5 @@
'use strict'; 'use strict';
const Config = require('../src/Config'); const Config = require('../lib/Config');
describe('Pointer Permissions', () => { describe('Pointer Permissions', () => {

View File

@@ -1,4 +1,4 @@
const parser = require('../src/Adapters/Storage/Postgres/PostgresConfigParser'); const parser = require('../lib/Adapters/Storage/Postgres/PostgresConfigParser');
const queryParamTests = { const queryParamTests = {
'a=1&b=2': { a: '1', b: '2' }, 'a=1&b=2': { a: '1', b: '2' },

View File

@@ -1,7 +1,7 @@
const Parse = require('parse/node').Parse; const Parse = require('parse/node').Parse;
import PostgresStorageAdapter from '../src/Adapters/Storage/Postgres/PostgresStorageAdapter'; const PostgresStorageAdapter = require('../lib/Adapters/Storage/Postgres/PostgresStorageAdapter').default;
const postgresURI = 'postgres://localhost:5432/parse_server_postgres_adapter_test_database'; const postgresURI = 'postgres://localhost:5432/parse_server_postgres_adapter_test_database';
const ParseServer = require("../src/index"); const ParseServer = require("../lib/index");
const express = require('express'); const express = require('express');
//public schema //public schema
const databaseOptions1 = { const databaseOptions1 = {

View File

@@ -1,4 +1,4 @@
import PostgresStorageAdapter from '../src/Adapters/Storage/Postgres/PostgresStorageAdapter'; const PostgresStorageAdapter = require('../lib/Adapters/Storage/Postgres/PostgresStorageAdapter').default;
const databaseURI = 'postgres://localhost:5432/parse_server_postgres_adapter_test_database'; const databaseURI = 'postgres://localhost:5432/parse_server_postgres_adapter_test_database';
const getColumns = (client, className) => { const getColumns = (client, className) => {

View File

@@ -1,4 +1,4 @@
const PromiseRouter = require("../src/PromiseRouter").default; const PromiseRouter = require("../lib/PromiseRouter").default;
describe("PromiseRouter", () => { describe("PromiseRouter", () => {
it("should properly handle rejects", (done) => { it("should properly handle rejects", (done) => {

View File

@@ -1,8 +1,8 @@
"use strict"; "use strict";
const PushController = require('../src/Controllers/PushController').PushController; const PushController = require('../lib/Controllers/PushController').PushController;
const StatusHandler = require('../src/StatusHandler'); const StatusHandler = require('../lib/StatusHandler');
const Config = require('../src/Config'); const Config = require('../lib/Config');
const validatePushType = require('../src/Push/utils').validatePushType; const validatePushType = require('../lib/Push/utils').validatePushType;
const successfulTransmissions = function(body, installations) { const successfulTransmissions = function(body, installations) {

View File

@@ -1,5 +1,5 @@
import Config from "../src/Config"; const Config = require("../lib/Config");
import {PushQueue} from "../src/Push/PushQueue"; const {PushQueue} = require("../lib/Push/PushQueue");
describe('PushQueue', () => { describe('PushQueue', () => {
describe('With a defined channel', () => { describe('With a defined channel', () => {

View File

@@ -1,4 +1,4 @@
const PushRouter = require('../src/Routers/PushRouter').PushRouter; const PushRouter = require('../lib/Routers/PushRouter').PushRouter;
const request = require('request'); const request = require('request');
describe('PushRouter', () => { describe('PushRouter', () => {

View File

@@ -1,8 +1,8 @@
const PushWorker = require('../src').PushWorker; const PushWorker = require('../lib').PushWorker;
const PushUtils = require('../src/Push/utils'); const PushUtils = require('../lib/Push/utils');
const Config = require('../src/Config'); const Config = require('../lib/Config');
const { pushStatusHandler } = require('../src/StatusHandler'); const { pushStatusHandler } = require('../lib/StatusHandler');
const rest = require('../src/rest'); const rest = require('../lib/rest');
describe('PushWorker', () => { describe('PushWorker', () => {
it('should run with small batch', (done) => { it('should run with small batch', (done) => {
@@ -90,6 +90,10 @@ describe('PushWorker', () => {
expect(locales).toEqual(['fr']); expect(locales).toEqual(['fr']);
}); });
it('should handle empty body data', () => {
expect(PushUtils.getLocalesFromPush({})).toEqual([]);
});
it('transforms body appropriately', () => { it('transforms body appropriately', () => {
const cleanBody = PushUtils.transformPushBodyForLocale({ const cleanBody = PushUtils.transformPushBodyForLocale({
data: { data: {

View File

@@ -1,7 +1,7 @@
const Parse = require('parse/node'); const Parse = require('parse/node');
const Id = require('../src/LiveQuery/Id'); const Id = require('../lib/LiveQuery/Id');
const QueryTools = require('../src/LiveQuery/QueryTools'); const QueryTools = require('../lib/LiveQuery/QueryTools');
const queryHash = QueryTools.queryHash; const queryHash = QueryTools.queryHash;
const matchesQuery = QueryTools.matchesQuery; const matchesQuery = QueryTools.matchesQuery;

View File

@@ -3,7 +3,7 @@
const Parse = require('parse/node'); const Parse = require('parse/node');
const ReadPreference = require('mongodb').ReadPreference; const ReadPreference = require('mongodb').ReadPreference;
const rp = require('request-promise'); const rp = require('request-promise');
const Config = require("../src/Config"); const Config = require("../lib/Config");
describe_only_db('mongo')('Read preference option', () => { describe_only_db('mongo')('Read preference option', () => {
it('should find in primary by default', (done) => { it('should find in primary by default', (done) => {
@@ -40,7 +40,7 @@ describe_only_db('mongo')('Read preference option', () => {
}); });
it('should preserve the read preference set (#4831)', async () => { it('should preserve the read preference set (#4831)', async () => {
const { MongoStorageAdapter } = require('../src/Adapters/Storage/Mongo/MongoStorageAdapter'); const { MongoStorageAdapter } = require('../lib/Adapters/Storage/Mongo/MongoStorageAdapter');
const adapterOptions = { const adapterOptions = {
uri: 'mongodb://localhost:27017/parseServerMongoAdapterTestDatabase', uri: 'mongodb://localhost:27017/parseServerMongoAdapterTestDatabase',
mongoOptions: { mongoOptions: {
@@ -75,7 +75,6 @@ describe_only_db('mongo')('Read preference option', () => {
}); });
expect(myObjectReadPreference).toBe(true); expect(myObjectReadPreference).toBe(true);
console.log('OK!');
}); });
it('should change read preference in the beforeFind trigger', (done) => { it('should change read preference in the beforeFind trigger', (done) => {

View File

@@ -1,4 +1,4 @@
const RedisCacheAdapter = require('../src/Adapters/Cache/RedisCacheAdapter').default; const RedisCacheAdapter = require('../lib/Adapters/Cache/RedisCacheAdapter').default;
/* /*
To run this test part of the complete suite To run this test part of the complete suite
set PARSE_SERVER_TEST_CACHE='redis' set PARSE_SERVER_TEST_CACHE='redis'

View File

@@ -1,4 +1,4 @@
const RedisPubSub = require('../src/Adapters/PubSub/RedisPubSub').RedisPubSub; const RedisPubSub = require('../lib/Adapters/PubSub/RedisPubSub').RedisPubSub;
describe('RedisPubSub', function() { describe('RedisPubSub', function() {

View File

@@ -1,8 +1,8 @@
'use strict' 'use strict'
// These tests check the "find" functionality of the REST API. // These tests check the "find" functionality of the REST API.
const auth = require('../src/Auth'); const auth = require('../lib/Auth');
const Config = require('../src/Config'); const Config = require('../lib/Config');
const rest = require('../src/rest'); const rest = require('../lib/rest');
const querystring = require('querystring'); const querystring = require('querystring');
const rp = require('request-promise'); const rp = require('request-promise');

View File

@@ -1,4 +1,4 @@
const Config = require('../src/Config'); const Config = require('../lib/Config');
const sessionToken = 'legacySessionToken'; const sessionToken = 'legacySessionToken';
const rp = require('request-promise'); const rp = require('request-promise');
const Parse = require('parse/node'); const Parse = require('parse/node');

View File

@@ -1,7 +1,7 @@
'use strict'; 'use strict';
const Config = require('../src/Config'); const Config = require('../lib/Config');
const SchemaController = require('../src/Controllers/SchemaController'); const SchemaController = require('../lib/Controllers/SchemaController');
const dd = require('deep-diff'); const dd = require('deep-diff');
let config; let config;

View File

@@ -1,6 +1,6 @@
const CacheController = require('../src/Controllers/CacheController.js').default; const CacheController = require('../lib/Controllers/CacheController.js').default;
const InMemoryCacheAdapter = require('../src/Adapters/Cache/InMemoryCacheAdapter').default; const InMemoryCacheAdapter = require('../lib/Adapters/Cache/InMemoryCacheAdapter').default;
const SchemaCache = require('../src/Controllers/SchemaCache').default; const SchemaCache = require('../lib/Controllers/SchemaCache').default;
describe('SchemaCache', () => { describe('SchemaCache', () => {
let cacheController; let cacheController;

View File

@@ -1,4 +1,4 @@
const SessionTokenCache = require('../src/LiveQuery/SessionTokenCache').SessionTokenCache; const SessionTokenCache = require('../lib/LiveQuery/SessionTokenCache').SessionTokenCache;
describe('SessionTokenCache', function() { describe('SessionTokenCache', function() {

View File

@@ -1,9 +1,9 @@
const Subscription = require('../src/LiveQuery/Subscription').Subscription; const Subscription = require('../lib/LiveQuery/Subscription').Subscription;
let logger; let logger;
describe('Subscription', function() { describe('Subscription', function() {
beforeEach(function() { beforeEach(function() {
logger = require('../src/logger').logger; logger = require('../lib/logger').logger;
spyOn(logger, 'error').and.callThrough(); spyOn(logger, 'error').and.callThrough();
}); });

View File

@@ -1,4 +1,4 @@
const twitter = require('../src/Adapters/Auth/twitter'); const twitter = require('../lib/Adapters/Auth/twitter');
describe('Twitter Auth', () => { describe('Twitter Auth', () => {
it('should use the proper configuration', () => { it('should use the proper configuration', () => {

View File

@@ -1,7 +1,7 @@
'use strict'; 'use strict';
const Parse = require("parse/node"); const Parse = require("parse/node");
const Config = require('../src/Config'); const Config = require('../lib/Config');
describe('Uniqueness', function() { describe('Uniqueness', function() {
it('fail when create duplicate value in unique field', done => { it('fail when create duplicate value in unique field', done => {

View File

@@ -1,6 +1,6 @@
const UserController = require('../src/Controllers/UserController').UserController; const UserController = require('../lib/Controllers/UserController').UserController;
const emailAdapter = require('./MockEmailAdapter') const emailAdapter = require('./MockEmailAdapter')
const AppCache = require('../src/cache').AppCache; const AppCache = require('../lib/cache').AppCache;
describe('UserController', () => { describe('UserController', () => {
const user = { const user = {

View File

@@ -3,7 +3,7 @@
const Parse = require('parse/node'); const Parse = require('parse/node');
const request = require('request-promise'); const request = require('request-promise');
// const Config = require('../src/Config'); // const Config = require('../lib/Config');
const EMAIL = 'foo@bar.com'; const EMAIL = 'foo@bar.com';
const ZIP = '10001'; const ZIP = '10001';

View File

@@ -2,7 +2,7 @@
const MockEmailAdapterWithOptions = require('./MockEmailAdapterWithOptions'); const MockEmailAdapterWithOptions = require('./MockEmailAdapterWithOptions');
const request = require('request'); const request = require('request');
const Config = require("../src/Config"); const Config = require("../lib/Config");
describe("Custom Pages, Email Verification, Password Reset", () => { describe("Custom Pages, Email Verification, Password Reset", () => {
it("should set the custom pages", (done) => { it("should set the custom pages", (done) => {

View File

@@ -1,6 +1,6 @@
'use strict'; 'use strict';
const WinstonLoggerAdapter = require('../src/Adapters/Logger/WinstonLoggerAdapter').WinstonLoggerAdapter; const WinstonLoggerAdapter = require('../lib/Adapters/Logger/WinstonLoggerAdapter').WinstonLoggerAdapter;
const request = require('request'); const request = require('request');
describe('info logs', () => { describe('info logs', () => {

View File

@@ -1,4 +1,4 @@
const batch = require('../src/batch'); const batch = require('../lib/batch');
const originalURL = '/parse/batch'; const originalURL = '/parse/batch';
const serverURL = 'http://localhost:1234/parse'; const serverURL = 'http://localhost:1234/parse';

View File

@@ -1,4 +1,4 @@
const cryptoUtils = require('../src/cryptoUtils'); const cryptoUtils = require('../lib/cryptoUtils');
function givesUniqueResults(fn, iterations) { function givesUniqueResults(fn, iterations) {
const results = {}; const results = {};

View File

@@ -5,7 +5,7 @@ const supportsColor = require('supports-color');
jasmine.DEFAULT_TIMEOUT_INTERVAL = process.env.PARSE_SERVER_TEST_TIMEOUT || 5000; jasmine.DEFAULT_TIMEOUT_INTERVAL = process.env.PARSE_SERVER_TEST_TIMEOUT || 5000;
jasmine.getEnv().clearReporters(); jasmine.getEnv().clearReporters();
jasmine.getEnv().addReporter(new SpecReporter({ colors: { enabled: supportsColor.stdout }})); jasmine.getEnv().addReporter(new SpecReporter({ colors: { enabled: supportsColor.stdout }, spec: { displayDuration: true }}));
global.on_db = (db, callback, elseCallback) => { global.on_db = (db, callback, elseCallback) => {
if (process.env.PARSE_SERVER_TEST_DB == db) { if (process.env.PARSE_SERVER_TEST_DB == db) {
@@ -23,15 +23,15 @@ if (global._babelPolyfill) {
process.exit(1); process.exit(1);
} }
const cache = require('../src/cache').default; const cache = require('../lib/cache').default;
const ParseServer = require('../src/index').ParseServer; const ParseServer = require('../lib/index').ParseServer;
const path = require('path'); const path = require('path');
const TestUtils = require('../src/TestUtils'); const TestUtils = require('../lib/TestUtils');
const GridStoreAdapter = require('../src/Adapters/Files/GridStoreAdapter').GridStoreAdapter; const GridStoreAdapter = require('../lib/Adapters/Files/GridStoreAdapter').GridStoreAdapter;
const FSAdapter = require('@parse/fs-files-adapter'); const FSAdapter = require('@parse/fs-files-adapter');
import PostgresStorageAdapter from '../src/Adapters/Storage/Postgres/PostgresStorageAdapter'; const PostgresStorageAdapter = require('../lib/Adapters/Storage/Postgres/PostgresStorageAdapter').default;
import MongoStorageAdapter from '../src/Adapters/Storage/Mongo/MongoStorageAdapter'; const MongoStorageAdapter = require('../lib/Adapters/Storage/Mongo/MongoStorageAdapter').default;
const RedisCacheAdapter = require('../src/Adapters/Cache/RedisCacheAdapter').default; const RedisCacheAdapter = require('../lib/Adapters/Cache/RedisCacheAdapter').default;
const mongoURI = 'mongodb://localhost:27017/parseServerMongoAdapterTestDatabase'; const mongoURI = 'mongodb://localhost:27017/parseServerMongoAdapterTestDatabase';
const postgresURI = 'postgres://localhost:5432/parse_server_postgres_adapter_test_database'; const postgresURI = 'postgres://localhost:5432/parse_server_postgres_adapter_test_database';
@@ -422,7 +422,7 @@ global.it_exclude_dbs = excluded => {
} }
global.it_only_db = db => { global.it_only_db = db => {
if (process.env.PARSE_SERVER_TEST_DB === db) { if (process.env.PARSE_SERVER_TEST_DB === db || !process.env.PARSE_SERVER_TEST_DB && db == 'mongo') {
return (name, suite) => { return (name, suite) => {
return it(`[${db}] ${name}`, suite); return it(`[${db}] ${name}`, suite);
}; };

View File

@@ -2,11 +2,11 @@
const request = require('request'); const request = require('request');
const parseServerPackage = require('../package.json'); const parseServerPackage = require('../package.json');
const MockEmailAdapterWithOptions = require('./MockEmailAdapterWithOptions'); const MockEmailAdapterWithOptions = require('./MockEmailAdapterWithOptions');
const ParseServer = require("../src/index"); const ParseServer = require("../lib/index");
const Config = require('../src/Config'); const Config = require('../lib/Config');
const express = require('express'); const express = require('express');
import MongoStorageAdapter from '../src/Adapters/Storage/Mongo/MongoStorageAdapter'; const MongoStorageAdapter = require('../lib/Adapters/Storage/Mongo/MongoStorageAdapter').default;
describe('server', () => { describe('server', () => {
it('requires a master key and app id', done => { it('requires a master key and app id', done => {

View File

@@ -1,4 +1,4 @@
import { const {
numberParser, numberParser,
numberOrBoolParser, numberOrBoolParser,
booleanParser, booleanParser,
@@ -6,7 +6,7 @@ import {
arrayParser, arrayParser,
moduleOrObjectParser, moduleOrObjectParser,
nullParser, nullParser,
} from '../src/Options/parsers'; } = require('../lib/Options/parsers');
describe('parsers', () => { describe('parsers', () => {
it('parses correctly with numberParser', () => { it('parses correctly with numberParser', () => {

View File

@@ -1,10 +1,10 @@
"use strict"; "use strict";
// These tests check the "create" / "update" functionality of the REST API. // These tests check the "create" / "update" functionality of the REST API.
const auth = require('../src/Auth'); const auth = require('../lib/Auth');
const Config = require('../src/Config'); const Config = require('../lib/Config');
const Parse = require('parse/node').Parse; const Parse = require('parse/node').Parse;
const rest = require('../src/rest'); const rest = require('../lib/rest');
const RestWrite = require('../src/RestWrite'); const RestWrite = require('../lib/RestWrite');
const request = require('request'); const request = require('request');
const rp = require('request-promise'); const rp = require('request-promise');

View File

@@ -4,7 +4,7 @@ const Parse = require('parse/node').Parse;
const request = require('request'); const request = require('request');
const rp = require('request-promise'); const rp = require('request-promise');
const dd = require('deep-diff'); const dd = require('deep-diff');
const Config = require('../src/Config'); const Config = require('../lib/Config');
let config; let config;

View File

@@ -4,7 +4,6 @@
"*spec.js" "*spec.js"
], ],
"helpers": [ "helpers": [
"../node_modules/babel-core/register.js",
"helper.js" "helper.js"
], ],
"random": false "random": false

View File

@@ -1,11 +1,11 @@
// testing-routes.js // testing-routes.js
import AppCache from '../src/cache'; const AppCache = require('../lib/cache').default;
import * as middlewares from '../src/middlewares'; const middlewares = require('../lib/middlewares');
import { ParseServer } from '../src/index'; const { ParseServer } = require('../lib/index');
import { Parse } from 'parse/node'; const { Parse } = require('parse/node');
const express = require('express'), const express = require('express'),
cryptoUtils = require('../src/cryptoUtils'); cryptoUtils = require('../lib/cryptoUtils');
const router = express.Router(); const router = express.Router();

View File

@@ -42,12 +42,6 @@ export class PushWorker {
} }
} }
unsubscribe(): void {
if (this.subscriber) {
this.subscriber.unsubscribe(this.channel);
}
}
run({ body, query, pushStatus, applicationId, UTCOffset }: any): Promise<*> { run({ body, query, pushStatus, applicationId, UTCOffset }: any): Promise<*> {
const config = Config.get(applicationId); const config = Config.get(applicationId);
const auth = master(config); const auth = master(config);
@@ -59,8 +53,6 @@ export class PushWorker {
return; return;
} }
return this.sendToAdapter(body, results, pushStatus, config, UTCOffset); return this.sendToAdapter(body, results, pushStatus, config, UTCOffset);
}, err => {
throw err;
}); });
} }