chore: 初始化仓库,排除二进制文件和覆盖率文件
This commit is contained in:
151
internal/handler/user_handler_test.go
Normal file
151
internal/handler/user_handler_test.go
Normal file
@@ -0,0 +1,151 @@
|
||||
package handler
|
||||
|
||||
import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
// TestUserHandler_PermissionCheck 测试权限检查逻辑
|
||||
func TestUserHandler_PermissionCheck(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
userID interface{}
|
||||
exists bool
|
||||
wantValid bool
|
||||
}{
|
||||
{
|
||||
name: "有效的用户ID",
|
||||
userID: int64(1),
|
||||
exists: true,
|
||||
wantValid: true,
|
||||
},
|
||||
{
|
||||
name: "用户ID不存在",
|
||||
userID: nil,
|
||||
exists: false,
|
||||
wantValid: false,
|
||||
},
|
||||
{
|
||||
name: "用户ID类型错误",
|
||||
userID: "invalid",
|
||||
exists: true,
|
||||
wantValid: false,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
// 验证权限检查逻辑
|
||||
isValid := tt.exists
|
||||
if tt.exists {
|
||||
// 验证类型转换
|
||||
if _, ok := tt.userID.(int64); !ok {
|
||||
isValid = false
|
||||
}
|
||||
}
|
||||
if isValid != tt.wantValid {
|
||||
t.Errorf("Permission check failed: got %v, want %v", isValid, tt.wantValid)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
// TestUserHandler_RequestValidation 测试请求验证逻辑
|
||||
func TestUserHandler_RequestValidation(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
avatar string
|
||||
oldPass string
|
||||
newPass string
|
||||
wantValid bool
|
||||
}{
|
||||
{
|
||||
name: "只更新头像",
|
||||
avatar: "https://example.com/avatar.png",
|
||||
oldPass: "",
|
||||
newPass: "",
|
||||
wantValid: true,
|
||||
},
|
||||
{
|
||||
name: "更新密码(提供旧密码和新密码)",
|
||||
avatar: "",
|
||||
oldPass: "oldpass123",
|
||||
newPass: "newpass123",
|
||||
wantValid: true,
|
||||
},
|
||||
{
|
||||
name: "只提供新密码(无效)",
|
||||
avatar: "",
|
||||
oldPass: "",
|
||||
newPass: "newpass123",
|
||||
wantValid: false,
|
||||
},
|
||||
{
|
||||
name: "只提供旧密码(无效)",
|
||||
avatar: "",
|
||||
oldPass: "oldpass123",
|
||||
newPass: "",
|
||||
wantValid: false,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
// 验证请求逻辑:更新密码时需要同时提供旧密码和新密码
|
||||
isValid := true
|
||||
if tt.newPass != "" && tt.oldPass == "" {
|
||||
isValid = false
|
||||
}
|
||||
if tt.oldPass != "" && tt.newPass == "" {
|
||||
isValid = false
|
||||
}
|
||||
if isValid != tt.wantValid {
|
||||
t.Errorf("Request validation failed: got %v, want %v", isValid, tt.wantValid)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
// TestUserHandler_ErrorHandling 测试错误处理逻辑
|
||||
func TestUserHandler_ErrorHandling(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
errType string
|
||||
wantCode int
|
||||
wantError bool
|
||||
}{
|
||||
{
|
||||
name: "未授权",
|
||||
errType: "unauthorized",
|
||||
wantCode: 401,
|
||||
wantError: true,
|
||||
},
|
||||
{
|
||||
name: "用户不存在",
|
||||
errType: "not_found",
|
||||
wantCode: 404,
|
||||
wantError: true,
|
||||
},
|
||||
{
|
||||
name: "参数错误",
|
||||
errType: "bad_request",
|
||||
wantCode: 400,
|
||||
wantError: true,
|
||||
},
|
||||
{
|
||||
name: "服务器错误",
|
||||
errType: "server_error",
|
||||
wantCode: 500,
|
||||
wantError: true,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
// 验证错误处理逻辑
|
||||
if !tt.wantError {
|
||||
t.Error("Error handling test should expect error")
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user