package common import ( "fmt" "testing" "github.com/perfect-panel/server/internal/config" "github.com/perfect-panel/server/internal/svc" "github.com/perfect-panel/server/pkg/constant" "github.com/stretchr/testify/assert" ) func TestSendEmailCodeLogic_DeleteAccountContent(t *testing.T) { // 这是一个模拟测试,主要展示逻辑判断是否正确 // 实际运行需要 Mock Redis 和 asynq _ = &SendEmailCodeLogic{ svcCtx: &svc.ServiceContext{ Config: config.Config{ VerifyCode: config.VerifyCode{ExpireTime: 900}, Site: config.SiteConfig{ SiteLogo: "logo.png", SiteName: "PPanel", }, }, }, } code := "123456" expireMinutes := 15 // 模拟逻辑中的覆盖逻辑 // 注意:这里我们不能直接测试 SendEmailCode 函数(因为它依赖 Redis/Asynq), // 但我们可以验证我们写的覆盖逻辑片段是否符合预期。 taskPayloadSubject := "Verification code" taskPayloadContent := map[string]interface{}{ "Type": uint8(4), "SiteLogo": "logo.png", "SiteName": "PPanel", "Expire": expireMinutes, "Code": code, } // 触发我们的逻辑 if constant.ParseVerifyType(uint8(4)) == constant.DeleteAccount { taskPayloadSubject = "注销账号验证" taskPayloadContent["Content"] = fmt.Sprintf("您正在申请注销账号,验证码为:%s,有效期 %d 分钟。如非本人操作,请忽略。", code, expireMinutes) } assert.Equal(t, "注销账号验证", taskPayloadSubject) assert.Contains(t, taskPayloadContent["Content"].(string), "注销账号") assert.Contains(t, taskPayloadContent["Content"].(string), code) }