0c9f256dfc
对应体检报告 #10-#24,一次性完成 v1.1.0 全部 13 项: - #10 storage/cache/redis/jwt/logger 五组件 Manager 化(XxxManager + DefaultXxx + SetDefaultXxxManager,包级 facade 保留兼容) - #11 删除 wire 包 + 清理 StartServerWithPort/GracefulShutdown 双轨 - #12 Lifecycle Hooks(OnInit/OnStart/OnReady/OnStop) - #13 Server 参数配置化(timeout/TLS/unix_socket/response_mode) - #14 JWTConfig.Expire 改 time.Duration + 删 AppConfig.TokenExpire - #15 response Mode 开关(ModeBusiness/ModeREST) - #16 Config.Validate 启动期校验 - #17 livez/readyz 探针路由 - #18 Prometheus metrics 中间件 + /metrics - #19 请求级 Timeout 中间件 - #21 主库探活 + replica 健康剔除 - #22 App.Go + in-flight goroutine 管理 - #24 RequestID 默认装入 + #23 核对 Breaking:删 wire、删 TokenExpire、JWTConfig.Expire 类型变更、删双轨函数。 详见 CHANGELOG 升级说明。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
64 lines
1.5 KiB
Go
64 lines
1.5 KiB
Go
package config_test
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/EthanCodeCraft/xlgo-core/config"
|
|
)
|
|
|
|
func validBase() *config.Config {
|
|
return &config.Config{
|
|
Server: config.ServerConfig{Port: 8080},
|
|
}
|
|
}
|
|
|
|
func TestValidateOK(t *testing.T) {
|
|
if err := validBase().Validate(); err != nil {
|
|
t.Fatalf("unexpected error: %v", err)
|
|
}
|
|
}
|
|
|
|
func TestValidateServerPort(t *testing.T) {
|
|
c := validBase()
|
|
c.Server.Port = 99999
|
|
if err := c.Validate(); err == nil || !strings.Contains(err.Error(), "server.port") {
|
|
t.Fatalf("expected server.port error, got %v", err)
|
|
}
|
|
}
|
|
|
|
func TestValidateJWTSecretTooShort(t *testing.T) {
|
|
c := validBase()
|
|
c.JWT.Secret = "short"
|
|
if err := c.Validate(); err == nil || !strings.Contains(err.Error(), "jwt.secret") {
|
|
t.Fatalf("expected jwt.secret error, got %v", err)
|
|
}
|
|
}
|
|
|
|
func TestValidateJWTSecretAbsentSkipped(t *testing.T) {
|
|
c := validBase()
|
|
// secret 为空时不校验(未启用 jwt)
|
|
if err := c.Validate(); err != nil {
|
|
t.Fatalf("unexpected error: %v", err)
|
|
}
|
|
}
|
|
|
|
func TestValidateDatabaseMissingHost(t *testing.T) {
|
|
c := validBase()
|
|
c.Database.Driver = "mysql"
|
|
c.Database.Port = 3306
|
|
c.Database.Name = "db"
|
|
// Host 留空
|
|
if err := c.Validate(); err == nil || !strings.Contains(err.Error(), "database.host") {
|
|
t.Fatalf("expected database.host error, got %v", err)
|
|
}
|
|
}
|
|
|
|
func TestValidateTLSMissingCert(t *testing.T) {
|
|
c := validBase()
|
|
c.Server.TLS.Enabled = true
|
|
if err := c.Validate(); err == nil || !strings.Contains(err.Error(), "cert_file") {
|
|
t.Fatalf("expected tls cert_file error, got %v", err)
|
|
}
|
|
}
|