| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- import { describe, expect, test } from "vitest";
- import {
- type AggregateSessionStatsEntry,
- summarizeTerminateSessionsBatch,
- } from "@/actions/active-sessions-utils";
- let sessionIndex = 0;
- function buildSessionEntry(
- overrides: Partial<AggregateSessionStatsEntry>
- ): AggregateSessionStatsEntry {
- const sessionId = overrides.sessionId ?? `session-${sessionIndex++}`;
- return {
- sessionId,
- requestCount: overrides.requestCount ?? 1,
- totalCostUsd: overrides.totalCostUsd ?? "0",
- totalInputTokens: overrides.totalInputTokens ?? 0,
- totalOutputTokens: overrides.totalOutputTokens ?? 0,
- totalCacheCreationTokens: overrides.totalCacheCreationTokens ?? 0,
- totalCacheReadTokens: overrides.totalCacheReadTokens ?? 0,
- totalDurationMs: overrides.totalDurationMs ?? 0,
- firstRequestAt: overrides.firstRequestAt ?? null,
- lastRequestAt: overrides.lastRequestAt ?? null,
- providers: overrides.providers ?? [],
- models: overrides.models ?? [],
- userName: overrides.userName ?? "user",
- userId: overrides.userId ?? 1,
- keyName: overrides.keyName ?? "default-key",
- keyId: overrides.keyId ?? 1,
- userAgent: overrides.userAgent ?? null,
- apiType: overrides.apiType ?? "chat",
- };
- }
- describe("Session 批量终止摘要", () => {
- test("普通用户应该正确分类允许/未授权/缺失的 Session", () => {
- const requestedIds = ["sess-1", "sess-1", "sess-2", "sess-3"];
- const sessionsData = [
- buildSessionEntry({ sessionId: "sess-1", userId: 10 }),
- buildSessionEntry({ sessionId: "sess-2", userId: 99 }),
- ];
- const summary = summarizeTerminateSessionsBatch(requestedIds, sessionsData, 10, false);
- expect(summary.uniqueRequestedIds).toEqual(["sess-1", "sess-2", "sess-3"]);
- expect(summary.allowedSessionIds).toEqual(["sess-1"]);
- expect(summary.unauthorizedSessionIds).toEqual(["sess-2"]);
- expect(summary.missingSessionIds).toEqual(["sess-3"]);
- });
- test("管理员应该对所有找到的 Session 有权限(仍追踪缺失的)", () => {
- const requestedIds = ["sess-4", "sess-5"];
- const sessionsData = [buildSessionEntry({ sessionId: "sess-4", userId: 200 })];
- const summary = summarizeTerminateSessionsBatch(requestedIds, sessionsData, 1, true);
- expect(summary.allowedSessionIds).toEqual(["sess-4"]);
- expect(summary.unauthorizedSessionIds).toEqual([]);
- expect(summary.missingSessionIds).toEqual(["sess-5"]);
- });
- });
|