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});