Skip to content

Commit 40e970b

Browse files
authored
feat(connection-form): use loose connection string validation (#2839)
* feat(connection-form): use loose connection string validation Use loose validation in the connection form UI. This allows editing in situations like when the URI contains no username but a password. * fixup: prettier * fixup: remove strict validation that prohibits editing into invalid state * fixup: do not allow saving invalid connection strings * fixup: prettier
1 parent bf56ef4 commit 40e970b

File tree

20 files changed

+139
-120
lines changed

20 files changed

+139
-120
lines changed

package-lock.json

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

packages/compass-connect/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@
106106
"mongodb-build-info": "^1.3.0",
107107
"mongodb-cloud-info": "^1.1.3",
108108
"mongodb-connection-model": "^21.13.0",
109-
"mongodb-connection-string-url": "^2.4.2",
109+
"mongodb-connection-string-url": "^2.5.2",
110110
"mongodb-data-service": "^21.17.0",
111111
"mongodb-runner": "^4.8.3",
112112
"mongodb-shell-to-url": "^0.1.0",

packages/compass-connections/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@
8484
"mocha": "^8.4.0",
8585
"mongodb-build-info": "^1.3.0",
8686
"mongodb-cloud-info": "^1.1.3",
87-
"mongodb-connection-string-url": "^2.4.2",
87+
"mongodb-connection-string-url": "^2.5.2",
8888
"mongodb-data-service": "^21.17.0",
8989
"nyc": "^15.1.0",
9090
"prettier": "2.3.2",

packages/compass-e2e-tests/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@
5656
"lodash": "^4.17.21",
5757
"mocha": "*",
5858
"mongodb": "^4.4.0",
59-
"mongodb-connection-string-url": "^2.4.2",
59+
"mongodb-connection-string-url": "^2.5.2",
6060
"mongodb-log-writer": "^1.1.4",
6161
"mongodb-runner": "^4.8.3",
6262
"prettier": "*",

packages/compass-export-to-language/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@
127127
"@mongodb-js/compass-logging": "^0.8.0",
128128
"@mongodb-js/mongodb-redux-common": "^1.9.0",
129129
"js-beautify": "^1.10.2",
130-
"mongodb-connection-string-url": "^2.4.2",
130+
"mongodb-connection-string-url": "^2.5.2",
131131
"react-select-plus": "^1.2.0",
132132
"redux-thunk": "^2.3.0"
133133
},

packages/compass-metrics/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@
123123
"lodash.values": "^4.3.0",
124124
"lodash.zipobject": "^4.1.3",
125125
"mongodb-cloud-info": "^1.1.3",
126-
"mongodb-connection-string-url": "^2.4.2"
126+
"mongodb-connection-string-url": "^2.5.1"
127127
},
128128
"homepage": "https://github.com/mongodb-js/compass",
129129
"bugs": {

packages/connection-form/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555
"@testing-library/react-hooks": "^7.0.2",
5656
"lodash": "^4.17.21",
5757
"mongodb-build-info": "^1.4.0",
58-
"mongodb-connection-string-url": "^2.4.2",
58+
"mongodb-connection-string-url": "^2.5.2",
5959
"react": "^16.14.0",
6060
"react-dom": "^16.14.0"
6161
},

packages/connection-form/src/components/advanced-options-tabs/advanced-options-tabs.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,9 @@ function AdvancedOptionsTabs({
7474

7575
const connectionStringUrl = useMemo(() => {
7676
try {
77-
return new ConnectionStringUrl(connectionOptions.connectionString);
77+
return new ConnectionStringUrl(connectionOptions.connectionString, {
78+
looseValidation: true,
79+
});
7880
} catch (e) {
7981
// Return default connection string url when can't be parsed.
8082
return new ConnectionStringUrl(defaultConnectionString);

packages/connection-form/src/components/advanced-options-tabs/authentication-tab/authentication-tab.spec.tsx

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ describe('AuthenticationTab Component', function () {
7676
});
7777
});
7878

79-
it('does not render the username/password tab when auth is set', function () {
79+
it('does not render the username/password tab when auth is not set', function () {
8080
renderComponent({
8181
connectionStringUrl: new ConnectionStringUrl('mongodb://localhost'),
8282
updateConnectionFormField: updateConnectionFormFieldSpy,
@@ -98,4 +98,18 @@ describe('AuthenticationTab Component', function () {
9898
expect(screen.getByLabelText('Username')).to.be.visible;
9999
expect(screen.getByLabelText('Password')).to.be.visible;
100100
});
101+
102+
it('renders the username/password tab when only password is set', function () {
103+
renderComponent({
104+
errors: [],
105+
connectionStringUrl: new ConnectionStringUrl(
106+
'mongodb://:b123@localhost',
107+
{ looseValidation: true }
108+
),
109+
updateConnectionFormField: updateConnectionFormFieldSpy,
110+
});
111+
112+
expect(screen.getByLabelText('Username')).to.be.visible;
113+
expect(screen.getByLabelText('Password')).to.be.visible;
114+
});
101115
});

packages/connection-form/src/components/connect-form.spec.tsx

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -58,11 +58,8 @@ describe('ConnectForm Component', function () {
5858
onSaveConnectionClicked={noop}
5959
/>
6060
);
61-
expect(
62-
screen.getByText(
63-
'Invalid scheme, expected connection string to start with "mongodb://" or "mongodb+srv://"'
64-
)
65-
).to.be.visible;
61+
expect(screen.getByText('Invalid connection string "pineapples"')).to.be
62+
.visible;
6663
});
6764

6865
it('should not show to save a connection when onSaveConnectionClicked doesnt exist', function () {

0 commit comments

Comments
 (0)