Skip to content

Commit 1e0317f

Browse files
committed
chore(deps): bump devtools-shared packages, add regression test for MONGOSH-1878
1 parent a1c1485 commit 1e0317f

File tree

12 files changed

+839
-122
lines changed

12 files changed

+839
-122
lines changed

package-lock.json

Lines changed: 591 additions & 108 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/arg-parser/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
"mongodb-connection-string-url": "^3.0.1"
4141
},
4242
"devDependencies": {
43-
"@mongodb-js/devtools-connect": "^3.3.0",
43+
"@mongodb-js/devtools-connect": "^3.3.3",
4444
"@mongodb-js/eslint-config-mongosh": "^1.0.0",
4545
"@mongodb-js/prettier-config-devtools": "^1.0.1",
4646
"@mongodb-js/tsconfig-mongosh": "^1.0.0",

packages/cli-repl/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@
6161
}
6262
},
6363
"dependencies": {
64-
"@mongodb-js/devtools-proxy-support": "^0.4.1",
64+
"@mongodb-js/devtools-proxy-support": "^0.4.2",
6565
"@mongosh/arg-parser": "0.0.0-dev.0",
6666
"@mongosh/autocomplete": "0.0.0-dev.0",
6767
"@mongosh/editor": "0.0.0-dev.0",

packages/e2e-tests/test/e2e-tls.spec.ts

Lines changed: 80 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { assert, expect } from 'chai';
1+
import { expect } from 'chai';
22
import { promises as fs } from 'fs';
33
import path from 'path';
44
import { startTestServer } from '../../../testing/integration-testing-hooks';
@@ -20,6 +20,10 @@ const INVALID_CLIENT_CERT = getCertPath('invalid-client.bundle.pem');
2020
const SERVER_KEY = getCertPath('server.bundle.pem');
2121
const SERVER_INVALIDHOST_KEY = getCertPath('server-invalidhost.bundle.pem');
2222
const CRL_INCLUDING_SERVER = getCertPath('ca-server.crl');
23+
const PARTIAL_TRUST_CHAIN_CA = getCertPath('partial-trust-chain/ca.pem');
24+
const PARTIAL_TRUST_CHAIN_KEY_AND_CERT = getCertPath(
25+
'partial-trust-chain/key-and-cert.pem'
26+
);
2327

2428
/**
2529
* @securityTest TLS End-to-End Tests
@@ -35,13 +39,19 @@ describe('e2e TLS', function () {
3539
const tmpdir = useTmpdir();
3640

3741
before(async function () {
38-
assert((await fs.stat(CA_CERT)).isFile());
39-
assert((await fs.stat(NON_CA_CERT)).isFile());
40-
assert((await fs.stat(CLIENT_CERT)).isFile());
41-
assert((await fs.stat(CLIENT_CERT_PFX)).isFile());
42-
assert((await fs.stat(INVALID_CLIENT_CERT)).isFile());
43-
assert((await fs.stat(SERVER_KEY)).isFile());
44-
assert((await fs.stat(CRL_INCLUDING_SERVER)).isFile());
42+
for (const file of [
43+
CA_CERT,
44+
NON_CA_CERT,
45+
CLIENT_CERT,
46+
CLIENT_CERT_PFX,
47+
INVALID_CLIENT_CERT,
48+
SERVER_KEY,
49+
CRL_INCLUDING_SERVER,
50+
PARTIAL_TRUST_CHAIN_CA,
51+
PARTIAL_TRUST_CHAIN_KEY_AND_CERT,
52+
]) {
53+
expect((await fs.stat(file)).isFile()).to.be.true;
54+
}
4555

4656
const homeInfo = setTemporaryHomeDirectory();
4757
homedir = homeInfo.homedir;
@@ -304,6 +314,68 @@ describe('e2e TLS', function () {
304314
}
305315
);
306316

317+
// Certificate fixtures and general concept mirrors
318+
// https://github.com/nodejs/node/blob/1b3420274ea8d8cca339a1f10301d2e80f577c4c/test/parallel/test-tls-client-allow-partial-trust-chain.js
319+
// This basically tests that we pass allowPartialTrustChain: true in the TLS options
320+
context(
321+
'connecting without client cert to server with only partial trust chain',
322+
function () {
323+
const server = startTestServer('e2e-tls-partial-trust-chain', {
324+
args: [
325+
'--tlsMode',
326+
'requireTLS',
327+
'--tlsCertificateKeyFile',
328+
PARTIAL_TRUST_CHAIN_KEY_AND_CERT,
329+
'--tlsAllowConnectionsWithoutCertificates',
330+
'--tlsCAFile',
331+
PARTIAL_TRUST_CHAIN_CA,
332+
],
333+
});
334+
335+
it('works with matching CA (connection string)', async function () {
336+
const shell = this.startTestShell({
337+
args: [
338+
await connectionStringWithLocalhost(server, {
339+
tls: 'true',
340+
tlsCAFile: PARTIAL_TRUST_CHAIN_KEY_AND_CERT,
341+
tlsAllowInvalidHostnames: 'true',
342+
}),
343+
],
344+
});
345+
const result = await shell.waitForPromptOrExit();
346+
expect(result.state).to.equal('prompt');
347+
});
348+
349+
it('works with matching CA (system certs)', async function () {
350+
//if (process.platform !== 'linux') {
351+
// return this.skip();
352+
//}
353+
await fs.mkdir(path.join(tmpdir.path, 'certs'), { recursive: true });
354+
await fs.copyFile(
355+
PARTIAL_TRUST_CHAIN_CA,
356+
path.join(tmpdir.path, 'certs', 'somefilename.crt')
357+
);
358+
359+
const shell = this.startTestShell({
360+
args: [
361+
await connectionStringWithLocalhost(server, {
362+
serverSelectionTimeoutMS: '1500',
363+
tlsAllowInvalidHostnames: 'true',
364+
}),
365+
'--tls',
366+
],
367+
env: {
368+
...env,
369+
SSL_CERT_FILE: path.join(tmpdir.path, 'certs', 'somefilename.crt'),
370+
},
371+
});
372+
373+
const prompt = await shell.waitForPromptOrExit();
374+
expect(prompt.state).to.equal('prompt');
375+
});
376+
}
377+
);
378+
307379
context('connecting with client cert to server with valid cert', function () {
308380
after(async function () {
309381
const shell = this.startTestShell({

packages/logging/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
"node": ">=14.15.1"
1818
},
1919
"dependencies": {
20-
"@mongodb-js/devtools-connect": "^3.3.0",
20+
"@mongodb-js/devtools-connect": "^3.3.3",
2121
"@mongosh/errors": "0.0.0-dev.0",
2222
"@mongosh/history": "0.0.0-dev.0",
2323
"@mongosh/types": "0.0.0-dev.0",

packages/service-provider-node-driver/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@
4747
}
4848
},
4949
"dependencies": {
50-
"@mongodb-js/devtools-connect": "^3.3.0",
50+
"@mongodb-js/devtools-connect": "^3.3.3",
5151
"@mongodb-js/oidc-plugin": "^1.1.1",
5252
"@mongosh/errors": "0.0.0-dev.0",
5353
"@mongosh/service-provider-core": "0.0.0-dev.0",

packages/snippet-manager/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
"unitTestsOnly": true
3636
},
3737
"dependencies": {
38-
"@mongodb-js/devtools-proxy-support": "^0.4.1",
38+
"@mongodb-js/devtools-proxy-support": "^0.4.2",
3939
"@mongosh/errors": "0.0.0-dev.0",
4040
"@mongosh/shell-api": "0.0.0-dev.0",
4141
"@mongosh/types": "0.0.0-dev.0",

packages/types/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
"unitTestsOnly": true
3939
},
4040
"dependencies": {
41-
"@mongodb-js/devtools-connect": "^3.3.0"
41+
"@mongodb-js/devtools-connect": "^3.3.3"
4242
},
4343
"devDependencies": {
4444
"@mongodb-js/eslint-config-mongosh": "^1.0.0",
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIDlDCCAnygAwIBAgIUFH02wcL3Qgben6tfIibXitsApCUwDQYJKoZIhvcNAQEL
3+
BQAwejELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMQswCQYDVQQHDAJTRjEPMA0G
4+
A1UECgwGSm95ZW50MRAwDgYDVQQLDAdOb2RlLmpzMQwwCgYDVQQDDANjYTExIDAe
5+
BgkqhkiG9w0BCQEWEXJ5QHRpbnljbG91ZHMub3JnMCAXDTIyMDkwMzIxNDAzN1oY
6+
DzIyOTYwNjE3MjE0MDM3WjB6MQswCQYDVQQGEwJVUzELMAkGA1UECAwCQ0ExCzAJ
7+
BgNVBAcMAlNGMQ8wDQYDVQQKDAZKb3llbnQxEDAOBgNVBAsMB05vZGUuanMxDDAK
8+
BgNVBAMMA2NhMzEgMB4GCSqGSIb3DQEJARYRcnlAdGlueWNsb3Vkcy5vcmcwggEi
9+
MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC76GtbMvRM7E1diL6l/Y4qQuDK
10+
ubmGWYOpz7kkUcApfJTa8gIhQvfvNdU/itpLIf1Nhmp9cDRk3BV6gU3P4SetVP+V
11+
x3PSiZ6MJDbQXETn7cLJIewtMexGf8wJldTJ3wcv6/1dZDU3RM3ME7XCgNGBXPOj
12+
c/TOz2StEGf4iwXKE7MHV0D2/hquOwuctqLjV969w8jea6BNqQjcKbq5Y17V4sxH
13+
AO+epbpC88byAaMgmRcqlM660zpKdcsfjQZ/4Vzoce9OOSd/+aHdwLZM3BVL6vAI
14+
09UqkaB+3M4n2pK6dPCQtimbaDyo7QZYgWpmp3/YDN1Hhh6IBoMoQqSu+/DFAgMB
15+
AAGjEDAOMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAJwGWU3qa5eT
16+
EEP/IXeZUJuZhqND+kBvBPPUYTeCXSbVRI2c6WaU7NZUqYkDz+lVrAMMG+eGPCW1
17+
8h8DehudZLNDvrz8uEPsYbgvZD+grFRmWh5kUdc2yz6gVVzTTGwy7ARgSoebUqK0
18+
O4uI8BW/UlF+OpGSpimMBnHqAq13k1Eb9kjckyZw2qIhW02mCsv9PnVQ8waDUq+C
19+
3No8ZoNqgQVVOFSuJz9wxGFPdt0KhizYMh0n+BP7U5srTn0LwWBEXoPsHBWhudTC
20+
NWYtx++OIWK/3QEufal83p2W3ICxAW3yqY7Qy03Z2LW07BDDdAmoFN9NTYuZKGd4
21+
DQYB7oHNx8E=
22+
-----END CERTIFICATE-----
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIDfDCCAmSgAwIBAgIUW3XXftx/tbf6nxQk2kxk+4Fdy94wDQYJKoZIhvcNAQEL
3+
BQAwejELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMQswCQYDVQQHDAJTRjEPMA0G
4+
A1UECgwGSm95ZW50MRAwDgYDVQQLDAdOb2RlLmpzMQwwCgYDVQQDDANjYTMxIDAe
5+
BgkqhkiG9w0BCQEWEXJ5QHRpbnljbG91ZHMub3JnMCAXDTIyMDkwMzIxNDAzN1oY
6+
DzIyOTYwNjE3MjE0MDM3WjB0MQswCQYDVQQGEwJIVTERMA8GA1UEBwwIQnVkYXBl
7+
c3QxETAPBgNVBAoMCFRyZXNvcml0MRYwFAYDVQQDDA3DgWTDoW0gTGlwcGFpMScw
8+
JQYJKoZIhvcNAQkBFhhhZGFtLmxpcHBhaUB0cmVzb3JpdC5jb20wggEiMA0GCSqG
9+
SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDL+3lXygi/1QUopZMz1aW6eMvhbCWfm8/F
10+
a8rkI6Rc+7LNEWdG37c2V/kgh+xRjFKuwRfh0BWX4xDo77asV2ejTaz6yI5DrSJO
11+
paQdcKxgH9xqFsG96U+ODoqykXYSfO9E5qweFDZVPlUky18Ofv1k+dxQBSDAKJe3
12+
e9MSt3jgQ0vD3ZQIl9A2TOfRVJIbYcm0EQthQxpZSMA15W5FTdjMc4wB3i5tanH6
13+
NdKYV5L0cWGiLXAXkRYGmj/iQMSHipSazEHJAmmixuBa1HLGdwaUFziQ6syI0I2x
14+
bBqJkyj2OhiNWTFcGWHoQP1DePDfqcF5MIfDej7mRwnaL3qD27cFAgMBAAEwDQYJ
15+
KoZIhvcNAQELBQADggEBAFhJ0t5egdr3Z2zWuYmM+YQzOeLaGtfTQST7H5W64Ckx
16+
OHwkYH1LjO5pGs+HGvbaA0DIocCB6fliWaf+kxUo7t+wyHr1Dnr5Po3ZvpHe6AU5
17+
i/J9bmFUk1oE28Ijgk8ktL77Lj8baihcaq1ca0o03zM16MEaA7eiT95ds2QDXgPL
18+
8hdCsOHiEOllspcYRl3uh1WQQjzLOZmCi4dZI+nuTQ2rviD0T5KYZYJY4nzTssEK
19+
yzfYeUUwUu14J1wYGTgTxKXAWjN0IkxFNq1hX6rC/2U819sVEYF8uWUp9dWJ1slT
20+
z09yT9qZWiF5tebRaRNL1al/IjWkmN39W9DGEFMX2Vk=
21+
-----END CERTIFICATE-----
22+
-----BEGIN CERTIFICATE-----
23+
MIIDlDCCAnygAwIBAgIUFH02wcL3Qgben6tfIibXitsApCUwDQYJKoZIhvcNAQEL
24+
BQAwejELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMQswCQYDVQQHDAJTRjEPMA0G
25+
A1UECgwGSm95ZW50MRAwDgYDVQQLDAdOb2RlLmpzMQwwCgYDVQQDDANjYTExIDAe
26+
BgkqhkiG9w0BCQEWEXJ5QHRpbnljbG91ZHMub3JnMCAXDTIyMDkwMzIxNDAzN1oY
27+
DzIyOTYwNjE3MjE0MDM3WjB6MQswCQYDVQQGEwJVUzELMAkGA1UECAwCQ0ExCzAJ
28+
BgNVBAcMAlNGMQ8wDQYDVQQKDAZKb3llbnQxEDAOBgNVBAsMB05vZGUuanMxDDAK
29+
BgNVBAMMA2NhMzEgMB4GCSqGSIb3DQEJARYRcnlAdGlueWNsb3Vkcy5vcmcwggEi
30+
MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC76GtbMvRM7E1diL6l/Y4qQuDK
31+
ubmGWYOpz7kkUcApfJTa8gIhQvfvNdU/itpLIf1Nhmp9cDRk3BV6gU3P4SetVP+V
32+
x3PSiZ6MJDbQXETn7cLJIewtMexGf8wJldTJ3wcv6/1dZDU3RM3ME7XCgNGBXPOj
33+
c/TOz2StEGf4iwXKE7MHV0D2/hquOwuctqLjV969w8jea6BNqQjcKbq5Y17V4sxH
34+
AO+epbpC88byAaMgmRcqlM660zpKdcsfjQZ/4Vzoce9OOSd/+aHdwLZM3BVL6vAI
35+
09UqkaB+3M4n2pK6dPCQtimbaDyo7QZYgWpmp3/YDN1Hhh6IBoMoQqSu+/DFAgMB
36+
AAGjEDAOMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAJwGWU3qa5eT
37+
EEP/IXeZUJuZhqND+kBvBPPUYTeCXSbVRI2c6WaU7NZUqYkDz+lVrAMMG+eGPCW1
38+
8h8DehudZLNDvrz8uEPsYbgvZD+grFRmWh5kUdc2yz6gVVzTTGwy7ARgSoebUqK0
39+
O4uI8BW/UlF+OpGSpimMBnHqAq13k1Eb9kjckyZw2qIhW02mCsv9PnVQ8waDUq+C
40+
3No8ZoNqgQVVOFSuJz9wxGFPdt0KhizYMh0n+BP7U5srTn0LwWBEXoPsHBWhudTC
41+
NWYtx++OIWK/3QEufal83p2W3ICxAW3yqY7Qy03Z2LW07BDDdAmoFN9NTYuZKGd4
42+
DQYB7oHNx8E=
43+
-----END CERTIFICATE-----

0 commit comments

Comments
 (0)