feat: 建立 MySQL 8 数据库基础 (#78)
This commit is contained in:
@@ -7,6 +7,35 @@ import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestLoadDatabaseFromEnv_默认只连接本机3307且密码不泄露(t *testing.T) {
|
||||
t.Setenv(databaseHostEnv, "")
|
||||
t.Setenv(databasePortEnv, "")
|
||||
t.Setenv(databaseNameEnv, "cmautobuy_test")
|
||||
t.Setenv(databaseUserEnv, "cmautobuy_test")
|
||||
t.Setenv(databasePasswordEnv, "secret-do-not-print")
|
||||
|
||||
cfg, err := LoadDatabaseFromEnv()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if cfg.Host != "127.0.0.1" || cfg.Port != "3307" {
|
||||
t.Fatalf("默认地址应为线上同机 MySQL 8,实际 %s:%s", cfg.Host, cfg.Port)
|
||||
}
|
||||
if got := cfg.String(); strings.Contains(got, cfg.Password) || !strings.Contains(got, "****") {
|
||||
t.Fatalf("配置字符串泄露密码或没有打码:%s", got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestLoadDatabaseFromEnv_缺少必填项时只报变量名(t *testing.T) {
|
||||
t.Setenv(databaseNameEnv, "")
|
||||
t.Setenv(databaseUserEnv, "")
|
||||
t.Setenv(databasePasswordEnv, "")
|
||||
_, err := LoadDatabaseFromEnv()
|
||||
if err == nil || !strings.Contains(err.Error(), databasePasswordEnv) {
|
||||
t.Fatalf("应明确列出缺失变量,实际 %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
// loadFrom 是测试专用的小工具:把一段 YAML 文本写到临时目录里的
|
||||
// config.yaml,绕开 ConfigPath()(它依赖 os.Executable,测试环境里
|
||||
// 不可控),直接测 Load 里"读文件 + 解析"这段逻辑。
|
||||
|
||||
Reference in New Issue
Block a user