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)
|
||
}
|
||
})
|
||
}
|
||
}
|
||
|