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); + }); }); 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; diff --git a/packages/service-provider-server/src/cli-service-provider.ts b/packages/service-provider-server/src/cli-service-provider.ts index dfcb7c0ee1..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; + private readonly uri?: string; /** * Instantiate a new CliServiceProvider with the Node driver's connected @@ -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,