Files
im_server/server/db/mysql/adapter_dsn_test.go
T

58 lines
1.2 KiB
Go

//go:build mysql
// +build mysql
package mysql
import (
"encoding/json"
"strings"
"testing"
ms "github.com/go-sql-driver/mysql"
)
func TestNormalizeMySQLDSN(t *testing.T) {
tests := []struct {
name string
dsn string
user string
}{
{
name: "go driver dsn",
dsn: "root:secret@tcp(127.0.0.1:3306)/meeting_im?parseTime=true",
user: "root",
},
{
name: "url scheme dsn",
dsn: "mysql://root:secret@tcp(127.0.0.1:3306)/meeting_im?parseTime=true",
user: "root",
},
{
name: "legacy scheme dsn",
dsn: "mysql:root:secret@tcp(127.0.0.1:3306)/meeting_im?parseTime=true",
user: "root",
},
}
for _, tc := range tests {
t.Run(tc.name, func(t *testing.T) {
cfg, err := ms.ParseDSN(normalizeMySQLDSN(tc.dsn))
if err != nil {
t.Fatalf("ParseDSN failed: %v", err)
}
if cfg.User != tc.user {
t.Fatalf("user=%q, want %q", cfg.User, tc.user)
}
})
}
}
func TestOpenRejectsDeprecatedTinodeDatabase(t *testing.T) {
config := json.RawMessage(`{"dsn":"mysql://root:secret@tcp(127.0.0.1:3306)/tinode?parseTime=true"}`)
adp := &adapter{}
err := adp.Open(config)
if err == nil || !strings.Contains(err.Error(), "tinode is deprecated") {
t.Fatalf("Open() error = %v, want deprecated database error", err)
}
}