2025-11-28 23:30:49 +08:00
|
|
|
package email
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"carrotskin/pkg/config"
|
2025-12-24 16:03:46 +08:00
|
|
|
"sync"
|
2025-11-28 23:30:49 +08:00
|
|
|
"testing"
|
|
|
|
|
|
|
|
|
|
"go.uber.org/zap/zaptest"
|
|
|
|
|
)
|
|
|
|
|
|
2025-12-24 16:03:46 +08:00
|
|
|
func resetEmail() {
|
|
|
|
|
serviceInstance = nil
|
|
|
|
|
once = sync.Once{}
|
|
|
|
|
}
|
|
|
|
|
|
2025-11-28 23:30:49 +08:00
|
|
|
// TestGetService_NotInitialized 测试未初始化时获取邮件服务
|
|
|
|
|
func TestGetService_NotInitialized(t *testing.T) {
|
2025-12-24 16:03:46 +08:00
|
|
|
resetEmail()
|
2025-11-28 23:30:49 +08:00
|
|
|
_, err := GetService()
|
|
|
|
|
if err == nil {
|
|
|
|
|
t.Error("未初始化时应该返回错误")
|
|
|
|
|
}
|
2025-12-24 16:03:46 +08:00
|
|
|
|
2025-11-28 23:30:49 +08:00
|
|
|
expectedError := "邮件服务未初始化,请先调用 email.Init()"
|
|
|
|
|
if err.Error() != expectedError {
|
|
|
|
|
t.Errorf("错误消息 = %q, want %q", err.Error(), expectedError)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// TestMustGetService_Panic 测试MustGetService在未初始化时panic
|
|
|
|
|
func TestMustGetService_Panic(t *testing.T) {
|
2025-12-24 16:03:46 +08:00
|
|
|
resetEmail()
|
2025-11-28 23:30:49 +08:00
|
|
|
defer func() {
|
|
|
|
|
if r := recover(); r == nil {
|
|
|
|
|
t.Error("MustGetService 应该在未初始化时panic")
|
|
|
|
|
}
|
|
|
|
|
}()
|
2025-12-24 16:03:46 +08:00
|
|
|
|
2025-11-28 23:30:49 +08:00
|
|
|
_ = MustGetService()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// TestInit_Email 测试邮件服务初始化
|
|
|
|
|
func TestInit_Email(t *testing.T) {
|
2025-12-24 16:03:46 +08:00
|
|
|
resetEmail()
|
2025-11-28 23:30:49 +08:00
|
|
|
cfg := config.EmailConfig{
|
|
|
|
|
Enabled: false,
|
2025-12-24 16:03:46 +08:00
|
|
|
SMTPHost: "smtp.example.com",
|
|
|
|
|
SMTPPort: 587,
|
|
|
|
|
Username: "user@example.com",
|
|
|
|
|
Password: "password",
|
|
|
|
|
FromName: "noreply@example.com",
|
2025-11-28 23:30:49 +08:00
|
|
|
}
|
2025-12-24 16:03:46 +08:00
|
|
|
|
2025-11-28 23:30:49 +08:00
|
|
|
logger := zaptest.NewLogger(t)
|
2025-12-24 16:03:46 +08:00
|
|
|
|
2025-11-28 23:30:49 +08:00
|
|
|
err := Init(cfg, logger)
|
|
|
|
|
if err != nil {
|
|
|
|
|
t.Errorf("Init() 错误 = %v, want nil", err)
|
|
|
|
|
}
|
2025-12-24 16:03:46 +08:00
|
|
|
|
2025-11-28 23:30:49 +08:00
|
|
|
// 验证可以获取服务
|
|
|
|
|
service, err := GetService()
|
|
|
|
|
if err != nil {
|
|
|
|
|
t.Errorf("GetService() 错误 = %v, want nil", err)
|
|
|
|
|
}
|
|
|
|
|
if service == nil {
|
|
|
|
|
t.Error("GetService() 返回的服务不应为nil")
|
|
|
|
|
}
|
|
|
|
|
}
|