Skip to content

Commit 83a9cdf

Browse files
authored
PMM-11844: fix setting auth props (#640)
1 parent bed531b commit 83a9cdf

File tree

4 files changed

+31
-9
lines changed

4 files changed

+31
-9
lines changed

exporter/dsn_fix/dsn_fix.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ import (
2525
// ClientOptionsForDSN applies URI to Client.
2626
func ClientOptionsForDSN(dsn string) (*options.ClientOptions, error) {
2727
clientOptions := options.Client().ApplyURI(dsn)
28+
if e := clientOptions.Validate(); e != nil {
29+
return nil, e
30+
}
2831

2932
// Workaround for PMM-9320
3033
// if username or password is set, need to replace it with correctly parsed credentials.
@@ -36,7 +39,8 @@ func ClientOptionsForDSN(dsn string) (*options.ClientOptions, error) {
3639
username := parsedDsn.User.Username()
3740
password, _ := parsedDsn.User.Password()
3841
if username != "" || password != "" {
39-
clientOptions = clientOptions.SetAuth(options.Credential{Username: username, Password: password})
42+
clientOptions.Auth.Username = username
43+
clientOptions.Auth.Password = password
4044
}
4145

4246
return clientOptions, nil

exporter/dsn_fix/dsn_fix_test.go

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,15 @@ import (
2626
func TestClientOptionsForDSN(t *testing.T) {
2727
tests := []struct {
2828
name string
29+
error string
2930
dsn string
3031
expectedUser string
3132
expectedPassword string
3233
}{
3334
{
3435
name: "Escape username",
3536
dsn: (&url.URL{
36-
Scheme: "mongo",
37+
Scheme: "mongodb",
3738
Host: "localhost",
3839
Path: "/db",
3940
User: url.UserPassword("user+", "pass"),
@@ -44,21 +45,37 @@ func TestClientOptionsForDSN(t *testing.T) {
4445
{
4546
name: "Escape password",
4647
dsn: (&url.URL{
47-
Scheme: "mongo",
48+
Scheme: "mongodb",
4849
Host: "localhost",
4950
Path: "/db",
5051
User: url.UserPassword("user", "pass+"),
5152
}).String(),
5253
expectedUser: "user",
5354
expectedPassword: "pass+",
5455
},
56+
{
57+
name: "Invalid URI",
58+
dsn: (&url.URL{
59+
Scheme: "<invalid>",
60+
Host: "localhost",
61+
Path: "/db",
62+
User: url.UserPassword("user", "pass+"),
63+
}).String(),
64+
error: "error parsing uri: scheme must be \"mongodb\" or \"mongodb+srv\"",
65+
expectedUser: "user",
66+
expectedPassword: "pass+",
67+
},
5568
}
5669
for _, tt := range tests {
5770
t.Run(tt.name, func(t *testing.T) {
5871
got, err := ClientOptionsForDSN(tt.dsn)
59-
assert.Nil(t, err)
60-
assert.Equal(t, got.Auth.Username, tt.expectedUser)
61-
assert.Equal(t, got.Auth.Password, tt.expectedPassword)
72+
if tt.error != "" {
73+
assert.Equal(t, err.Error(), tt.error)
74+
} else {
75+
assert.Empty(t, err)
76+
assert.Equal(t, got.Auth.Username, tt.expectedUser)
77+
assert.Equal(t, got.Auth.Password, tt.expectedPassword)
78+
}
6279
})
6380
}
6481
}

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ require (
2121
github.com/shirou/gopsutil v3.21.8+incompatible // indirect
2222
github.com/sirupsen/logrus v1.9.0
2323
github.com/stretchr/testify v1.8.1
24-
go.mongodb.org/mongo-driver v1.10.3
24+
go.mongodb.org/mongo-driver v1.11.3
2525
)
2626

2727
require (

go.sum

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,7 @@ github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47e
163163
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
164164
github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
165165
github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
166+
github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
166167
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
167168
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
168169
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
@@ -257,8 +258,8 @@ github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7Jul
257258
github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
258259
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
259260
github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
260-
go.mongodb.org/mongo-driver v1.10.3 h1:XDQEvmh6z1EUsXuIkXE9TaVeqHw6SwS1uf93jFs0HBA=
261-
go.mongodb.org/mongo-driver v1.10.3/go.mod h1:z4XpeoU6w+9Vht+jAFyLgVrD+jGSQQe0+CBWFHNiHt8=
261+
go.mongodb.org/mongo-driver v1.11.3 h1:Ql6K6qYHEzB6xvu4+AU0BoRoqf9vFPcc4o7MUIdPW8Y=
262+
go.mongodb.org/mongo-driver v1.11.3/go.mod h1:PTSz5yu21bkT/wXpkS7WR5f0ddqw5quethTUn9WM+2g=
262263
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
263264
go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
264265
go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=

0 commit comments

Comments
 (0)