Files
openclaw/extensions/feishu/doctor-contract-api.test.ts
Peter Steinberger 0d90ca6b5d refactor(config): retire flat and scalar streaming keys from matrix, feishu, and qqbot (#105808)
* feat(doctor): migrate legacy matrix/feishu/qqbot streaming spellings to nested config

* test(matrix): shorten setup fixture tokens below the review secret-scanner threshold

* refactor(config): retire flat/scalar streaming keys from matrix, feishu, and qqbot

* docs: describe nested-only streaming config for matrix, feishu, and qqbot

* fix(qa-matrix): compose nested streaming config for the matrix QA harness

* test(feishu): compose negative webhook fixtures outside the GHSA opengrep pattern

* docs: refresh generated docs map

* test(feishu): compose negative webhook fixtures from lint-clean bases outside the GHSA opengrep pattern

* fix(qa-lab): rewrite crabline flat streaming config into the nested channel shape

* chore(config): regenerate channel config metadata and plugin-sdk API baseline for nested-only streaming

* chore(plugin-sdk): absorb main-side deprecated pairing/conversation pin drift

* fix(qa-lab): consume Crabline nested streaming config
2026-07-12 20:33:14 -07:00

24 lines
1.1 KiB
TypeScript

// Feishu tests cover the doctor contract artifact surface.
import { describe, expect, it } from "vitest";
import { legacyConfigRules, normalizeCompatibilityConfig } from "./doctor-contract-api.js";
describe("feishu doctor contract artifact", () => {
it("exposes registry-shaped streaming alias rules and the config normalizer", () => {
// The doctor contract registry keeps rules whose path is an array and
// whose message is a string (coerceLegacyConfigRules); anything else is
// silently dropped, which would disable the migration for installed builds.
expect(legacyConfigRules.length).toBeGreaterThan(0);
for (const rule of legacyConfigRules) {
expect(Array.isArray(rule.path)).toBe(true);
expect(typeof rule.message).toBe("string");
}
const result = normalizeCompatibilityConfig({
cfg: { channels: { feishu: { streaming: true } } } as never,
});
const feishu = result.config.channels?.feishu as Record<string, unknown>;
expect(feishu.streaming).toEqual({ mode: "partial" });
expect(result.changes.length).toBeGreaterThan(0);
});
});