Style improvements (#2475)
* HooksRouter is enabled by default * Adds middleswares on PromiseRouter, fixes #2410 * Move testing line to helper * Modernize middlewares.js * Moves DB uniqueness initialization to DBController, modernize * Moves testing related code to spec folder * remove unused _removeHook function * Adds tests, docs for Analytics and improvements * nit * moves back TestUtils
This commit is contained in:
61
spec/Analytics.spec.js
Normal file
61
spec/Analytics.spec.js
Normal file
@@ -0,0 +1,61 @@
|
||||
const analyticsAdapter = {
|
||||
appOpened: function(parameters, req) {},
|
||||
trackEvent: function(eventName, parameters, req) {}
|
||||
}
|
||||
|
||||
describe('AnalyticsController', () => {
|
||||
it('should track a simple event', (done) => {
|
||||
|
||||
spyOn(analyticsAdapter, 'trackEvent').and.callThrough();
|
||||
reconfigureServer({
|
||||
analyticsAdapter
|
||||
}).then(() => {
|
||||
return Parse.Analytics.track('MyEvent', {
|
||||
key: 'value',
|
||||
count: '0'
|
||||
})
|
||||
}).then(() => {
|
||||
expect(analyticsAdapter.trackEvent).toHaveBeenCalled();
|
||||
var lastCall = analyticsAdapter.trackEvent.calls.first();
|
||||
let args = lastCall.args;
|
||||
expect(args[0]).toEqual('MyEvent');
|
||||
expect(args[1]).toEqual({
|
||||
dimensions: {
|
||||
key: 'value',
|
||||
count: '0'
|
||||
}
|
||||
});
|
||||
done();
|
||||
}, (err) => {
|
||||
fail(JSON.stringify(err));
|
||||
done();
|
||||
})
|
||||
});
|
||||
|
||||
it('should track a app opened event', (done) => {
|
||||
|
||||
spyOn(analyticsAdapter, 'appOpened').and.callThrough();
|
||||
reconfigureServer({
|
||||
analyticsAdapter
|
||||
}).then(() => {
|
||||
return Parse.Analytics.track('AppOpened', {
|
||||
key: 'value',
|
||||
count: '0'
|
||||
})
|
||||
}).then(() => {
|
||||
expect(analyticsAdapter.appOpened).toHaveBeenCalled();
|
||||
var lastCall = analyticsAdapter.appOpened.calls.first();
|
||||
let args = lastCall.args;
|
||||
expect(args[0]).toEqual({
|
||||
dimensions: {
|
||||
key: 'value',
|
||||
count: '0'
|
||||
}
|
||||
});
|
||||
done();
|
||||
}, (err) => {
|
||||
fail(JSON.stringify(err));
|
||||
done();
|
||||
})
|
||||
})
|
||||
})
|
||||
@@ -2,14 +2,13 @@
|
||||
// It would probably be better to refactor them into different files.
|
||||
'use strict';
|
||||
|
||||
var DatabaseAdapter = require('../src/DatabaseAdapter');
|
||||
const MongoStorageAdapter = require('../src/Adapters/Storage/Mongo/MongoStorageAdapter');
|
||||
var request = require('request');
|
||||
const rp = require('request-promise');
|
||||
const Parse = require("parse/node");
|
||||
let Config = require('../src/Config');
|
||||
const SchemaController = require('../src/Controllers/SchemaController');
|
||||
var TestUtils = require('../src/index').TestUtils;
|
||||
var TestUtils = require('../src/TestUtils');
|
||||
const deepcopy = require('deepcopy');
|
||||
|
||||
const userSchema = SchemaController.convertSchemaToAdapterSchema({ className: '_User', fields: Object.assign({}, SchemaController.defaultColumns._Default, SchemaController.defaultColumns._User) });
|
||||
|
||||
@@ -4,12 +4,11 @@
|
||||
jasmine.DEFAULT_TIMEOUT_INTERVAL = process.env.PARSE_SERVER_TEST_TIMEOUT || 5000;
|
||||
|
||||
var cache = require('../src/cache').default;
|
||||
var DatabaseAdapter = require('../src/DatabaseAdapter');
|
||||
var express = require('express');
|
||||
var facebook = require('../src/authDataManager/facebook');
|
||||
var ParseServer = require('../src/index').ParseServer;
|
||||
var path = require('path');
|
||||
var TestUtils = require('../src/index').TestUtils;
|
||||
var TestUtils = require('../src/TestUtils');
|
||||
var MongoStorageAdapter = require('../src/Adapters/Storage/Mongo/MongoStorageAdapter');
|
||||
const GridStoreAdapter = require('../src/Adapters/Files/GridStoreAdapter').GridStoreAdapter;
|
||||
const PostgresStorageAdapter = require('../src/Adapters/Storage/Postgres/PostgresStorageAdapter');
|
||||
@@ -87,6 +86,7 @@ const reconfigureServer = changedConfiguration => {
|
||||
cache.clear();
|
||||
app = express();
|
||||
api = new ParseServer(newConfiguration);
|
||||
api.use(require('./testing-routes').router);
|
||||
app.use('/1', api);
|
||||
|
||||
server = app.listen(port);
|
||||
|
||||
72
spec/testing-routes.js
Normal file
72
spec/testing-routes.js
Normal file
@@ -0,0 +1,72 @@
|
||||
// testing-routes.js
|
||||
import AppCache from '../src/cache';
|
||||
import * as middlewares from '../src/middlewares';
|
||||
import { ParseServer } from '../src/index';
|
||||
import { Parse } from 'parse/node';
|
||||
|
||||
var express = require('express'),
|
||||
cryptoUtils = require('../src/cryptoUtils');
|
||||
|
||||
var router = express.Router();
|
||||
|
||||
// creates a unique app in the cache, with a collection prefix
|
||||
function createApp(req, res) {
|
||||
var appId = cryptoUtils.randomHexString(32);
|
||||
|
||||
ParseServer({
|
||||
databaseURI: 'mongodb://localhost:27017/parseServerMongoAdapterTestDatabase',
|
||||
appId: appId,
|
||||
masterKey: 'master',
|
||||
serverURL: Parse.serverURL,
|
||||
collectionPrefix: appId
|
||||
});
|
||||
var keys = {
|
||||
'application_id': appId,
|
||||
'client_key' : 'unused',
|
||||
'windows_key' : 'unused',
|
||||
'javascript_key': 'unused',
|
||||
'webhook_key' : 'unused',
|
||||
'rest_api_key' : 'unused',
|
||||
'master_key' : 'master'
|
||||
};
|
||||
res.status(200).send(keys);
|
||||
}
|
||||
|
||||
// deletes all collections that belong to the app
|
||||
function clearApp(req, res) {
|
||||
if (!req.auth.isMaster) {
|
||||
return res.status(401).send({ "error": "unauthorized" });
|
||||
}
|
||||
return req.config.database.deleteEverything().then(() => {
|
||||
res.status(200).send({});
|
||||
});
|
||||
}
|
||||
|
||||
// deletes all collections and drops the app from cache
|
||||
function dropApp(req, res) {
|
||||
if (!req.auth.isMaster) {
|
||||
return res.status(401).send({ "error": "unauthorized" });
|
||||
}
|
||||
return req.config.database.deleteEverything().then(() => {
|
||||
AppCache.del(req.config.applicationId);
|
||||
res.status(200).send({});
|
||||
});
|
||||
}
|
||||
|
||||
// Lets just return a success response and see what happens.
|
||||
function notImplementedYet(req, res) {
|
||||
res.status(200).send({});
|
||||
}
|
||||
|
||||
router.post('/rest_clear_app', middlewares.handleParseHeaders, clearApp);
|
||||
router.post('/rest_block', middlewares.handleParseHeaders, notImplementedYet);
|
||||
router.post('/rest_mock_v8_client', middlewares.handleParseHeaders, notImplementedYet);
|
||||
router.post('/rest_unmock_v8_client', middlewares.handleParseHeaders, notImplementedYet);
|
||||
router.post('/rest_verify_analytics', middlewares.handleParseHeaders, notImplementedYet);
|
||||
router.post('/rest_create_app', createApp);
|
||||
router.post('/rest_drop_app', middlewares.handleParseHeaders, dropApp);
|
||||
router.post('/rest_configure_app', middlewares.handleParseHeaders, notImplementedYet);
|
||||
|
||||
module.exports = {
|
||||
router: router
|
||||
};
|
||||
Reference in New Issue
Block a user