Skip to content

Commit ef11d09

Browse files
fix(cli-repl): persist custom appname MONGOSH-1015 (#1190)
* fix: persist custom appname MONGOSH-1015 * test: mapCliToDriver result always contains driverInfo * refactor: address pr comments * refactor: remove extra if for driverUri * test: skip set appname tests for api strict
1 parent e6e75b4 commit ef11d09

File tree

5 files changed

+184
-45
lines changed

5 files changed

+184
-45
lines changed

packages/cli-repl/src/arg-mapper.spec.ts

Lines changed: 125 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,22 @@ import chai, { expect } from 'chai';
33
import path from 'path';
44
import sinonChai from 'sinon-chai';
55
import sinon from 'ts-sinon';
6-
import mapCliToDriver, { applyTlsCertificateSelector } from './arg-mapper';
6+
import mapCliToDriver, { getTlsCertificateSelector } from './arg-mapper';
77
chai.use(sinonChai);
88

9+
const packageJSON = require('../package.json');
10+
911
describe('arg-mapper.mapCliToDriver', () => {
1012
context('when cli args have authenticationDatabase', () => {
1113
const cliOptions: CliOptions = { authenticationDatabase: 'authDb' };
1214

1315
it('maps to authSource', () => {
1416
expect(mapCliToDriver(cliOptions)).to.deep.equal({
15-
authSource: 'authDb'
17+
authSource: 'authDb',
18+
driverInfo: {
19+
name: 'mongosh',
20+
version: packageJSON.version
21+
}
1622
});
1723
});
1824
});
@@ -22,7 +28,11 @@ describe('arg-mapper.mapCliToDriver', () => {
2228

2329
it('maps to authMechanism', () => {
2430
expect(mapCliToDriver(cliOptions)).to.deep.equal({
25-
authMechanism: 'SCRAM-SHA-1'
31+
authMechanism: 'SCRAM-SHA-1',
32+
driverInfo: {
33+
name: 'mongosh',
34+
version: packageJSON.version
35+
}
2636
});
2737
});
2838
});
@@ -32,7 +42,11 @@ describe('arg-mapper.mapCliToDriver', () => {
3242

3343
it('maps to loggerLevel', () => {
3444
expect(mapCliToDriver(cliOptions)).to.deep.equal({
35-
loggerLevel: 'error'
45+
loggerLevel: 'error',
46+
driverInfo: {
47+
name: 'mongosh',
48+
version: packageJSON.version
49+
}
3650
});
3751
});
3852
});
@@ -42,7 +56,11 @@ describe('arg-mapper.mapCliToDriver', () => {
4256

4357
it('maps to loggerLevel', () => {
4458
expect(mapCliToDriver(cliOptions)).to.deep.equal({
45-
loggerLevel: 'debug'
59+
loggerLevel: 'debug',
60+
driverInfo: {
61+
name: 'mongosh',
62+
version: packageJSON.version
63+
}
4664
});
4765
});
4866
});
@@ -54,6 +72,10 @@ describe('arg-mapper.mapCliToDriver', () => {
5472
expect(mapCliToDriver(cliOptions)).to.deep.equal({
5573
auth: {
5674
username: 'richard'
75+
},
76+
driverInfo: {
77+
name: 'mongosh',
78+
version: packageJSON.version
5779
}
5880
});
5981
});
@@ -66,6 +88,10 @@ describe('arg-mapper.mapCliToDriver', () => {
6688
expect(mapCliToDriver(cliOptions)).to.deep.equal({
6789
auth: {
6890
password: 'aphextwin'
91+
},
92+
driverInfo: {
93+
name: 'mongosh',
94+
version: packageJSON.version
6995
}
7096
});
7197
});
@@ -79,6 +105,10 @@ describe('arg-mapper.mapCliToDriver', () => {
79105
auth: {
80106
username: 'richard',
81107
password: 'aphextwin'
108+
},
109+
driverInfo: {
110+
name: 'mongosh',
111+
version: packageJSON.version
82112
}
83113
});
84114
});
@@ -89,7 +119,11 @@ describe('arg-mapper.mapCliToDriver', () => {
89119

90120
it('maps the same argument', () => {
91121
expect(mapCliToDriver(cliOptions)).to.deep.equal({
92-
retryWrites: true
122+
retryWrites: true,
123+
driverInfo: {
124+
name: 'mongosh',
125+
version: packageJSON.version
126+
}
93127
});
94128
});
95129
});
@@ -99,7 +133,11 @@ describe('arg-mapper.mapCliToDriver', () => {
99133

100134
it('maps the same argument', () => {
101135
expect(mapCliToDriver(cliOptions)).to.deep.equal({
102-
tls: true
136+
tls: true,
137+
driverInfo: {
138+
name: 'mongosh',
139+
version: packageJSON.version
140+
}
103141
});
104142
});
105143
});
@@ -109,7 +147,11 @@ describe('arg-mapper.mapCliToDriver', () => {
109147

110148
it('maps the same argument', () => {
111149
expect(mapCliToDriver(cliOptions)).to.deep.equal({
112-
tlsAllowInvalidCertificates: true
150+
tlsAllowInvalidCertificates: true,
151+
driverInfo: {
152+
name: 'mongosh',
153+
version: packageJSON.version
154+
}
113155
});
114156
});
115157
});
@@ -119,7 +161,11 @@ describe('arg-mapper.mapCliToDriver', () => {
119161

120162
it('maps the same argument', () => {
121163
expect(mapCliToDriver(cliOptions)).to.deep.equal({
122-
tlsAllowInvalidHostnames: true
164+
tlsAllowInvalidHostnames: true,
165+
driverInfo: {
166+
name: 'mongosh',
167+
version: packageJSON.version
168+
}
123169
});
124170
});
125171
});
@@ -129,7 +175,11 @@ describe('arg-mapper.mapCliToDriver', () => {
129175

130176
it('maps the same argument', () => {
131177
expect(mapCliToDriver(cliOptions)).to.deep.equal({
132-
tlsCAFile: 'ca'
178+
tlsCAFile: 'ca',
179+
driverInfo: {
180+
name: 'mongosh',
181+
version: packageJSON.version
182+
}
133183
});
134184
});
135185
});
@@ -139,7 +189,11 @@ describe('arg-mapper.mapCliToDriver', () => {
139189

140190
it('maps to sslCRL', () => {
141191
expect(mapCliToDriver(cliOptions)).to.deep.equal({
142-
sslCRL: 'key'
192+
sslCRL: 'key',
193+
driverInfo: {
194+
name: 'mongosh',
195+
version: packageJSON.version
196+
}
143197
});
144198
});
145199
});
@@ -149,7 +203,11 @@ describe('arg-mapper.mapCliToDriver', () => {
149203

150204
it('maps the same argument', () => {
151205
expect(mapCliToDriver(cliOptions)).to.deep.equal({
152-
tlsCertificateKeyFile: 'key'
206+
tlsCertificateKeyFile: 'key',
207+
driverInfo: {
208+
name: 'mongosh',
209+
version: packageJSON.version
210+
}
153211
});
154212
});
155213
});
@@ -159,7 +217,11 @@ describe('arg-mapper.mapCliToDriver', () => {
159217

160218
it('maps the same argument', () => {
161219
expect(mapCliToDriver(cliOptions)).to.deep.equal({
162-
tlsCertificateKeyFilePassword: 'pw'
220+
tlsCertificateKeyFilePassword: 'pw',
221+
driverInfo: {
222+
name: 'mongosh',
223+
version: packageJSON.version
224+
}
163225
});
164226
});
165227
});
@@ -175,6 +237,10 @@ describe('arg-mapper.mapCliToDriver', () => {
175237
accessKeyId: 'awskey'
176238
}
177239
}
240+
},
241+
driverInfo: {
242+
name: 'mongosh',
243+
version: packageJSON.version
178244
}
179245
});
180246
});
@@ -191,6 +257,10 @@ describe('arg-mapper.mapCliToDriver', () => {
191257
secretAccessKey: 'secretkey'
192258
}
193259
}
260+
},
261+
driverInfo: {
262+
name: 'mongosh',
263+
version: packageJSON.version
194264
}
195265
});
196266
});
@@ -203,6 +273,10 @@ describe('arg-mapper.mapCliToDriver', () => {
203273
expect(mapCliToDriver(cliOptions)).to.deep.equal({
204274
authMechanismProperties: {
205275
AWS_SESSION_TOKEN: 'token'
276+
},
277+
driverInfo: {
278+
name: 'mongosh',
279+
version: packageJSON.version
206280
}
207281
});
208282
});
@@ -215,6 +289,10 @@ describe('arg-mapper.mapCliToDriver', () => {
215289
expect(mapCliToDriver(cliOptions)).to.deep.equal({
216290
authMechanismProperties: {
217291
SERVICE_NAME: 'alternate'
292+
},
293+
driverInfo: {
294+
name: 'mongosh',
295+
version: packageJSON.version
218296
}
219297
});
220298
});
@@ -227,6 +305,10 @@ describe('arg-mapper.mapCliToDriver', () => {
227305
expect(mapCliToDriver(cliOptions)).to.deep.equal({
228306
authMechanismProperties: {
229307
SERVICE_REALM: 'REALM.COM'
308+
},
309+
driverInfo: {
310+
name: 'mongosh',
311+
version: packageJSON.version
230312
}
231313
});
232314
});
@@ -237,7 +319,12 @@ describe('arg-mapper.mapCliToDriver', () => {
237319
const cliOptions: CliOptions = { sspiHostnameCanonicalization: 'none' };
238320

239321
it('is not mapped to authMechanismProperties', () => {
240-
expect(mapCliToDriver(cliOptions)).to.deep.equal({});
322+
expect(mapCliToDriver(cliOptions)).to.deep.equal({
323+
driverInfo: {
324+
name: 'mongosh',
325+
version: packageJSON.version
326+
}
327+
});
241328
});
242329
});
243330

