MCPcopy
hub / github.com/go-sql-driver/mysql / TestBeforeConnect

Function TestBeforeConnect

driver_test.go:2067–2099  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

2065}
2066
2067func TestBeforeConnect(t *testing.T) {
2068 if !available {
2069 t.Skipf("MySQL server not running on %s", netAddr)
2070 }
2071
2072 // dbname is set in the BeforeConnect handle
2073 cfg, err := ParseDSN(fmt.Sprintf("%s:%s@%s/%s?timeout=30s", user, pass, netAddr, "_"))
2074 if err != nil {
2075 t.Fatalf("error parsing DSN: %v", err)
2076 }
2077
2078 cfg.Apply(BeforeConnect(func(ctx context.Context, c *Config) error {
2079 c.DBName = dbname
2080 return nil
2081 }))
2082
2083 connector, err := NewConnector(cfg)
2084 if err != nil {
2085 t.Fatalf("error creating connector: %v", err)
2086 }
2087
2088 db := sql.OpenDB(connector)
2089 defer db.Close()
2090
2091 var connectedDb string
2092 err = db.QueryRow("SELECT DATABASE();").Scan(&connectedDb)
2093 if err != nil {
2094 t.Fatalf("error executing query: %v", err)
2095 }
2096 if connectedDb != dbname {
2097 t.Fatalf("expected to connect to DB %s, but connected to %s instead", dbname, connectedDb)
2098 }
2099}
2100
2101func TestSQLInjection(t *testing.T) {
2102 createTest := func(arg string) func(dbt *DBTest) {

Callers

nothing calls this directly

Calls 6

ParseDSNFunction · 0.85
BeforeConnectFunction · 0.85
NewConnectorFunction · 0.85
ApplyMethod · 0.80
ScanMethod · 0.80
CloseMethod · 0.45

Tested by

no test coverage detected