diff --git a/spec/PostgresInitOptions.spec.js b/spec/PostgresInitOptions.spec.js index c9b9bd778f..a0766d5d44 100644 --- a/spec/PostgresInitOptions.spec.js +++ b/spec/PostgresInitOptions.spec.js @@ -1,7 +1,7 @@ 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'); //public schema const databaseOptions1 = { initOptions: { @@ -28,33 +28,40 @@ const GameScore = Parse.Object.extend({ className: "GameScore" }); -describe('Postgres database init options', () => { +describe_only_db('postgres')('Postgres database init options', () => { 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 }) - }).then(done, fail); + }).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, fail); + 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(); - }) - .catch(error => { - expect(error.code).toEqual('42P01'); - done(); - }); + }); }); }); diff --git a/src/Adapters/Storage/Postgres/PostgresClient.js b/src/Adapters/Storage/Postgres/PostgresClient.js index a94eb9c29d..47cafbefa7 100644 --- a/src/Adapters/Storage/Postgres/PostgresClient.js +++ b/src/Adapters/Storage/Postgres/PostgresClient.js @@ -23,5 +23,5 @@ export function createClient(uri, databaseOptions) { } } - return client; + return { client, pgp }; } diff --git a/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js b/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js index c74e02bff4..a01ce25b31 100644 --- a/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js +++ b/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js @@ -403,6 +403,7 @@ export class PostgresStorageAdapter { // Private _collectionPrefix: string; _client; + _pgp; constructor({ uri, @@ -410,7 +411,9 @@ export class PostgresStorageAdapter { databaseOptions }) { this._collectionPrefix = collectionPrefix; - this._client = createClient(uri, databaseOptions); + const { client, pgp } = createClient(uri, databaseOptions); + this._client = client; + this._pgp = pgp; } _ensureSchemaCollectionExists(conn) {