134 lines
2.7 KiB
Go
134 lines
2.7 KiB
Go
|
|
package handler
|
|||
|
|
|
|||
|
|
import (
|
|||
|
|
"testing"
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
// TestCaptchaHandler_RequestValidation 测试验证码请求验证逻辑
|
|||
|
|
func TestCaptchaHandler_RequestValidation(t *testing.T) {
|
|||
|
|
tests := []struct {
|
|||
|
|
name string
|
|||
|
|
captchaID string
|
|||
|
|
dx int
|
|||
|
|
wantValid bool
|
|||
|
|
}{
|
|||
|
|
{
|
|||
|
|
name: "有效的请求参数",
|
|||
|
|
captchaID: "captcha-123",
|
|||
|
|
dx: 100,
|
|||
|
|
wantValid: true,
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
name: "captchaID为空",
|
|||
|
|
captchaID: "",
|
|||
|
|
dx: 100,
|
|||
|
|
wantValid: false,
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
name: "dx为0(可能有效)",
|
|||
|
|
captchaID: "captcha-123",
|
|||
|
|
dx: 0,
|
|||
|
|
wantValid: true, // dx为0也可能是有效的(用户没有滑动)
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
name: "dx为负数(可能无效)",
|
|||
|
|
captchaID: "captcha-123",
|
|||
|
|
dx: -10,
|
|||
|
|
wantValid: true, // 负数也可能是有效的,取决于业务逻辑
|
|||
|
|
},
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
for _, tt := range tests {
|
|||
|
|
t.Run(tt.name, func(t *testing.T) {
|
|||
|
|
isValid := tt.captchaID != ""
|
|||
|
|
if isValid != tt.wantValid {
|
|||
|
|
t.Errorf("Request validation failed: got %v, want %v", isValid, tt.wantValid)
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// TestCaptchaHandler_ResponseFormat 测试响应格式逻辑
|
|||
|
|
func TestCaptchaHandler_ResponseFormat(t *testing.T) {
|
|||
|
|
tests := []struct {
|
|||
|
|
name string
|
|||
|
|
valid bool
|
|||
|
|
wantCode int
|
|||
|
|
wantStatus string
|
|||
|
|
}{
|
|||
|
|
{
|
|||
|
|
name: "验证成功",
|
|||
|
|
valid: true,
|
|||
|
|
wantCode: 200,
|
|||
|
|
wantStatus: "验证成功",
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
name: "验证失败",
|
|||
|
|
valid: false,
|
|||
|
|
wantCode: 400,
|
|||
|
|
wantStatus: "验证失败,请重试",
|
|||
|
|
},
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
for _, tt := range tests {
|
|||
|
|
t.Run(tt.name, func(t *testing.T) {
|
|||
|
|
// 验证响应格式逻辑
|
|||
|
|
var code int
|
|||
|
|
var status string
|
|||
|
|
if tt.valid {
|
|||
|
|
code = 200
|
|||
|
|
status = "验证成功"
|
|||
|
|
} else {
|
|||
|
|
code = 400
|
|||
|
|
status = "验证失败,请重试"
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if code != tt.wantCode {
|
|||
|
|
t.Errorf("Response code = %d, want %d", code, tt.wantCode)
|
|||
|
|
}
|
|||
|
|
if status != tt.wantStatus {
|
|||
|
|
t.Errorf("Response status = %q, want %q", status, tt.wantStatus)
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// TestCaptchaHandler_ErrorHandling 测试错误处理逻辑
|
|||
|
|
func TestCaptchaHandler_ErrorHandling(t *testing.T) {
|
|||
|
|
tests := []struct {
|
|||
|
|
name string
|
|||
|
|
hasError bool
|
|||
|
|
wantCode int
|
|||
|
|
wantError bool
|
|||
|
|
}{
|
|||
|
|
{
|
|||
|
|
name: "生成验证码失败",
|
|||
|
|
hasError: true,
|
|||
|
|
wantCode: 500,
|
|||
|
|
wantError: true,
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
name: "验证验证码失败",
|
|||
|
|
hasError: true,
|
|||
|
|
wantCode: 500,
|
|||
|
|
wantError: true,
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
name: "参数错误",
|
|||
|
|
hasError: true,
|
|||
|
|
wantCode: 400,
|
|||
|
|
wantError: true,
|
|||
|
|
},
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
for _, tt := range tests {
|
|||
|
|
t.Run(tt.name, func(t *testing.T) {
|
|||
|
|
// 验证错误处理逻辑
|
|||
|
|
if tt.hasError && !tt.wantError {
|
|||
|
|
t.Error("Error handling logic failed")
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|