mydb/adapter/mysql/connection_test.go
2023-09-18 15:15:42 +08:00

118 lines
2.2 KiB
Go

package mysql
import (
"testing"
)
func TestConnectionURL(t *testing.T) {
c := ConnectionURL{}
// Zero value equals to an empty string.
if c.String() != "" {
t.Fatal(`Expecting default connectiong string to be empty, got:`, c.String())
}
// Adding a database name.
c.Database = "mydbname"
if c.String() != "/mydbname?charset=utf8&parseTime=true" {
t.Fatal(`Test failed, got:`, c.String())
}
// Adding an option.
c.Options = map[string]string{
"charset": "utf8mb4,utf8",
"sys_var": "esc@ped",
}
if c.String() != "/mydbname?charset=utf8mb4%2Cutf8&parseTime=true&sys_var=esc%40ped" {
t.Fatal(`Test failed, got:`, c.String())
}
// Setting default options
c.Options = nil
// Setting user and password.
c.User = "user"
c.Password = "pass"
if c.String() != `user:pass@/mydbname?charset=utf8&parseTime=true` {
t.Fatal(`Test failed, got:`, c.String())
}
// Setting host.
c.Host = "1.2.3.4:3306"
if c.String() != `user:pass@tcp(1.2.3.4:3306)/mydbname?charset=utf8&parseTime=true` {
t.Fatal(`Test failed, got:`, c.String())
}
// Setting socket.
c.Socket = "/path/to/socket"
if c.String() != `user:pass@unix(/path/to/socket)/mydbname?charset=utf8&parseTime=true` {
t.Fatal(`Test failed, got:`, c.String())
}
}
func TestParseConnectionURL(t *testing.T) {
var u ConnectionURL
var s string
var err error
s = "user:pass@unix(/path/to/socket)/mydbname?charset=utf8"
if u, err = ParseURL(s); err != nil {
t.Fatal(err)
}
if u.User != "user" {
t.Fatal("Expecting username.")
}
if u.Password != "pass" {
t.Fatal("Expecting password.")
}
if u.Socket != "/path/to/socket" {
t.Fatal("Expecting socket.")
}
if u.Database != "mydbname" {
t.Fatal("Expecting database.")
}
if u.Options["charset"] != "utf8" {
t.Fatal("Expecting charset.")
}
s = "user:pass@tcp(1.2.3.4:5678)/mydbname?charset=utf8"
if u, err = ParseURL(s); err != nil {
t.Fatal(err)
}
if u.User != "user" {
t.Fatal("Expecting username.")
}
if u.Password != "pass" {
t.Fatal("Expecting password.")
}
if u.Host != "1.2.3.4:5678" {
t.Fatal("Expecting host.")
}
if u.Database != "mydbname" {
t.Fatal("Expecting database.")
}
if u.Options["charset"] != "utf8" {
t.Fatal("Expecting charset.")
}
}