Files
kami-parse-server/spec/PostgresInitOptions.spec.js
Florent Vilmart 10631371e6 Introduces flow types for storage (#4349)
* Introduces flow types for storage

* Better typing of QueryOptions

* Adds flow types to SchemaCOntroller,

- runs flow on pre tests
- fixes flow

* Adds ClassLevelPermissions type

* Moves Controller types into a single file

* Changes import styles

* Changes import styles

* fixing method setIndexesWithSchemaFormat (#4454)

Fixing invalid database code in method `setIndexesWithSchemaFormat`:

* It must be a transaction, not a task, as it executes multiple database changes
* It should contain the initial queries inside the transaction, providing the context, not outside it;
* Replaced the code with the ES6 Generator notation
* Removing the use of batch, as the value of the result promise is irrelevant, only success/failure that matters

* nits

* Fixes tests, improves flow typing
2017-12-30 20:44:18 -05:00

83 lines
2.4 KiB
JavaScript

const Parse = require('parse/node').Parse;
import PostgresStorageAdapter from '../src/Adapters/Storage/Postgres/PostgresStorageAdapter';
const postgresURI = 'postgres://localhost:5432/parse_server_postgres_adapter_test_database';
const ParseServer = require("../src/index");
const express = require('express');
//public schema
const databaseOptions1 = {
initOptions: {
connect: function (client, dc, isFresh) {
if (isFresh) {
client.query('SET search_path = public');
}
}
}
};
//not exists schema
const databaseOptions2 = {
initOptions: {
connect: function (client, dc, isFresh) {
if (isFresh) {
client.query('SET search_path = not_exists_schema');
}
}
}
};
const GameScore = Parse.Object.extend({
className: "GameScore"
});
function createParseServer(options) {
return new Promise((resolve, reject) => {
const parseServer = new ParseServer.default(Object.assign({},
defaultConfiguration, options, {
serverURL: "http://localhost:12666/parse",
__indexBuildCompletionCallbackForTests: promise => {
promise
.then(() => {
expect(Parse.applicationId).toEqual("test");
var app = express();
app.use('/parse', parseServer.app);
const server = app.listen(12666);
Parse.serverURL = "http://localhost:12666/parse";
resolve(server);
}, reject);
}}));
});
}
describe_only_db('postgres')('Postgres database init options', () => {
let server;
afterEach(() => {
if (server) {
server.close();
}
})
it('should create server with public schema databaseOptions', (done) => {
const adapter = new PostgresStorageAdapter({
uri: postgresURI, collectionPrefix: 'test_',
databaseOptions: databaseOptions1
})
createParseServer({ databaseAdapter: adapter }).then((newServer) => {
server = newServer;
var score = new GameScore({ "score": 1337, "playerName": "Sean Plott", "cheatMode": false });
return score.save();
}).then(done, done.fail);
});
it('should fail to create server if schema databaseOptions does not exist', (done) => {
const adapter = new PostgresStorageAdapter({
uri: postgresURI, collectionPrefix: 'test_',
databaseOptions: databaseOptions2
})
createParseServer({ databaseAdapter: adapter }).then(done.fail, done);
});
});