mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-07 20:00:42 +00:00
85 lines
2.9 KiB
TypeScript
85 lines
2.9 KiB
TypeScript
import fs from "node:fs";
|
|
import path from "node:path";
|
|
import { describe, expect, it } from "vitest";
|
|
import {
|
|
buildSecretRefCredentialMatrix,
|
|
type SecretRefCredentialMatrixDocument,
|
|
} from "./credential-matrix.js";
|
|
|
|
function buildSecretRefCredentialMatrixJson(): string {
|
|
return `${JSON.stringify(buildSecretRefCredentialMatrix(), null, 2)}\n`;
|
|
}
|
|
|
|
describe("secret target registry docs", () => {
|
|
it("stays in sync with docs/reference/secretref-user-supplied-credentials-matrix.json", () => {
|
|
const pathname = path.join(
|
|
process.cwd(),
|
|
"docs",
|
|
"reference",
|
|
"secretref-user-supplied-credentials-matrix.json",
|
|
);
|
|
const raw = fs.readFileSync(pathname, "utf8");
|
|
const expected = buildSecretRefCredentialMatrixJson();
|
|
|
|
expect(raw).toBe(expected);
|
|
});
|
|
|
|
it("stays in sync with docs/reference/secretref-credential-surface.md", () => {
|
|
const matrixPath = path.join(
|
|
process.cwd(),
|
|
"docs",
|
|
"reference",
|
|
"secretref-user-supplied-credentials-matrix.json",
|
|
);
|
|
const matrixRaw = fs.readFileSync(matrixPath, "utf8");
|
|
const matrix = JSON.parse(matrixRaw) as SecretRefCredentialMatrixDocument;
|
|
|
|
const surfacePath = path.join(
|
|
process.cwd(),
|
|
"docs",
|
|
"reference",
|
|
"secretref-credential-surface.md",
|
|
);
|
|
const surface = fs.readFileSync(surfacePath, "utf8");
|
|
const readMarkedCredentialList = (params: { start: string; end: string }): Set<string> => {
|
|
const startIndex = surface.indexOf(params.start);
|
|
const endIndex = surface.indexOf(params.end);
|
|
expect(startIndex).toBeGreaterThanOrEqual(0);
|
|
expect(endIndex).toBeGreaterThan(startIndex);
|
|
const block = surface.slice(startIndex + params.start.length, endIndex);
|
|
const credentials = new Set<string>();
|
|
for (const line of block.split(/\r?\n/)) {
|
|
const match = line.match(/^- `([^`]+)`/);
|
|
if (!match) {
|
|
continue;
|
|
}
|
|
const candidate = match[1];
|
|
if (!candidate.includes(".")) {
|
|
continue;
|
|
}
|
|
credentials.add(candidate);
|
|
}
|
|
return credentials;
|
|
};
|
|
|
|
const supportedFromDocs = readMarkedCredentialList({
|
|
start: '[//]: # "secretref-supported-list-start"',
|
|
end: '[//]: # "secretref-supported-list-end"',
|
|
});
|
|
const unsupportedFromDocs = readMarkedCredentialList({
|
|
start: '[//]: # "secretref-unsupported-list-start"',
|
|
end: '[//]: # "secretref-unsupported-list-end"',
|
|
});
|
|
|
|
const supportedFromMatrix = new Set(
|
|
matrix.entries.map((entry) =>
|
|
entry.configFile === "auth-profiles.json" && entry.refPath ? entry.refPath : entry.path,
|
|
),
|
|
);
|
|
const unsupportedFromMatrix = new Set(matrix.excludedMutableOrRuntimeManaged);
|
|
|
|
expect([...supportedFromDocs].toSorted()).toEqual([...supportedFromMatrix].toSorted());
|
|
expect([...unsupportedFromDocs].toSorted()).toEqual([...unsupportedFromMatrix].toSorted());
|
|
});
|
|
});
|