feat: rebuild xiteng.site homelab platform

This commit is contained in:
2026-08-12 09:48:25 +08:00
parent 557b0eca33
commit 5b84988789
128 changed files with 14979 additions and 292 deletions
+77
View File
@@ -0,0 +1,77 @@
import assert from "node:assert/strict";
import {randomBytes} from "node:crypto";
import {mkdtempSync, rmSync} from "node:fs";
import {tmpdir} from "node:os";
import {join} from "node:path";
import {loadBuiltinProviders, normalizeProvider} from "./providers.mjs";
import {Vault} from "./vault.mjs";
const directory = mkdtempSync(join(tmpdir(), "xiteng-vault-test-"));
const vault = new Vault({
databasePath: join(directory, "vault.db"),
masterKey: randomBytes(32),
builtinProviders: loadBuiltinProviders(new URL("providers.json", import.meta.url))
});
const admin = {issuer: "https://id.xiteng.site", sub: "admin-sub", username: "liooil", admin: true};
const user = {issuer: "https://id.xiteng.site", sub: "user-sub", username: "ziyue", admin: false};
try {
const providers = vault.listProviders(user);
assert.ok(providers.length >= 25);
assert.equal(providers.find((provider) => provider.id === "ollama").connection.type, "frontend");
assert.throws(() => vault.createCredential(user, {
providerId: "ollama",
name: "default",
secret: "must-not-enter-server"
}), /remain in the browser/i);
const custom = normalizeProvider({
id: "team-proxy",
name: "Team Proxy",
api: "openai-completions",
connection: {
type: "backend",
baseUrl: "https://models.example.com/v1",
proxy: {type: "socks5", url: "socks5://proxy.example.com:1080"}
},
auth: {type: "bearer"},
defaultModel: "team-model",
discovery: {type: "openai-models-list", url: "https://models.example.com/v1/catalog"}
});
vault.saveCustomProvider(user, custom);
assert.equal(vault.getProvider(user, "team-proxy").connection.proxy.type, "socks5");
assert.equal(vault.getProvider(user, "team-proxy").discovery.url, "https://models.example.com/v1/catalog");
assert.equal("models" in vault.getProvider(user, "team-proxy"), false);
const credential = vault.createCredential(user, {
providerId: "team-proxy",
name: "default",
secret: {
provider: {apiKey: "secret-one"},
proxy: {username: "proxy-user", password: "proxy-pass"}
}
});
assert.equal(vault.listCredentials(user).length, 1);
assert.equal(vault.listCredentials(admin, {all: true}).length, 1);
assert.equal(vault.verifyCredential(user, credential.id).verified, true);
const resolved = vault.resolve(user, {providerId: "team-proxy", credentialName: "default"});
assert.equal(resolved.provider.id, "team-proxy");
assert.equal(resolved.credential.secret.provider.apiKey, "secret-one");
assert.equal(resolved.credential.secret.proxy.username, "proxy-user");
vault.replaceCredential(user, credential.id, {secret: "secret-two"});
assert.equal(vault.resolve(user, {providerId: "team-proxy"}).credential.secret.provider.apiKey, "secret-two");
assert.throws(() => vault.resolve(admin, {providerId: "team-proxy"}), /provider not found/i);
vault.deleteCredential(user, credential.id);
assert.equal(vault.listCredentials(user).length, 0);
vault.deleteCustomProvider(user, "team-proxy");
assert.equal(vault.getProvider(user, "team-proxy"), null);
assert.ok(vault.listAudit(admin, {all: true}).length >= 7);
console.log("Vault tests passed");
} finally {
vault.close();
rmSync(directory, {recursive: true, force: true});
}