Fresh history cut from cynarAI/evoo antigravity-handoff/project-timeline (Voice First + project timeline). Brand docs/titles as evOo; keep @rakazo/* packages as tech debt. Excludes node_modules, caches, secrets, voice blobs.
43 lines
1.4 KiB
TypeScript
43 lines
1.4 KiB
TypeScript
import { ORPCError } from "@orpc/server";
|
|
import { createLogger, createTestSink, installLogger } from "@rakazo/logging";
|
|
import { afterEach, describe, expect, it } from "vitest";
|
|
import { logUnexpectedRpcError } from "./app.js";
|
|
|
|
describe("logUnexpectedRpcError", () => {
|
|
afterEach(() => {
|
|
installLogger(createLogger({ service: "rakazo-api", level: "off", sinks: [] }));
|
|
});
|
|
|
|
it("stays quiet for an error the router chose to return", () => {
|
|
const sink = createTestSink();
|
|
installLogger(createLogger({ service: "rakazo-api", sinks: [sink] }));
|
|
|
|
logUnexpectedRpcError(new ORPCError("BAD_REQUEST", { message: "file is too large" }), [
|
|
"computer",
|
|
"readFile",
|
|
]);
|
|
|
|
expect(sink.events).toEqual([]);
|
|
});
|
|
|
|
it("names the procedure and every cause behind an opaque failure", () => {
|
|
const sink = createTestSink();
|
|
installLogger(createLogger({ service: "rakazo-api", sinks: [sink] }));
|
|
const error = new Error("fetch failed", {
|
|
cause: Object.assign(new Error("connect ECONNREFUSED 127.0.0.1:7091"), {
|
|
code: "ECONNREFUSED",
|
|
}),
|
|
});
|
|
|
|
logUnexpectedRpcError(error, ["computer", "screenUrl"]);
|
|
|
|
expect(sink.events[0]).toMatchObject({
|
|
message: "rpc computer/screenUrl failed",
|
|
error: {
|
|
message: "fetch failed",
|
|
cause: { message: "connect ECONNREFUSED 127.0.0.1:7091" },
|
|
},
|
|
});
|
|
});
|
|
});
|