Something went wrong. Try again.
[READ-ONLY] Mirror of https://github.com/openstatusHQ/openstatus. ๐ซ Status page with uptime monitoring & API monitoring as code ๐ซ openstatus.dev
bun drizzle-orm monitoring monitoring-as-code nextjs observability on-call open-source shadcn-ui status-page statuspage synthetic-monitoring tinybird turso uptime uptime-checker uptime-monitor
Something went wrong. Try again.
2.6 kB ยท 102 lines
TypeScript
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103import { describe, expect, it } from "vitest";
import { DNSPayloadSchema, grpcPayloadSchema, httpPayloadSchema, icmpPayloadSchema, tpcPayloadSchema,} from "./payloads";
const common = { workspaceId: "1", monitorId: "2", status: "active", cronTimestamp: 1_700_000_000_000, degradedAfter: null,};
describe("httpPayloadSchema", () => { const minimal = { ...common, method: "GET", url: "https://openstatus.dev", assertions: null, };
it("applies defaults", () => { const parsed = httpPayloadSchema.parse(minimal); expect(parsed.timeout).toBe(45000); expect(parsed.retry).toBe(3); expect(parsed.trigger).toBe("cron"); expect(parsed.followRedirects).toBe(true); });
it("keeps explicit values over defaults", () => { const parsed = httpPayloadSchema.parse({ ...minimal, timeout: 1000, retry: 0, trigger: "api", followRedirects: false, }); expect(parsed).toMatchObject({ timeout: 1000, retry: 0, trigger: "api", followRedirects: false, }); });
it("rejects an unknown method", () => { expect( httpPayloadSchema.safeParse({ ...minimal, method: "FETCH" }).success, ).toBe(false); });
it("rejects an unknown status", () => { expect( httpPayloadSchema.safeParse({ ...minimal, status: "paused" }).success, ).toBe(false); });
it("keeps unknown assertion fields so later schemas can parse them", () => { const parsed = httpPayloadSchema.parse({ ...minimal, assertions: [{ type: "status", compare: "eq", target: 200 }], }); expect(parsed.assertions).toEqual([ { version: "v1", type: "status", compare: "eq", target: 200 }, ]); });});
describe("non-HTTP payload schemas", () => { const withUri = { ...common, uri: "openstatus.dev:443" };
for (const [name, schema, extra] of [ ["tcp", tpcPayloadSchema, { assertions: null }], ["dns", DNSPayloadSchema, { assertions: null }], ["icmp", icmpPayloadSchema, {}], ["grpc", grpcPayloadSchema, {}], ] as const) { it(`${name} applies timeout, retry and trigger defaults`, () => { const parsed = schema.parse({ ...withUri, ...extra }); expect(parsed).toMatchObject({ timeout: 45000, retry: 3, trigger: "cron", }); }); }
it("grpc defaults to tls", () => { expect(grpcPayloadSchema.parse(withUri).tls).toBe("tls"); });
it("grpc rejects an unknown tls mode", () => { expect( grpcPayloadSchema.safeParse({ ...withUri, tls: "mtls" }).success, ).toBe(false); });});