release: WRNexusJS 0.7.0
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
import { describe, expect, test } from "bun:test";
|
||||
import { createWebVitalsHandler, MetricsRegistry } from "../src/index.ts";
|
||||
|
||||
describe("@wrnexus/observability", () => {
|
||||
test("records deterministic counters and histograms", () => {
|
||||
const registry = new MetricsRegistry(() => 123);
|
||||
registry.increment("requests", 1, { route: "/" });
|
||||
registry.increment("requests", 2, { route: "/" });
|
||||
registry.observe("duration", 10);
|
||||
registry.observe("duration", 20);
|
||||
expect(registry.snapshot()).toEqual(
|
||||
expect.arrayContaining([
|
||||
expect.objectContaining({ name: "requests", value: 3 }),
|
||||
expect.objectContaining({ name: "duration", value: 15, count: 2, min: 10, max: 20 }),
|
||||
]),
|
||||
);
|
||||
});
|
||||
|
||||
test("accepts same-origin Web Vitals and rejects cross-site beacons", async () => {
|
||||
const handler = createWebVitalsHandler();
|
||||
const good = await handler(
|
||||
new Request("https://example.com/__wrnexus/metrics/vitals", {
|
||||
method: "POST",
|
||||
headers: { origin: "https://example.com", "content-type": "application/json" },
|
||||
body: JSON.stringify({ name: "LCP", value: 1200, route: "/" }),
|
||||
}),
|
||||
);
|
||||
expect(good.status).toBe(204);
|
||||
const denied = await handler(
|
||||
new Request("https://example.com/__wrnexus/metrics/vitals", {
|
||||
method: "POST",
|
||||
headers: { origin: "https://evil.example", "content-type": "application/json" },
|
||||
body: JSON.stringify({ name: "LCP", value: 1200 }),
|
||||
}),
|
||||
);
|
||||
expect(denied.status).toBe(403);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user