Fix for #1334: using relative cloud code files broken

* Adding tests for absolute and relative cloud code file loading.

* Fixes #1334 by resolving relative cloud code file paths to the process' working directory.
This commit is contained in:
Tommy Goode
2016-04-04 07:43:06 -05:00
committed by Florent Vilmart
parent f99b5588ab
commit acc23d0828
3 changed files with 23 additions and 2 deletions

View File

@@ -10,7 +10,7 @@ var ParseServer = require('../src/index').ParseServer;
var path = require('path'); var path = require('path');
var databaseURI = process.env.DATABASE_URI; var databaseURI = process.env.DATABASE_URI;
var cloudMain = process.env.CLOUD_CODE_MAIN || '../spec/cloud/main.js'; var cloudMain = process.env.CLOUD_CODE_MAIN || './spec/cloud/main.js';
var port = 8378; var port = 8378;
// Default server configuration for tests. // Default server configuration for tests.

View File

@@ -175,6 +175,26 @@ describe('server', () => {
}) })
}); });
it('can load absolute cloud code file', done => {
setServerConfiguration({
serverURL: 'http://localhost:8378/1',
appId: 'test',
masterKey: 'test',
cloud: __dirname + '/cloud/main.js'
});
done();
});
it('can load relative cloud code file', done => {
setServerConfiguration({
serverURL: 'http://localhost:8378/1',
appId: 'test',
masterKey: 'test',
cloud: './spec/cloud/main.js'
});
done();
});
it('can create a parse-server', done => { it('can create a parse-server', done => {
var parseServer = new ParseServer.default({ var parseServer = new ParseServer.default({
appId: "aTestApp", appId: "aTestApp",

View File

@@ -9,6 +9,7 @@ var batch = require('./batch'),
middlewares = require('./middlewares'), middlewares = require('./middlewares'),
multer = require('multer'), multer = require('multer'),
Parse = require('parse/node').Parse, Parse = require('parse/node').Parse,
path = require('path'),
authDataManager = require('./authDataManager'); authDataManager = require('./authDataManager');
import { logger, import { logger,
@@ -142,7 +143,7 @@ class ParseServer {
if (typeof cloud === 'function') { if (typeof cloud === 'function') {
cloud(Parse) cloud(Parse)
} else if (typeof cloud === 'string') { } else if (typeof cloud === 'string') {
require(cloud); require(path.resolve(process.cwd(), cloud));
} else { } else {
throw "argument 'cloud' must either be a string or a function"; throw "argument 'cloud' must either be a string or a function";
} }