67 lines
2.0 KiB
Go
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)
|
|
}
|
|
}
|
|
}
|