From 2779b76f445085ccdb961c8815708974b42ddc89 Mon Sep 17 00:00:00 2001 From: Jesse Wierzbinski Date: Mon, 6 May 2024 09:14:43 +0000 Subject: [PATCH] fix(api): :bug: Fix various data encoding bugs --- server/api/api/v1/markers/index.ts | 5 ++++- server/api/api/v1/statuses/index.test.ts | 4 +++- server/api/api/v1/statuses/index.ts | 4 ++-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/server/api/api/v1/markers/index.ts b/server/api/api/v1/markers/index.ts index 04272e63..3f9de30e 100644 --- a/server/api/api/v1/markers/index.ts +++ b/server/api/api/v1/markers/index.ts @@ -34,6 +34,7 @@ export const schemas = { "timeline[]": z .array(z.enum(["home", "notifications"])) .max(2) + .or(z.enum(["home", "notifications"])) .optional(), "home[last_read_id]": z.string().regex(idValidator).optional(), "notifications[last_read_id]": z.string().regex(idValidator).optional(), @@ -47,9 +48,11 @@ export default (app: Hono) => zValidator("query", schemas.query, handleZodError), auth(meta.auth), async (context) => { - const { "timeline[]": timeline } = context.req.valid("query"); + const { "timeline[]": timelines } = context.req.valid("query"); const { user } = context.req.valid("header"); + const timeline = Array.isArray(timelines) ? timelines : []; + if (!user) { return errorResponse("Unauthorized", 401); } diff --git a/server/api/api/v1/statuses/index.test.ts b/server/api/api/v1/statuses/index.test.ts index e4065bae..feaf2ce9 100644 --- a/server/api/api/v1/statuses/index.test.ts +++ b/server/api/api/v1/statuses/index.test.ts @@ -178,13 +178,15 @@ describe(meta.route, () => { }); test("should create a post with visibility", async () => { + // This one uses JSON to test the interop const response = await sendTestRequest( new Request(new URL(meta.route, config.http.base_url), { method: "POST", headers: { Authorization: `Bearer ${tokens[0].accessToken}`, + "Content-Type": "application/json", }, - body: new URLSearchParams({ + body: JSON.stringify({ status: "Hello, world!", visibility: "unlisted", federate: "false", diff --git a/server/api/api/v1/statuses/index.ts b/server/api/api/v1/statuses/index.ts index ae5e50bc..107635f3 100644 --- a/server/api/api/v1/statuses/index.ts +++ b/server/api/api/v1/statuses/index.ts @@ -1,4 +1,4 @@ -import { applyConfig, auth, handleZodError, qs } from "@api"; +import { applyConfig, auth, handleZodError, jsonOrForm, qs } from "@api"; import { zValidator } from "@hono/zod-validator"; import { errorResponse, jsonResponse } from "@response"; import { config } from "config-manager"; @@ -83,7 +83,7 @@ export default (app: Hono) => app.on( meta.allowedMethods, meta.route, - qs(), + jsonOrForm(), zValidator("form", schemas.form, handleZodError), auth(meta.auth), async (context) => {