github.com/bingoohuang/gg@v0.0.0-20240325092523-45da7dee9335/pkg/dsn/dsn_test.go (about) 1 package dsn_test 2 3 import ( 4 "testing" 5 6 "github.com/bingoohuang/gg/pkg/dsn" 7 "github.com/stretchr/testify/assert" 8 ) 9 10 func TestParseFlag(t *testing.T) { 11 data := []struct { 12 Input string 13 Flag dsn.Flag 14 Fail bool 15 }{ 16 {Input: "user:pass@host", Flag: dsn.Flag{Username: "user", Password: "pass", Host: "host", Port: 0, Database: ""}}, 17 {Input: "user@host", Flag: dsn.Flag{Username: "user", Password: "", Host: "host", Port: 0, Database: ""}}, 18 {Input: "user/pass@host:3306", Flag: dsn.Flag{Username: "user", Password: "pass", Host: "host", Port: 3306, Database: ""}}, 19 {Input: "user/pass@host:3306/", Flag: dsn.Flag{Username: "user", Password: "pass", Host: "host", Port: 3306, Database: ""}}, 20 {Input: "user/pass@host:3306/mydb", Flag: dsn.Flag{Username: "user", Password: "pass", Host: "host", Port: 3306, Database: "mydb"}}, 21 {Input: "user:pass@host", Flag: dsn.Flag{Username: "user", Password: "pass", Host: "host", Port: 0, Database: ""}}, 22 {Input: "user:pass@host:3306/mydb", Flag: dsn.Flag{Username: "user", Password: "pass", Host: "host", Port: 3306, Database: "mydb"}}, 23 {Input: "user:p1:x2@y3@host:3306/mydb", Flag: dsn.Flag{Username: "user", Password: "p1:x2@y3", Host: "host", Port: 3306, Database: "mydb"}}, 24 25 {Input: "user/pass", Flag: dsn.Flag{}, Fail: true}, 26 {Input: "user/pass@", Flag: dsn.Flag{}, Fail: true}, 27 {Input: "user/pass@host:badport", Flag: dsn.Flag{}, Fail: true}, 28 } 29 30 for _, dat := range data { 31 f, err := dsn.ParseFlag(dat.Input) 32 assert.Equal(t, err != nil, dat.Fail) 33 if err == nil { 34 assert.Equal(t, *f, dat.Flag) 35 } 36 } 37 }