diff --git a/examples/01-content-operations/src/server/server.ts b/examples/01-content-operations/src/server/server.ts index a1cb25c..0117bd1 100644 --- a/examples/01-content-operations/src/server/server.ts +++ b/examples/01-content-operations/src/server/server.ts @@ -67,17 +67,13 @@ export async function startServer( } response.json(unit); }); - app.use("/universer-api", (request, response) => { - request.url = request.originalUrl; - transport.handleRequest(request, response); - }); const webRoot = fileURLToPath(new URL("../web", import.meta.url)); app.use(express.static(webRoot)); app.get("/{*path}", (_request, response) => response.sendFile("index.html", { root: webRoot })); const server = createServer(app); - server.on("upgrade", (request, socket, head) => transport.handleUpgrade(request, socket, head)); + transport.attach(server); await listen(server, 3010); const address = server.address(); if (address === null || typeof address === "string") throw new Error("Server did not start"); diff --git a/examples/01-content-operations/test/smoke.test.ts b/examples/01-content-operations/test/smoke.test.ts index c502477..e330f37 100644 --- a/examples/01-content-operations/test/smoke.test.ts +++ b/examples/01-content-operations/test/smoke.test.ts @@ -16,6 +16,13 @@ afterEach(async () => await server?.close()); it("creates, inspects, executes, and opens Sheet, Doc, and Slide units", async () => { server = await startServer(":memory:"); + + const ticket = await fetch(`${server.origin}/universer-api/user/session-ticket`); + expect(ticket.status).toBe(200); + expect(await ticket.json()).toMatchObject({ ticket: expect.any(String) }); + const fallback = await fetch(`${server.origin}/universer-api/not-an-endpoint`); + expect(fallback.status).toBe(200); + expect(await fallback.text()).toContain('id="sidebar"'); const sheetId = (await run("create", "sheet", "--name", "Demo Sheet")).trim(); const before = await run( diff --git a/examples/02-file-exchange/src/server/server.ts b/examples/02-file-exchange/src/server/server.ts index 14d3a5b..175ca68 100644 --- a/examples/02-file-exchange/src/server/server.ts +++ b/examples/02-file-exchange/src/server/server.ts @@ -69,17 +69,13 @@ export async function startServer( } response.json(unit); }); - app.use("/universer-api", (request, response) => { - request.url = request.originalUrl; - transport.handleRequest(request, response); - }); const webRoot = fileURLToPath(new URL("../web", import.meta.url)); app.use(express.static(webRoot)); app.get("/{*path}", (_request, response) => response.sendFile("index.html", { root: webRoot })); const server = createServer(app); - server.on("upgrade", (request, socket, head) => transport.handleUpgrade(request, socket, head)); + transport.attach(server); await listen(server, 3010); const address = server.address(); if (address === null || typeof address === "string") throw new Error("Server did not start"); diff --git a/examples/02-file-exchange/test/smoke.test.ts b/examples/02-file-exchange/test/smoke.test.ts index c502477..e330f37 100644 --- a/examples/02-file-exchange/test/smoke.test.ts +++ b/examples/02-file-exchange/test/smoke.test.ts @@ -16,6 +16,13 @@ afterEach(async () => await server?.close()); it("creates, inspects, executes, and opens Sheet, Doc, and Slide units", async () => { server = await startServer(":memory:"); + + const ticket = await fetch(`${server.origin}/universer-api/user/session-ticket`); + expect(ticket.status).toBe(200); + expect(await ticket.json()).toMatchObject({ ticket: expect.any(String) }); + const fallback = await fetch(`${server.origin}/universer-api/not-an-endpoint`); + expect(fallback.status).toBe(200); + expect(await fallback.text()).toContain('id="sidebar"'); const sheetId = (await run("create", "sheet", "--name", "Demo Sheet")).trim(); const before = await run( diff --git a/examples/03-visual-inspection/src/server/server.ts b/examples/03-visual-inspection/src/server/server.ts index 34e65d5..436d2c1 100644 --- a/examples/03-visual-inspection/src/server/server.ts +++ b/examples/03-visual-inspection/src/server/server.ts @@ -69,17 +69,13 @@ export async function startServer( } response.json(unit); }); - app.use("/universer-api", (request, response) => { - request.url = request.originalUrl; - transport.handleRequest(request, response); - }); const webRoot = fileURLToPath(new URL("../web", import.meta.url)); app.use(express.static(webRoot)); app.get("/{*path}", (_request, response) => response.sendFile("index.html", { root: webRoot })); const server = createServer(app); - server.on("upgrade", (request, socket, head) => transport.handleUpgrade(request, socket, head)); + transport.attach(server); await listen(server, 3010); const address = server.address(); if (address === null || typeof address === "string") throw new Error("Server did not start"); diff --git a/examples/03-visual-inspection/test/smoke.test.ts b/examples/03-visual-inspection/test/smoke.test.ts index f50bcdc..18782cc 100644 --- a/examples/03-visual-inspection/test/smoke.test.ts +++ b/examples/03-visual-inspection/test/smoke.test.ts @@ -15,6 +15,13 @@ afterEach(async () => await server?.close()); it("keeps 01 and adds screenshots for Sheet, Doc, and Slide", async () => { server = await startServer(":memory:"); + + const ticket = await fetch(`${server.origin}/universer-api/user/session-ticket`); + expect(ticket.status).toBe(200); + expect(await ticket.json()).toMatchObject({ ticket: expect.any(String) }); + const fallback = await fetch(`${server.origin}/universer-api/not-an-endpoint`); + expect(fallback.status).toBe(200); + expect(await fallback.text()).toContain('id="sidebar"'); const sheetId = (await run("create", "sheet", "--name", "Demo Sheet")).trim(); const before = await run( diff --git a/examples/04-worktree/src/server/server.ts b/examples/04-worktree/src/server/server.ts index cc90381..1a01c62 100644 --- a/examples/04-worktree/src/server/server.ts +++ b/examples/04-worktree/src/server/server.ts @@ -103,17 +103,13 @@ export async function startServer( app.get("/api/worktrees", (_request, response) => { response.json(worktrees.list()); }); - app.use("/universer-api", (request, response) => { - request.url = request.originalUrl; - transport.handleRequest(request, response); - }); const webRoot = fileURLToPath(new URL("../web", import.meta.url)); app.use(express.static(webRoot)); app.get("/{*path}", (_request, response) => response.sendFile("index.html", { root: webRoot })); const server = createServer(app); - server.on("upgrade", (request, socket, head) => transport.handleUpgrade(request, socket, head)); + transport.attach(server); await listen(server, port); const address = server.address(); if (address === null || typeof address === "string") throw new Error("Server did not start"); diff --git a/examples/04-worktree/test/smoke.test.ts b/examples/04-worktree/test/smoke.test.ts index 8aebc45..960a8c8 100644 --- a/examples/04-worktree/test/smoke.test.ts +++ b/examples/04-worktree/test/smoke.test.ts @@ -15,6 +15,13 @@ afterEach(async () => await server?.close()); it("keeps 02 and edits Sheet, Doc, and Slide through Worktrees", async () => { server = await startServer(":memory:"); + + const ticket = await fetch(`${server.origin}/universer-api/user/session-ticket`); + expect(ticket.status).toBe(200); + expect(await ticket.json()).toMatchObject({ ticket: expect.any(String) }); + const fallback = await fetch(`${server.origin}/universer-api/not-an-endpoint`); + expect(fallback.status).toBe(200); + expect(await fallback.text()).toContain('id="sidebar"'); const sheetId = (await run("create", "sheet", "--name", "Demo Sheet")).trim(); const sheetWorktree = (await run("worktree", "create", "--unit", sheetId)).trim(); diff --git a/examples/slide-gen-cli/src/server/server.ts b/examples/slide-gen-cli/src/server/server.ts index 294c870..e8195c9 100644 --- a/examples/slide-gen-cli/src/server/server.ts +++ b/examples/slide-gen-cli/src/server/server.ts @@ -101,17 +101,13 @@ export async function startServer( app.get("/api/worktrees", (_request, response) => { response.json(worktrees.list()); }); - app.use("/universer-api", (request, response) => { - request.url = request.originalUrl; - transport.handleRequest(request, response); - }); const webRoot = fileURLToPath(new URL("../web", import.meta.url)); app.use(express.static(webRoot)); app.get("/{*path}", (_request, response) => response.sendFile("index.html", { root: webRoot })); const server = createServer(app); - server.on("upgrade", (request, socket, head) => transport.handleUpgrade(request, socket, head)); + transport.attach(server); await listen(server, port); const address = server.address(); if (address === null || typeof address === "string") throw new Error("Server did not start"); diff --git a/examples/slide-gen-cli/test/server.test.ts b/examples/slide-gen-cli/test/server.test.ts index b8a1d0b..348ca06 100644 --- a/examples/slide-gen-cli/test/server.test.ts +++ b/examples/slide-gen-cli/test/server.test.ts @@ -18,6 +18,13 @@ it("creates only empty Slide units and keeps unit and Worktree routes available" temporaryRoot = await mkdtemp(join(tmpdir(), "slide-gen-server-")); server = await startServer(join(temporaryRoot, "server.sqlite"), 0); + const ticket = await fetch(`${server.origin}/universer-api/user/session-ticket`); + expect(ticket.status).toBe(200); + expect(await ticket.json()).toMatchObject({ ticket: expect.any(String) }); + const fallback = await fetch(`${server.origin}/universer-api/not-an-endpoint`); + expect(fallback.status).toBe(200); + expect(await fallback.text()).toContain('id="sidebar"'); + const unnamed = await create({}); expect(unnamed).toMatchObject({ name: "Untitled Slide", unitType: "slide", revision: 1 });