mirror of
https://github.com/TECHNOFAB11/dbmate.git
synced 2025-12-11 23:50:04 +01:00
parent
ece2c3c122
commit
08022422d4
2 changed files with 13 additions and 1 deletions
|
|
@ -52,7 +52,7 @@ func connectionString(u *url.URL) string {
|
|||
|
||||
// Get decoded user:pass
|
||||
userPassEncoded := u.User.String()
|
||||
userPass, _ := url.QueryUnescape(userPassEncoded)
|
||||
userPass, _ := url.PathUnescape(userPassEncoded)
|
||||
|
||||
// Build DSN w/ user:pass percent-decoded
|
||||
normalizedString := ""
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@ func TestConnectionString(t *testing.T) {
|
|||
require.Equal(t, "duhfsd7s:123!@123!@@tcp(host:123)/foo?flag=on&multiStatements=true", s)
|
||||
})
|
||||
|
||||
t.Run("url encoding", func(t *testing.T) {
|
||||
u, err := url.Parse("mysql://bob%2Balice:secret%5E%5B%2A%28%29@host:123/foo")
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, "bob+alice:secret%5E%5B%2A%28%29", u.User.String())
|
||||
require.Equal(t, "123", u.Port())
|
||||
|
||||
s := connectionString(u)
|
||||
// ensure that '+' is correctly encoded by url.PathUnescape as '+'
|
||||
// (not whitespace as url.QueryUnescape generates)
|
||||
require.Equal(t, "bob+alice:secret^[*()@tcp(host:123)/foo?multiStatements=true", s)
|
||||
})
|
||||
|
||||
t.Run("socket", func(t *testing.T) {
|
||||
// test with no user/pass
|
||||
u, err := url.Parse("mysql:///foo?socket=/var/run/mysqld/mysqld.sock&flag=on")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue