fix(platform): 存储与 Agent - 修复配额准入、Live2D 与用户筛选

This commit is contained in:
Rou
2026-09-30 18:28:19 +08:00
parent 53050a7a30
commit 87fa805caf
14 changed files with 211 additions and 39 deletions

View File

@@ -4,6 +4,7 @@ import (
"io"
"os"
"path/filepath"
"strings"
"testing"
"time"
@@ -29,7 +30,7 @@ func TestAdminStorageListStatsAndPreview(t *testing.T) {
}
users := []model.User{
{ID: "admin", Username: "admin", DisplayName: "管理员", Role: model.UserRoleAdmin, Status: model.UserStatusActive},
{ID: "user-1", Username: "creator", DisplayName: "创作者", Role: model.UserRoleUser, Status: model.UserStatusActive},
{ID: "user-1", Username: "creator", Email: "creator@example.com", DisplayName: "创作者", Role: model.UserRoleUser, Status: model.UserStatusActive},
}
if err := db.Create(&users).Error; err != nil {
t.Fatal(err)
@@ -66,6 +67,28 @@ func TestAdminStorageListStatsAndPreview(t *testing.T) {
t.Fatalf("physical bytes = %+v", page.Items)
}
for _, userQuery := range []string{"user-1", "creator", "创作者", "creator@example.com"} {
filtered, filterErr := svc.AdminResourcePage(admin, AdminResourceQuery{UserQuery: userQuery, Page: 1, Limit: 20})
if filterErr != nil {
t.Fatalf("AdminResourcePage(UserQuery=%q) error = %v", userQuery, filterErr)
}
if filtered.Total != 2 || len(filtered.Items) != 2 {
t.Fatalf("AdminResourcePage(UserQuery=%q) = %+v", userQuery, filtered)
}
for _, item := range filtered.Items {
if item.UserID != "user-1" {
t.Fatalf("AdminResourcePage(UserQuery=%q) returned user %q", userQuery, item.UserID)
}
}
}
missing, missingErr := svc.AdminResourcePage(admin, AdminResourceQuery{UserQuery: "missing-user", Page: 1, Limit: 20})
if missingErr != nil {
t.Fatal(missingErr)
}
if missing.Total != 0 || len(missing.Items) != 0 {
t.Fatalf("missing user filter returned resources: %+v", missing)
}
stats, err := svc.AdminStorageStats(admin)
if err != nil {
t.Fatal(err)
@@ -103,6 +126,9 @@ func TestAdminStorageRejectsNonAdminAndInvalidFilters(t *testing.T) {
if _, _, _, err := normalizeAdminResourceQuery(AdminResourceQuery{Status: "unknown"}); err == nil {
t.Fatal("expected invalid status filter to be rejected")
}
if _, _, _, err := normalizeAdminResourceQuery(AdminResourceQuery{UserQuery: strings.Repeat("x", 161)}); err == nil {
t.Fatal("expected oversized user filter to be rejected")
}
if _, err := svc.AdminStorageStats(user); err == nil {
t.Fatal("expected non-admin stats to be rejected")
}