feat: 建立 MySQL 8 数据库基础 (#78)

This commit is contained in:
chengma
2026-08-10 01:22:22 +08:00
parent 93bbca88a8
commit 7e74bf210d
12 changed files with 623 additions and 41 deletions
+29
View File
@@ -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 里"读文件 + 解析"这段逻辑。