Files
openclaw/src/gateway/server-methods-list.test.ts
Patrick Erichsen ee57f341f0 Add ClawHub skill verification and trust surfaces (#86699)
* feat(skills): fetch ClawHub skill verification

* feat(skills): resolve ClawHub verification targets

* feat(skills): add ClawHub verify command

* docs(skills): document ClawHub verification

* test(skills): type verify CLI fixture

* fix(skills): fetch verified skill card URL

* fix(skills): bound verified card downloads

* fix(skills): fail closed on malformed verification

* fix(skills): corroborate ClawHub install origins

* feat(skills): surface ClawHub trust in control UI

* chore(protocol): refresh generated gateway models

* chore(ui): refresh i18n raw copy baseline

* docs: clarify skills verify wording

* fix: fail closed on skill trust mismatches

* fix: reject incomplete clawhub provenance

* fix: satisfy trust verdict lint

* fix: restore ci checks after main merge
2026-05-27 14:23:24 -05:00

66 lines
2.4 KiB
TypeScript

import { describe, expect, it } from "vitest";
import { GATEWAY_EVENTS, listGatewayMethods } from "./server-methods-list.js";
describe("GATEWAY_EVENTS", () => {
it("advertises Talk event streams in hello features", () => {
expect(GATEWAY_EVENTS).toContain("talk.event");
expect(GATEWAY_EVENTS).not.toContain("talk.realtime.relay");
expect(GATEWAY_EVENTS).not.toContain("talk.transcription.relay");
});
});
describe("listGatewayMethods", () => {
it("advertises plugin surface refresh for capability rotation", () => {
expect(listGatewayMethods()).toContain("node.pluginSurface.refresh");
});
it("advertises ClawHub skill trust methods", () => {
const methods = listGatewayMethods();
expect(methods).toContain("skills.securityVerdicts");
expect(methods).toContain("skills.skillCard");
});
it("does not advertise hidden core handlers", () => {
const methods = listGatewayMethods();
expect(methods).not.toContain("config.openFile");
expect(methods).not.toContain("chat.inject");
expect(methods).not.toContain("nativeHook.invoke");
expect(methods).not.toContain("sessions.usage");
});
it("preserves the legacy advertised method order", () => {
const methods = listGatewayMethods();
expect(methods.slice(0, 5)).toEqual([
"health",
"diagnostics.stability",
"doctor.memory.status",
"doctor.memory.dreamDiary",
"doctor.memory.backfillDreamDiary",
]);
expect(methods.slice(32, 37)).toEqual([
"exec.approvals.get",
"exec.approvals.set",
"exec.approvals.node.get",
"exec.approvals.node.set",
"exec.approval.get",
]);
});
it("advertises the versioned Talk session RPCs", () => {
const methods = listGatewayMethods();
expect(methods).toContain("talk.client.create");
expect(methods).toContain("talk.client.toolCall");
expect(methods).toContain("talk.client.steer");
expect(methods).toContain("talk.session.create");
expect(methods).toContain("talk.session.join");
expect(methods).toContain("talk.session.appendAudio");
expect(methods).toContain("talk.session.startTurn");
expect(methods).toContain("talk.session.endTurn");
expect(methods).toContain("talk.session.cancelTurn");
expect(methods).toContain("talk.session.cancelOutput");
expect(methods).toContain("talk.session.submitToolResult");
expect(methods).toContain("talk.session.steer");
expect(methods).toContain("talk.session.close");
});
});