From a0916f7695e0f5eac568a5a44d9cf6935fbbf2c7 Mon Sep 17 00:00:00 2001 From: DIYgod Date: Fri, 10 Apr 2026 18:40:25 +0800 Subject: [PATCH] fix(ota): require at least one platform --- apps/ota/src/__tests__/schema.test.ts | 24 ++++++++++++++++++++++++ apps/ota/src/lib/schema.ts | 3 +++ apps/ota/wrangler.jsonc | 2 +- 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/apps/ota/src/__tests__/schema.test.ts b/apps/ota/src/__tests__/schema.test.ts index 6e1e86c94..e86447d0f 100644 --- a/apps/ota/src/__tests__/schema.test.ts +++ b/apps/ota/src/__tests__/schema.test.ts @@ -37,4 +37,28 @@ describe("otaReleaseSchema", () => { expect(parsed.runtimeVersion).toBe("0.4.1") expect(Object.keys(parsed.platforms)).toEqual(["ios"]) }) + + it("rejects metadata with no platforms", () => { + expect(() => + otaReleaseSchema.parse({ + schemaVersion: 1, + product: "mobile", + channel: "production", + releaseVersion: "0.4.2", + releaseKind: "ota", + runtimeVersion: "0.4.1", + publishedAt: "2026-04-10T12:00:00Z", + git: { + tag: "mobile/v0.4.2", + commit: "abcdef1234567890", + }, + policy: { + storeRequired: false, + minSupportedBinaryVersion: "0.4.1", + message: null, + }, + platforms: {}, + }), + ).toThrow("At least one platform must be provided") + }) }) diff --git a/apps/ota/src/lib/schema.ts b/apps/ota/src/lib/schema.ts index a64bea07d..d17f66069 100644 --- a/apps/ota/src/lib/schema.ts +++ b/apps/ota/src/lib/schema.ts @@ -23,6 +23,9 @@ const platformsSchema = z linux: platformSchema.optional(), }) .strict() + .refine((platforms) => Object.keys(platforms).length > 0, { + message: "At least one platform must be provided", + }) export const otaReleaseSchema = z.object({ schemaVersion: z.literal(1), diff --git a/apps/ota/wrangler.jsonc b/apps/ota/wrangler.jsonc index 32335afe2..8d96394eb 100644 --- a/apps/ota/wrangler.jsonc +++ b/apps/ota/wrangler.jsonc @@ -47,7 +47,7 @@ "r2_buckets": [ { "binding": "OTA_BUCKET", - "bucket_name": "REPLACE_WITH_DEV_BUCKET_NAME", + "bucket_name": "replace-with-dev-bucket-name", }, ], "vars": {