net.test.ts
1.5 kB · typescript · 28 lines
1import { expect, test } from "bun:test";2import { readEvent, SOURCE } from "./net.ts";34const SHA = "0123456789abcdef0123456789abcdef01234567";56process.env.SHELF_REPO = "owner/shelf";78test("the payload parser reads a schedule tick and both push wakes", () => {9 expect(readEvent(JSON.stringify({ source: "schedule" }))).toEqual({ source: "schedule", on: "", sha: "" });10 expect(readEvent(JSON.stringify({ source: "push", repo: SOURCE, sha: SHA })))11 .toEqual({ source: "push", on: "source", sha: SHA });12 expect(readEvent(JSON.stringify({ source: "push", repo: "owner/shelf", sha: SHA })))13 .toEqual({ source: "push", on: "shelf", sha: SHA });14});1516test("the payload parser survives junk, an unknown source, a foreign repo and a bad sha", () => {17 expect(readEvent("")).toEqual({ source: "", on: "", sha: "" });18 expect(readEvent("not json")).toEqual({ source: "", on: "", sha: "" });19 expect(readEvent(JSON.stringify({ source: "nonsense", repo: SOURCE }))).toEqual({ source: "", on: "source", sha: "" });20 expect(readEvent(JSON.stringify({ source: "push", repo: "owner/site", sha: SHA }))).toEqual({ source: "push", on: "", sha: SHA });21 expect(readEvent(JSON.stringify({ source: "push", repo: SOURCE, sha: "nope" })))22 .toEqual({ source: "push", on: "source", sha: "" });23});2425test("a sha with no repo never guesses which repo moved", () => {26 expect(readEvent(JSON.stringify({ body: JSON.stringify({ source: "manual", sha: SHA }) })))27 .toEqual({ source: "manual", on: "", sha: SHA });28});