124 lines
2.7 KiB
Go
124 lines
2.7 KiB
Go
|
|
package repository
|
|||
|
|
|
|||
|
|
import (
|
|||
|
|
"testing"
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
// TestTokenRepository_BatchDeleteLogic 测试批量删除逻辑
|
|||
|
|
func TestTokenRepository_BatchDeleteLogic(t *testing.T) {
|
|||
|
|
tests := []struct {
|
|||
|
|
name string
|
|||
|
|
tokensToDelete []string
|
|||
|
|
wantCount int64
|
|||
|
|
wantError bool
|
|||
|
|
}{
|
|||
|
|
{
|
|||
|
|
name: "有效的token列表",
|
|||
|
|
tokensToDelete: []string{"token1", "token2", "token3"},
|
|||
|
|
wantCount: 3,
|
|||
|
|
wantError: false,
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
name: "空列表应该返回0",
|
|||
|
|
tokensToDelete: []string{},
|
|||
|
|
wantCount: 0,
|
|||
|
|
wantError: false,
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
name: "单个token",
|
|||
|
|
tokensToDelete: []string{"token1"},
|
|||
|
|
wantCount: 1,
|
|||
|
|
wantError: false,
|
|||
|
|
},
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
for _, tt := range tests {
|
|||
|
|
t.Run(tt.name, func(t *testing.T) {
|
|||
|
|
// 验证批量删除逻辑:空列表应该直接返回0
|
|||
|
|
if len(tt.tokensToDelete) == 0 {
|
|||
|
|
if tt.wantCount != 0 {
|
|||
|
|
t.Errorf("Empty list should return count 0, got %d", tt.wantCount)
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// TestTokenRepository_QueryConditions 测试token查询条件逻辑
|
|||
|
|
func TestTokenRepository_QueryConditions(t *testing.T) {
|
|||
|
|
tests := []struct {
|
|||
|
|
name string
|
|||
|
|
accessToken string
|
|||
|
|
userID int64
|
|||
|
|
wantValid bool
|
|||
|
|
}{
|
|||
|
|
{
|
|||
|
|
name: "有效的access token",
|
|||
|
|
accessToken: "valid-token-123",
|
|||
|
|
userID: 1,
|
|||
|
|
wantValid: true,
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
name: "access token为空",
|
|||
|
|
accessToken: "",
|
|||
|
|
userID: 1,
|
|||
|
|
wantValid: false,
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
name: "用户ID为0",
|
|||
|
|
accessToken: "valid-token-123",
|
|||
|
|
userID: 0,
|
|||
|
|
wantValid: false,
|
|||
|
|
},
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
for _, tt := range tests {
|
|||
|
|
t.Run(tt.name, func(t *testing.T) {
|
|||
|
|
isValid := tt.accessToken != "" && tt.userID > 0
|
|||
|
|
if isValid != tt.wantValid {
|
|||
|
|
t.Errorf("Query condition validation failed: got %v, want %v", isValid, tt.wantValid)
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// TestTokenRepository_FindTokenByIDLogic 测试根据ID查找token的逻辑
|
|||
|
|
func TestTokenRepository_FindTokenByIDLogic(t *testing.T) {
|
|||
|
|
tests := []struct {
|
|||
|
|
name string
|
|||
|
|
accessToken string
|
|||
|
|
resultCount int
|
|||
|
|
wantError bool
|
|||
|
|
}{
|
|||
|
|
{
|
|||
|
|
name: "找到token",
|
|||
|
|
accessToken: "token-123",
|
|||
|
|
resultCount: 1,
|
|||
|
|
wantError: false,
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
name: "未找到token",
|
|||
|
|
accessToken: "token-123",
|
|||
|
|
resultCount: 0,
|
|||
|
|
wantError: true, // 访问索引0会panic
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
name: "找到多个token(异常情况)",
|
|||
|
|
accessToken: "token-123",
|
|||
|
|
resultCount: 2,
|
|||
|
|
wantError: false, // 返回第一个
|
|||
|
|
},
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
for _, tt := range tests {
|
|||
|
|
t.Run(tt.name, func(t *testing.T) {
|
|||
|
|
// 验证逻辑:如果结果为空,访问索引0会出错
|
|||
|
|
hasError := tt.resultCount == 0
|
|||
|
|
if hasError != tt.wantError {
|
|||
|
|
t.Errorf("FindTokenByID logic failed: got error=%v, want error=%v", hasError, tt.wantError)
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|