@@ -26,14 +26,15 @@ import (
2626func 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}
0 commit comments