From bea6b069e43762f46ffe372ea1313858984431b6 Mon Sep 17 00:00:00 2001 From: Rhys Howell Date: Wed, 15 Jul 2020 11:31:48 +0200 Subject: [PATCH 1/4] Pass uri string as optional --- .../service-provider-server/src/cli-service-provider.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/service-provider-server/src/cli-service-provider.ts b/packages/service-provider-server/src/cli-service-provider.ts index dfcb7c0ee1..7bb0f6753d 100644 --- a/packages/service-provider-server/src/cli-service-provider.ts +++ b/packages/service-provider-server/src/cli-service-provider.ts @@ -69,7 +69,7 @@ class CliServiceProvider implements ServiceProvider { } private readonly mongoClient: MongoClient; - private readonly uri: string; + private readonly uri: string | undefined; /** * Instantiate a new CliServiceProvider with the Node driver's connected @@ -78,7 +78,7 @@ class CliServiceProvider implements ServiceProvider { * @param {MongoClient} mongoClient - The Node drivers' MongoClient instance. * @param {string} uri - optional URI for telemetry. */ - constructor(mongoClient: MongoClient, uri?: string) { + constructor(mongoClient: MongoClient, uri: string | undefined) { this.mongoClient = mongoClient; this.uri = uri; this.platform = ReplPlatform.CLI; @@ -112,13 +112,15 @@ class CliServiceProvider implements ServiceProvider { // eslint-disable-next-line no-empty } catch (e) { } + const connectInfo = getConnectInfo( - this.uri, + this.uri ? this.uri : '', version, buildInfo, cmdLineOpts, topology ); + return { buildInfo: buildInfo, topology: topology, From e3b81a2f26d140db3f7849f26afeff0d524b2661 Mon Sep 17 00:00:00 2001 From: Rhys Howell Date: Wed, 15 Jul 2020 13:16:24 +0200 Subject: [PATCH 2/4] Tweak uri optional syntax --- packages/service-provider-server/src/cli-service-provider.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/service-provider-server/src/cli-service-provider.ts b/packages/service-provider-server/src/cli-service-provider.ts index 7bb0f6753d..cef0f4d2e0 100644 --- a/packages/service-provider-server/src/cli-service-provider.ts +++ b/packages/service-provider-server/src/cli-service-provider.ts @@ -69,7 +69,7 @@ class CliServiceProvider implements ServiceProvider { } private readonly mongoClient: MongoClient; - private readonly uri: string | undefined; + private readonly uri?: string; /** * Instantiate a new CliServiceProvider with the Node driver's connected @@ -78,7 +78,7 @@ class CliServiceProvider implements ServiceProvider { * @param {MongoClient} mongoClient - The Node drivers' MongoClient instance. * @param {string} uri - optional URI for telemetry. */ - constructor(mongoClient: MongoClient, uri: string | undefined) { + constructor(mongoClient: MongoClient, uri?: string) { this.mongoClient = mongoClient; this.uri = uri; this.platform = ReplPlatform.CLI; From 412bfca079cab9c008374d9ae3ccce5452ab0c4b Mon Sep 17 00:00:00 2001 From: Rhys Howell Date: Wed, 15 Jul 2020 14:01:22 +0200 Subject: [PATCH 3/4] Add test for get connection info --- .../cli-service-provider.integration.spec.ts | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/packages/service-provider-server/src/cli-service-provider.integration.spec.ts b/packages/service-provider-server/src/cli-service-provider.integration.spec.ts index ed2d79f66e..30957fe5de 100644 --- a/packages/service-provider-server/src/cli-service-provider.integration.spec.ts +++ b/packages/service-provider-server/src/cli-service-provider.integration.spec.ts @@ -45,6 +45,36 @@ describe('CliServiceProvider [integration]', function() { }); }); + describe('.getConnectionInfo', () => { + context('when a uri has been passed', () => { + it('returns the connection\'s info', async() => { + const instance = new CliServiceProvider(client, connectionString); + const connectionInfo = await instance.getConnectionInfo(); + + expect(Object.keys(connectionInfo)).to.deep.equal([ + 'buildInfo', + 'topology', + 'extraInfo' + ]); + expect(connectionInfo.buildInfo.version.length > 1); + }); + }); + + context('when the optional uri has not been passed', () => { + it('returns the connection\'s info', async() => { + const instance = new CliServiceProvider(client); + const connectionInfo = await instance.getConnectionInfo(); + + expect(Object.keys(connectionInfo)).to.deep.equal([ + 'buildInfo', + 'topology', + 'extraInfo' + ]); + expect(connectionInfo.buildInfo.version.length > 1); + }); + }); + }); + describe('#aggregate', () => { context('when running against a collection', () => { let result; From d2c2a181ca8e06f8fb7e186dca01d2695600353a Mon Sep 17 00:00:00 2001 From: Rhys Howell Date: Wed, 15 Jul 2020 15:56:45 +0200 Subject: [PATCH 4/4] Add test for connect info with no url, add test script to service-provider-core --- packages/service-provider-core/package.json | 2 ++ .../src/connect-info.spec.ts | 25 +++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/packages/service-provider-core/package.json b/packages/service-provider-core/package.json index 0b3871d12c..c7b45335c9 100644 --- a/packages/service-provider-core/package.json +++ b/packages/service-provider-core/package.json @@ -14,6 +14,8 @@ "scripts": { "compile-ts": "tsc -p tsconfig.json", "prepublish": "npm run compile-ts", + "test": "mocha -r \"../../scripts/import-expansions.js\" --timeout 60000 --colors -r ts-node/register \"./src/**/*.spec.ts\"", + "test-ci": "mocha -r \"../../scripts/import-expansions.js\" --timeout 60000 -r ts-node/register \"./src/**/*.spec.ts\"", "lint": "eslint \"**/*.{js,ts,tsx}\"", "check": "npm run lint" }, diff --git a/packages/service-provider-core/src/connect-info.spec.ts b/packages/service-provider-core/src/connect-info.spec.ts index 0feec6e1f6..05279637ca 100644 --- a/packages/service-provider-core/src/connect-info.spec.ts +++ b/packages/service-provider-core/src/connect-info.spec.ts @@ -122,4 +122,29 @@ describe('getConnectInfo', function() { CMD_LINE_OPTS, TOPOLOGY_NO_CREDENTIALS)).to.deep.equal(output); }); + + it('reports correct information when an empty uri is passed', function() { + const output = { + is_atlas: false, + is_localhost: false, + server_version: '3.2.0-rc2', + mongosh_version: '0.0.6', + is_enterprise: true, + auth_type: 'LDAP', + is_data_lake: false, + dl_version: null, + is_genuine: true, + non_genuine_server_name: 'mongodb', + server_arch: 'x86_64', + node_version: process.version, + server_os: 'osx', + uri: '' + }; + expect(getConnectInfo( + '', + '0.0.6', + BUILD_INFO, + CMD_LINE_OPTS, + TOPOLOGY_WITH_CREDENTIALS)).to.deep.equal(output); + }); });