From afda1f1211db94b5341d47900d902a3558db0a0c Mon Sep 17 00:00:00 2001 From: Jesse Wierzbinski Date: Mon, 6 May 2024 09:20:23 +0000 Subject: [PATCH] fix(api): :bug: Fix incorrect boolean/string comparisons in status creation endpoint --- server/api/api/v1/statuses/index.test.ts | 6 ------ server/api/api/v1/statuses/index.ts | 7 ++++++- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/server/api/api/v1/statuses/index.test.ts b/server/api/api/v1/statuses/index.test.ts index feaf2ce9..06b8fff9 100644 --- a/server/api/api/v1/statuses/index.test.ts +++ b/server/api/api/v1/statuses/index.test.ts @@ -16,12 +16,6 @@ afterAll(async () => { await deleteUsers(); }); -const getFormData = (object: Record) => - Object.keys(object).reduce((formData, key) => { - formData.append(key, String(object[key])); - return formData; - }, new FormData()); - describe(meta.route, () => { test("should return 401 if not authenticated", async () => { const response = await sendTestRequest( diff --git a/server/api/api/v1/statuses/index.ts b/server/api/api/v1/statuses/index.ts index 107635f3..adf2d43b 100644 --- a/server/api/api/v1/statuses/index.ts +++ b/server/api/api/v1/statuses/index.ts @@ -38,6 +38,7 @@ export const schemas = { sensitive: z .string() .transform((v) => ["true", "1", "on"].includes(v.toLowerCase())) + .or(z.boolean()) .optional(), language: z .enum(ISO6391.getAllCodes() as [string, ...string[]]) @@ -46,7 +47,7 @@ export const schemas = { .array(z.string().max(config.validation.max_poll_option_size)) .max(config.validation.max_poll_options) .optional(), - "poll[expires_in]": z + "poll[expires_in]": z.coerce .number() .int() .min(config.validation.min_poll_duration) @@ -55,10 +56,12 @@ export const schemas = { "poll[multiple]": z .string() .transform((v) => ["true", "1", "on"].includes(v.toLowerCase())) + .or(z.boolean()) .optional(), "poll[hide_totals]": z .string() .transform((v) => ["true", "1", "on"].includes(v.toLowerCase())) + .or(z.boolean()) .optional(), in_reply_to_id: z.string().uuid().optional().nullable(), quote_id: z.string().uuid().optional().nullable(), @@ -70,10 +73,12 @@ export const schemas = { local_only: z .string() .transform((v) => ["true", "1", "on"].includes(v.toLowerCase())) + .or(z.boolean()) .optional(), federate: z .string() .transform((v) => ["true", "1", "on"].includes(v.toLowerCase())) + .or(z.boolean()) .optional() .default("true"), }),