Smail/backend/config/ssl_management_test.go
smail 6ad6f449ca
Some checks are pending
Security Checks / security (push) Waiting to run
优化SSL证书三种管理模式
2026-09-07 15:49:25 +08:00

59 lines
2.2 KiB
Go

package config
import "testing"
func TestEffectiveSSLManagementSupportsThreeBusinessModes(t *testing.T) {
for _, test := range []struct {
name string
ssl SSLConfig
want string
}{
{name: "web_server", ssl: SSLConfig{Management: SSLManagementWebServer, Mode: ManagedSSLModeUpload}, want: SSLManagementWebServer},
{name: "project", ssl: SSLConfig{Management: SSLManagementProject, Mode: ManagedSSLModeDefault}, want: SSLManagementProject},
{name: "custom", ssl: SSLConfig{Management: SSLManagementCustom, Mode: ManagedSSLModeUpload}, want: SSLManagementCustom},
{name: "legacy_project", ssl: SSLConfig{Mode: "default"}, want: SSLManagementProject},
{name: "legacy_custom", ssl: SSLConfig{Mode: "custom"}, want: SSLManagementCustom},
} {
t.Run(test.name, func(t *testing.T) {
if got := EffectiveSSLManagement(test.ssl); got != test.want {
t.Fatalf("management = %q, want %q", got, test.want)
}
})
}
}
func TestValidateSSLManagementMatchesStorageMode(t *testing.T) {
valid := SSLConfig{
Management: SSLManagementProject,
Mode: ManagedSSLModeDefault,
DefaultDirectory: "config/ssl",
Challenge: SSLChallengeHTTP,
}
if err := validateSSL(valid); err != nil {
t.Fatalf("project managed SSL was rejected: %v", err)
}
valid.Management = SSLManagementWebServer
valid.Mode = ManagedSSLModeUpload
valid.CustomDirectory = "config/ssl"
if err := validateSSL(valid); err != nil {
t.Fatalf("web server managed SSL was rejected: %v", err)
}
valid.Management = SSLManagementCustom
if err := validateSSL(valid); err != nil {
t.Fatalf("custom managed SSL was rejected: %v", err)
}
// 管理责任切换时继续使用当前证书,待项目签发成功后再切换底层存储引用。
valid.Management = SSLManagementProject
if err := validateSSL(valid); err != nil {
t.Fatalf("project management rejected the existing certificate during transition: %v", err)
}
valid.Management = "unsupported"
if err := validateSSL(valid); err == nil {
t.Fatal("unsupported SSL management was accepted")
}
legacy := SSLConfig{Mode: "default", DefaultDirectory: "config/ssl"}
if err := validateSSL(legacy); err != nil {
t.Fatalf("legacy SSL configuration without management was rejected: %v", err)
}
}