//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) } }