From 81f3a79f04b58b6125f89957f2854e5f23140507 Mon Sep 17 00:00:00 2001 From: Benjamin Woodruff Date: Mon, 14 Mar 2016 13:21:56 -0700 Subject: [PATCH] Add (failing) tests for uri encoding auth --- spec/MongoStorageAdapter.spec.js | 37 ++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 spec/MongoStorageAdapter.spec.js diff --git a/spec/MongoStorageAdapter.spec.js b/spec/MongoStorageAdapter.spec.js new file mode 100644 index 00000000..785772b4 --- /dev/null +++ b/spec/MongoStorageAdapter.spec.js @@ -0,0 +1,37 @@ +'use strict'; + +const MongoStorageAdapter = require('../src/Adapters/Storage/Mongo/MongoStorageAdapter'); +const MongoClient = require('mongodb').MongoClient; + +describe('MongoStorageAdapter', () => { + it('auto-escapes symbols in auth information', () => { + spyOn(MongoClient, 'connect').and.returnValue(Promise.resolve(null)); + new MongoStorageAdapter('mongodb://user!with@+ symbols:password!with@+ symbols@localhost:1234/parse', {}) + .connect(); + expect(MongoClient.connect).toHaveBeenCalledWith( + 'mongodb://user!with%40%2B%20symbols:password!with%40%2B%20symbols@localhost:1234/parse', + jasmine.any(Object) + ); + }); + + it("doesn't double escape already URI-encoded information", () => { + spyOn(MongoClient, 'connect').and.returnValue(Promise.resolve(null)); + new MongoStorageAdapter('mongodb://user!with%40%2B%20symbols:password!with%40%2B%20symbols@localhost:1234/parse', {}) + .connect(); + expect(MongoClient.connect).toHaveBeenCalledWith( + 'mongodb://user!with%40%2B%20symbols:password!with%40%2B%20symbols@localhost:1234/parse', + jasmine.any(Object) + ); + }); + + // https://github.com/ParsePlatform/parse-server/pull/148#issuecomment-180407057 + it('preserves replica sets', () => { + spyOn(MongoClient, 'connect').and.returnValue(Promise.resolve(null)); + new MongoStorageAdapter('mongodb://test:testpass@ds056315-a0.mongolab.com:59325,ds059315-a1.mongolab.com:59315/testDBname?replicaSet=rs-ds059415', {}) + .connect(); + expect(MongoClient.connect).toHaveBeenCalledWith( + 'mongodb://test:testpass@ds056315-a0.mongolab.com:59325,ds059315-a1.mongolab.com:59315/testDBname?replicaSet=rs-ds059415', + jasmine.any(Object) + ); + }); +});