Files
goauto/server/config/extend_settings_test.go
T

67 lines
2.0 KiB
Go

package config
import (
"os"
"testing"
"gopkg.in/yaml.v2"
)
// settings.yml 里的 extend.syb 必须真的能绑进 ExtConfig.SYB。
//
// yaml.v2 默认把字段名整体小写当作键名(BaseURL -> baseurl),大小写或拼写
// 一错,配置会静默地保持零值——服务照常启动,直到真去调顺云宝才报一个
// 看不出原因的错。这里直接拿仓库里真实的 settings.yml 校验绑定。
func TestSYBSettingsInRepoBindToExtendStruct(t *testing.T) {
raw, err := os.ReadFile("settings.yml")
if err != nil {
t.Fatalf("读取 settings.yml 失败: %v", err)
}
var file struct {
Settings struct {
Extend Extend `yaml:"extend"`
} `yaml:"settings"`
}
if err := yaml.Unmarshal(raw, &file); err != nil {
t.Fatalf("解析 settings.yml 失败: %v", err)
}
syb := file.Settings.Extend.SYB
if syb.BaseURL != "https://www.shunyunbaoerp.com" {
t.Fatalf("baseurl 没有绑定成功: %q", syb.BaseURL)
}
if syb.PageSize != 50 {
t.Fatalf("pagesize 没有绑定成功: %d", syb.PageSize)
}
if syb.MaxMatches != 10000 {
t.Fatalf("maxmatches 没有绑定成功: %d", syb.MaxMatches)
}
if syb.OcrURL == "" {
t.Fatal("ocrurl 没有绑定成功")
}
if syb.OcrMaxAttempts != 5 {
t.Fatalf("ocrmaxattempts 没有绑定成功: %d", syb.OcrMaxAttempts)
}
}
// `[必须]` 被 Git 跟踪的配置文件里不得出现顺云宝账号密码字段。
func TestSettingsFilesCarryNoSYBCredentials(t *testing.T) {
for _, name := range []string{"settings.yml", "settings.full.yml", "settings.demo.yml", "settings.sqlite.yml"} {
raw, err := os.ReadFile(name)
if err != nil {
continue
}
var file struct {
Settings struct {
Extend Extend `yaml:"extend"`
} `yaml:"settings"`
}
if err := yaml.Unmarshal(raw, &file); err != nil {
t.Fatalf("%s 解析失败: %v", name, err)
}
if file.Settings.Extend.SYB.Username != "" || file.Settings.Extend.SYB.Password != "" {
t.Fatalf("%s 里出现了顺云宝凭据,凭据必须走环境变量", name)
}
}
}