37 lines
1.1 KiB
Go
37 lines
1.1 KiB
Go
package config
|
|
|
|
import "testing"
|
|
|
|
func TestLegacyDatabasePortBoundaries(t *testing.T) {
|
|
for _, test := range []struct {
|
|
value string
|
|
want uint16
|
|
valid bool
|
|
}{
|
|
{value: "", want: 3306, valid: true},
|
|
{value: "1", want: 1, valid: true},
|
|
{value: "65535", want: 65535, valid: true},
|
|
{value: "0"},
|
|
{value: "-1"},
|
|
{value: "65536"},
|
|
{value: "18446744073709551616"},
|
|
{value: " 3306"},
|
|
} {
|
|
port, valid := parseLegacyDatabasePort(test.value, DefaultMySQLPort)
|
|
if port != test.want || valid != test.valid {
|
|
t.Fatalf("端口 %q 的解析结果错误:%d %t", test.value, port, valid)
|
|
}
|
|
}
|
|
for _, value := range []string{"0", "65536", "18446744073709551616"} {
|
|
if _, _, valid := parseLegacyMySQLDSN("smail:sample@tcp(db.example.test:" + value + ")/smail"); valid {
|
|
t.Fatal("MySQL 连接串接受了越界端口")
|
|
}
|
|
if _, _, valid := parseLegacyPostgreSQLDSN("postgres://smail:sample@db.example.test:" + value + "/smail"); valid {
|
|
t.Fatal("PostgreSQL 连接串接受了越界端口")
|
|
}
|
|
}
|
|
if _, valid := parseLegacyDatabasePort("", 0); valid {
|
|
t.Fatal("默认端口不能为零")
|
|
}
|
|
}
|