fix: improve the behavior for the web app

This commit is contained in:
2026-07-11 20:30:05 +07:00
parent 71b0bfb6d8
commit 8d731d84fb
8 changed files with 252 additions and 81 deletions
+14
View File
@@ -352,6 +352,20 @@ describe("DB SQLite layer — public API parity", () => {
expect((await sqliteDb.getModelAliases()).marker).toBe("before");
});
it("exportDb / importDb preserves disabled model settings", async () => {
await sqliteDb.disableModels("backup-provider", ["backup-model"]);
const snapshot = await sqliteDb.exportDb();
expect(snapshot.disabledModels).toMatchObject({
"backup-provider": ["backup-model"],
});
await sqliteDb.enableModels("backup-provider", []);
await sqliteDb.importDb(snapshot);
expect(await sqliteDb.getDisabledByProvider("backup-provider")).toEqual(["backup-model"]);
});
it("pricing: user pricing merged with constants", async () => {
await sqliteDb.updatePricing({ openai: { "gpt-test": { input: 1, output: 2 } } });
const p = await sqliteDb.getPricing();
@@ -0,0 +1,58 @@
import fs from "node:fs";
import os from "node:os";
import path from "node:path";
import { afterAll, beforeAll, describe, expect, it, vi } from "vitest";
const originalDataDir = process.env.DATA_DIR;
let tempDir;
let db;
let getUsageTopologyProviders;
beforeAll(async () => {
tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "9router-usage-topology-"));
process.env.DATA_DIR = tempDir;
vi.resetModules();
db = await import("@/lib/db/index.js");
await db.initDb();
({ getUsageTopologyProviders } = await import("@/lib/providers/usageTopologyProviders.js"));
});
afterAll(() => {
if (tempDir) fs.rmSync(tempDir, { recursive: true, force: true });
if (originalDataDir === undefined) delete process.env.DATA_DIR;
else process.env.DATA_DIR = originalDataDir;
});
describe("usage topology providers", () => {
it("includes every active router connection, regardless of dashboard owner", async () => {
const firstUser = await db.createUser({ username: "topology-first", password: "password", role: "user" });
const secondUser = await db.createUser({ username: "topology-second", password: "password", role: "user" });
await db.createProviderConnection({
provider: "topology-provider-first",
authType: "apikey",
apiKey: "first-key",
ownerId: firstUser.id,
});
await db.createProviderConnection({
provider: "topology-provider-second",
authType: "apikey",
apiKey: "second-key",
ownerId: secondUser.id,
});
await db.createProviderConnection({
provider: "topology-provider-inactive",
authType: "apikey",
apiKey: "inactive-key",
ownerId: secondUser.id,
isActive: false,
});
const providers = await getUsageTopologyProviders();
const providerIds = providers.map((provider) => provider.provider);
expect(providerIds).toContain("topology-provider-first");
expect(providerIds).toContain("topology-provider-second");
expect(providerIds).not.toContain("topology-provider-inactive");
});
});