@@ -248,6 +335,10 @@ describe('arg-mapper.mapCliToDriver', () => {
248335
expect(mapCliToDriver(cliOptions)).to.deep.equal({
249336
authMechanismProperties: {
250337
gssapiCanonicalizeHostName: 'true'
338+
},
339+
driverInfo: {
340+
name: 'mongosh',
341+
version: packageJSON.version
251342
}
252343
});
253344
});
@@ -275,6 +366,10 @@ describe('arg-mapper.mapCliToDriver', () => {
275366
expect(mapCliToDriver(cliOptions)).to.deep.equal({
276367
autoEncryption: {
277368
keyVaultNamespace: 'db.datakeys'
369+
},
370+
driverInfo: {
371+
name: 'mongosh',
372+
version: packageJSON.version
278373
}
279374
});
280375
});
@@ -297,6 +392,10 @@ describe('arg-mapper.mapCliToDriver', () => {
297392
secretAccessKey: 'secretkey'
298393
}
299394
}
395+
},
396+
driverInfo: {
397+
name: 'mongosh',
398+
version: packageJSON.version
300399
}
301400
});
302401
});
@@ -315,6 +414,10 @@ describe('arg-mapper.mapCliToDriver', () => {
315414
strict: true,
316415
deprecationErrors: true,
317416
version: '1'
417+
},
418+
driverInfo: {
419+
name: 'mongosh',
420+
version: packageJSON.version
318421
}
319422
});
320423
});
@@ -336,16 +439,13 @@ describe('arg-mapper.applyTlsCertificateSelector', () => {
336439
});
337440

