Skip to content
Snippets Groups Projects
Unverified Commit 89ffe406 authored by Tieu Philippe KHIM's avatar Tieu Philippe KHIM Committed by GitHub
Browse files

Fix/mongo srv connection string (#19114)

Generate correct connection string when srv is defined, including `authDb`

Default `authDb` to `admin` if not set
parent 2bf3b428
Branches
Tags
No related merge requests found
......@@ -12,7 +12,7 @@ driver:
- name: conn-uri
type: string
display-name: Paste your connection string
placeholder: 'mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?options]]'
placeholder: 'mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[dbname][?options]]'
required: true
- merge:
- port
......
......@@ -90,20 +90,17 @@
(defn- srv-conn-str
"Creates Mongo client connection string to connect using
DNS + SRV discovery mechanism."
[user pass host authdb]
(format "mongodb+srv://%s:%s@%s/%s" user pass host authdb))
[user pass host dbname authdb]
(format "mongodb+srv://%s:%s@%s/%s?authSource=%s" user pass host dbname authdb))
(defn- normalize-details [details]
(let [{:keys [dbname host port user pass ssl authdb tunnel-host tunnel-user tunnel-pass additional-options use-srv ssl-cert conn-uri]
:or {port 27017, pass "", ssl false, use-srv false, ssl-cert ""}} details
:or {port 27017, pass "", ssl false, use-srv false, ssl-cert "", authdb "admin"}} details
;; ignore empty :user and :pass strings
user (when (seq user)
user)
pass (when (seq pass)
pass)
authdb (if (seq authdb)
authdb
dbname)]
pass)]
{:host host
:port port
:user user
......@@ -135,8 +132,8 @@
(let [conn-opts (connection-options-builder :ssl? ssl, :additional-options additional-options, :ssl-cert ssl-cert)
authdb (if (seq authdb)
authdb
dbname)
conn-str (srv-conn-str user pass host authdb)]
"admin")
conn-str (srv-conn-str user pass host dbname authdb)]
{:type :srv
:uri (MongoClientURI. conn-str conn-opts)})))
......
......@@ -31,8 +31,8 @@
(deftest srv-conn-str-test
(testing "test srv connection string"
(is (= "mongodb+srv://test-user:test-pass@test-host.place.com/authdb"
(#'mongo-util/srv-conn-str "test-user" "test-pass" "test-host.place.com" "authdb")))))
(is (= "mongodb+srv://test-user:test-pass@test-host.place.com/datadb?authSource=authdb"
(#'mongo-util/srv-conn-str "test-user" "test-pass" "test-host.place.com" "datadb" "authdb")))))
(deftest srv-toggle-test
(testing "test that srv toggle works"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment