1
0
Files
nex/backend/cmd/desktop/startup_error_test.go

41 lines
1.3 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package main
import (
"errors"
"strings"
"testing"
)
func TestStartupErrorContainsPhaseAndCause(t *testing.T) {
cause := errors.New("底层失败")
err := newStartupError(phaseDatabase, "数据库初始化失败", cause)
if err.Phase() != "database" {
t.Fatalf("phase = %q, want database", err.Phase())
}
if !errors.Is(err, cause) {
t.Fatal("startupError 应保留底层 cause")
}
if !strings.Contains(err.Error(), "database") {
t.Fatalf("错误字符串应包含 phase实际: %s", err.Error())
}
}
func TestStartupErrorRedactsSensitiveUserMessage(t *testing.T) {
message := "数据库初始化失败: nex:secret@tcp(localhost:3306)/nex password=secret api_key=sk-test"
err := newStartupError(phaseDatabase, message, errors.New("cause password=secret api_key=sk-test"))
userMessage := err.UserMessage()
for _, secret := range []string{"secret", "sk-test"} {
if strings.Contains(userMessage, secret) {
t.Fatalf("用户提示不应包含敏感信息 %q实际: %s", secret, userMessage)
}
if strings.Contains(err.Error(), secret) {
t.Fatalf("日志错误字符串不应包含敏感信息 %q实际: %s", secret, err.Error())
}
}
if !strings.Contains(userMessage, "<redacted>") {
t.Fatalf("用户提示应包含脱敏占位符,实际: %s", userMessage)
}
}