From 8cee0513419dcbbaf8649aafb9a78d447e8f54ca Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Sat, 1 Jul 2017 21:19:36 +0000 Subject: [PATCH 1/5] fix(package): update pg-promise to version 6.3.0 Closes #3954 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 45fd7722f2..9e0ccc2698 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,7 @@ "parse-server-push-adapter": "1.3.0", "parse-server-s3-adapter": "1.0.6", "parse-server-simple-mailgun-adapter": "1.0.0", - "pg-promise": "5.9.7", + "pg-promise": "6.3.0", "redis": "2.7.1", "request": "2.81.0", "semver": "5.3.0", From 6b24703686b79ccc5b21fc25157ea49c19890428 Mon Sep 17 00:00:00 2001 From: Florent Vilmart Date: Sun, 2 Jul 2017 00:22:32 -0400 Subject: [PATCH 2/5] Restores PG adapter after tests that close the connection --- spec/PostgresInitOptions.spec.js | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/spec/PostgresInitOptions.spec.js b/spec/PostgresInitOptions.spec.js index a0766d5d44..0a59528574 100644 --- a/spec/PostgresInitOptions.spec.js +++ b/spec/PostgresInitOptions.spec.js @@ -29,6 +29,13 @@ const GameScore = Parse.Object.extend({ }); describe_only_db('postgres')('Postgres database init options', () => { + afterEach(() => { + defaultConfiguration.databaseAdapter = new PostgresStorageAdapter({ + uri: process.env.PARSE_SERVER_TEST_DATABASE_URI || postgresURI, + collectionPrefix: 'test_', + }); + }); + it('should create server with public schema databaseOptions', (done) => { const config = new Config('test'); // Close the current DB before continueing @@ -38,12 +45,12 @@ describe_only_db('postgres')('Postgres database init options', () => { uri: postgresURI, collectionPrefix: 'test_', databaseOptions: databaseOptions1 }) - }).then(done, done.fail); - }); - - it("save new GameScore in public schema", function (done) { - var score = new GameScore({ "score": 1337, "playerName": "Sean Plott", "cheatMode": false }); - score.save().then(done, done.fail); + }) + .then(() => { + 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) => { From cb6d7f80f7b2467701baa305e4c1181fe52e0e80 Mon Sep 17 00:00:00 2001 From: Florent Vilmart Date: Sun, 2 Jul 2017 11:35:39 -0400 Subject: [PATCH 3/5] investigation --- spec/helper.js | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/spec/helper.js b/spec/helper.js index c8e1994ffa..9de887645c 100644 --- a/spec/helper.js +++ b/spec/helper.js @@ -191,12 +191,7 @@ beforeEach(done => { Parse.initialize('test', 'test', 'test'); Parse.serverURL = 'http://localhost:' + port + '/1'; done(); - }, () => { - Parse.initialize('test', 'test', 'test'); - Parse.serverURL = 'http://localhost:' + port + '/1'; - // fail(JSON.stringify(error)); - done(); - }) + }).catch(done.fail); }); afterEach(function(done) { From 3c12559c2fff66a88f77ca07cc1c02c12ceab0e6 Mon Sep 17 00:00:00 2001 From: Florent Vilmart Date: Sun, 2 Jul 2017 12:53:13 -0400 Subject: [PATCH 4/5] Use isolated parse-server to not impeed on other specs --- spec/PostgresInitOptions.spec.js | 78 ++++++++++++++++++-------------- 1 file changed, 43 insertions(+), 35 deletions(-) diff --git a/spec/PostgresInitOptions.spec.js b/spec/PostgresInitOptions.spec.js index 0a59528574..869e029561 100644 --- a/spec/PostgresInitOptions.spec.js +++ b/spec/PostgresInitOptions.spec.js @@ -1,7 +1,8 @@ const Parse = require('parse/node').Parse; const PostgresStorageAdapter = require('../src/Adapters/Storage/Postgres/PostgresStorageAdapter'); const postgresURI = 'postgres://localhost:5432/parse_server_postgres_adapter_test_database'; -const Config = require('../src/Config'); +var ParseServer = require("../src/index"); +var express = require('express'); //public schema const databaseOptions1 = { initOptions: { @@ -28,47 +29,54 @@ 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(() => { - defaultConfiguration.databaseAdapter = new PostgresStorageAdapter({ - uri: process.env.PARSE_SERVER_TEST_DATABASE_URI || postgresURI, - collectionPrefix: 'test_', - }); - }); + if (server) { + server.close(); + } + }) it('should create server with public schema databaseOptions', (done) => { - const config = new Config('test'); - // Close the current DB before continueing - config.database.adapter._pgp.end(); - reconfigureServer({ - databaseAdapter: new PostgresStorageAdapter({ - uri: postgresURI, collectionPrefix: 'test_', - databaseOptions: databaseOptions1 - }) + const adapter = new PostgresStorageAdapter({ + uri: postgresURI, collectionPrefix: 'test_', + databaseOptions: databaseOptions1 }) - .then(() => { - var score = new GameScore({ "score": 1337, "playerName": "Sean Plott", "cheatMode": false }); - return score.save(); - }) - .then(done, done.fail); + + 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 config = new Config('test'); - // Close the current DB before continueing - config.database.adapter._pgp.end(); - reconfigureServer({ - databaseAdapter: new PostgresStorageAdapter({ - uri: postgresURI, collectionPrefix: 'test_', - databaseOptions: databaseOptions2 - }) - }).then(() => { - done.fail('Should not succeed'); - }, error => { - // INVALID_SCHEMA error 3F000 - // https://www.postgresql.org/docs/9.5/static/errcodes-appendix.html - expect(error.code).toEqual('3F000'); - done(); - }); + const adapter = new PostgresStorageAdapter({ + uri: postgresURI, collectionPrefix: 'test_', + databaseOptions: databaseOptions2 + }) + + createParseServer({ databaseAdapter: adapter }).then(done.fail, done); }); }); From 77a0fce9fcedabfc16a3c145c561224f88ebe833 Mon Sep 17 00:00:00 2001 From: Florent Vilmart Date: Sun, 2 Jul 2017 13:56:27 -0400 Subject: [PATCH 5/5] Update PostgresInitOptions.spec.js --- spec/PostgresInitOptions.spec.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/PostgresInitOptions.spec.js b/spec/PostgresInitOptions.spec.js index 869e029561..7feb30c970 100644 --- a/spec/PostgresInitOptions.spec.js +++ b/spec/PostgresInitOptions.spec.js @@ -1,8 +1,8 @@ const Parse = require('parse/node').Parse; const PostgresStorageAdapter = require('../src/Adapters/Storage/Postgres/PostgresStorageAdapter'); const postgresURI = 'postgres://localhost:5432/parse_server_postgres_adapter_test_database'; -var ParseServer = require("../src/index"); -var express = require('express'); +const ParseServer = require("../src/index"); +const express = require('express'); //public schema const databaseOptions1 = { initOptions: {