118 lines
2.2 KiB
Go
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.")
|
|
}
|
|
|
|
}
|