338441
it('leaves node options unchanged when no selector is given', () => {
339-
const options = {};
340-
applyTlsCertificateSelector(undefined, options);
341-
expect(options).to.deep.equal({});
442+
const applyTlsCertificateSelector = getTlsCertificateSelector(undefined);
443+
expect(applyTlsCertificateSelector).to.not.exist;
342444
});
343445

344446
it('throws when the selector has an odd format', () => {
345-
const options = {};
346-
expect(() => applyTlsCertificateSelector('foo=bar', options))
447+
expect(() => getTlsCertificateSelector('foo=bar'))
347448
.to.throw(/tlsCertificateSelector needs to include subject or thumbprint/);
348-
expect(options).to.deep.equal({});
349449
});
350450

351451
it('returns passphrase and pfx as given by the (fake) OS', () => {
@@ -354,9 +454,8 @@ describe('arg-mapper.applyTlsCertificateSelector', () => {
354454
exportCertificateAndPrivateKey.returns({
355455
passphrase, pfx
356456
});
357-
const options = {};
358-
applyTlsCertificateSelector('subject=Foo Bar', options);
359-
expect(options).to.deep.equal({
457+
const applyTlsCertificateSelector = getTlsCertificateSelector('subject=Foo Bar');
458+
expect(applyTlsCertificateSelector).to.deep.equal({
360459
passphrase, pfx
361460
});
362461
});
@@ -367,26 +466,23 @@ describe('arg-mapper.applyTlsCertificateSelector', () => {
367466
if (process.platform === 'win32' || process.platform === 'darwin') {
368467
return this.skip();
369468
}
370-
const options = {};
371-
expect(() => applyTlsCertificateSelector('subject=Foo Bar', options))
469+
expect(() => getTlsCertificateSelector('subject=Foo Bar'))
372470
.to.throw(/tlsCertificateSelector is not supported on this platform/);
373471
});
374472

375473
it('tries to search the OS CA store on win32', function() {
376474
if (process.platform !== 'win32') {
377475
return this.skip();
378476
}
379-
const options = {};
380-
expect(() => applyTlsCertificateSelector('subject=Foo Bar', options))
477+
expect(() => getTlsCertificateSelector('subject=Foo Bar'))
381478
.to.throw(/Could not resolve certificate specification/);
382479
});
383480

384481
it('tries to search the OS keychain on darwin', function() {
385482
if (process.platform !== 'darwin') {
386483
return this.skip();
387484
}
388-
const options = {};
389-
expect(() => applyTlsCertificateSelector('subject=Foo Bar', options))
485+
expect(() => getTlsCertificateSelector('subject=Foo Bar'))
390486
.to.throw(/Could not find a matching certificate/);
391487
});
392488
});

0 commit comments

Comments
 (0)