From a42ab3d8fd7659e4d294841700fd027144325d2d Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Tue, 11 Aug 2026 15:46:19 +0000 Subject: [PATCH] fix: Hand-rolled env data fixtures for some edge cases --- .../clients/_env_configs/_discord.md | 2 +- .../clients/_env_configs/_rocksky.md | 2 +- .../sources/_env_configs/_rocksky.md | 2 +- .../infrastructure/config/client/discord.ts | 5 +++-- .../infrastructure/config/client/rocksky.ts | 2 +- src/backend/common/vendor/atproto/atUtils.ts | 4 ++++ src/backend/tests/config/config.test.ts | 22 +++++++++++++++++-- 7 files changed, 31 insertions(+), 8 deletions(-) diff --git a/docsite/docs/configuration/clients/_env_configs/_discord.md b/docsite/docs/configuration/clients/_env_configs/_discord.md index 35f8d1f8..136a2f4f 100644 --- a/docsite/docs/configuration/clients/_env_configs/_discord.md +++ b/docsite/docs/configuration/clients/_env_configs/_discord.md @@ -8,5 +8,5 @@ | `DISCORD_APPLICATION_ID` | string | | | | `DISCORD_IPC_LOCATIONS` | string OR array | | | | `DISCORD_ARTWORK_DEFAULT_URL` | string | | | -| `DISCORD_STATUS_OVERRIDE_ALLOW` | string OR array | | | +| `DISCORD_STATUS_OVERRIDE_ALLOW` | string | | | | `DISCORD_LISTENING_ACTIVITY_ALLOW` | string OR array | | | \ No newline at end of file diff --git a/docsite/docs/configuration/clients/_env_configs/_rocksky.md b/docsite/docs/configuration/clients/_env_configs/_rocksky.md index 97f507aa..00fdb03a 100644 --- a/docsite/docs/configuration/clients/_env_configs/_rocksky.md +++ b/docsite/docs/configuration/clients/_env_configs/_rocksky.md @@ -5,4 +5,4 @@ | `ROCKSKY_ENABLE` | boolean | true | Should this component be used? | | `ROCKSKY_KEY` | string | | API Key generated from [API Applications](https://docs.rocksky.app/migrating-from-listenbrainz-to-rocksky-1040189m0) in Rocksky for your account | | `ROCKSKY_TOKEN` | string | | Access Token generated from https://rocksky.app/access-tokens in Rocksky for your account | -| _**`ROCKSKY_HANDLE`**_ | string | | The **fully-qualified** handle for your ATPRoto/Bluesky account, like: | \ No newline at end of file +| _**`ROCKSKY_HANDLE`**_ | string | | The **fully-qualified** handle for your ATPRoto/Bluesky account | \ No newline at end of file diff --git a/docsite/docs/configuration/sources/_env_configs/_rocksky.md b/docsite/docs/configuration/sources/_env_configs/_rocksky.md index da073429..a3f53722 100644 --- a/docsite/docs/configuration/sources/_env_configs/_rocksky.md +++ b/docsite/docs/configuration/sources/_env_configs/_rocksky.md @@ -4,4 +4,4 @@ | `SOURCE_ROCKSKY_NAME` | string | Value of `SOURCE_ROCKSKY_ID` | A vanity name EX `My Cool Component` | | `SOURCE_ROCKSKY_ENABLE` | boolean | true | Should this component be used? | | `SOURCE_ROCKSKY_KEY` | string | | API Key generated from [API Applications](https://docs.rocksky.app/migrating-from-listenbrainz-to-rocksky-1040189m0) in Rocksky for your account | -| _**`SOURCE_ROCKSKY_HANDLE`**_ | string | | The **fully-qualified** handle for your ATPRoto/Bluesky account, like: | \ No newline at end of file +| _**`SOURCE_ROCKSKY_HANDLE`**_ | string | | The **fully-qualified** handle for your ATPRoto/Bluesky account | \ No newline at end of file diff --git a/src/backend/common/infrastructure/config/client/discord.ts b/src/backend/common/infrastructure/config/client/discord.ts index b649ab15..df204442 100644 --- a/src/backend/common/infrastructure/config/client/discord.ts +++ b/src/backend/common/infrastructure/config/client/discord.ts @@ -1,6 +1,7 @@ import * as z from "zod"; import {commonClientConfigSchema, commonClientDataSchema, type EnvClientSchema} from "./index.ts"; import {componentTypeSchema} from "../../../../../core/Atomic.ts"; +import { transformSplitMaybeString } from "../../../../utils/ZodUtils.ts"; export const statusTypeSchema = z.union([z.literal("online"), z.literal("idle"), z.literal("dnd"), z.literal("invisible")]); @@ -26,7 +27,7 @@ const envDataSchema = z.object({ DISCORD_APPLICATION_ID: discordDataSchema.shape.applicationId, DISCORD_IPC_LOCATIONS: discordDataSchema.shape.ipcLocations, DISCORD_ARTWORK_DEFAULT_URL: discordDataSchema.shape.artworkDefaultUrl, - DISCORD_STATUS_OVERRIDE_ALLOW: statusTypeSchema.optional(), + DISCORD_STATUS_OVERRIDE_ALLOW: z.string().optional().pipe(transformSplitMaybeString).meta(discordDataSchema.shape.statusOverrideAllow.meta()), DISCORD_LISTENING_ACTIVITY_ALLOW: discordDataSchema.shape.listeningActivityAllow, }); @@ -40,7 +41,7 @@ export const envSchemas: EnvClientSchema(); const envSchema = await getSourceEnvSchema(componentType); - const componentMockData = zocker(envSchema.env).generate(); + let zocObj = zocker(envSchema.env); + switch(componentType) { + case 'azuracast': + zocObj = zocObj.supply(envSchema.env.shape.AZURA_LISTENERS_NUM, true) + break; + case 'rocksky': + zocObj = zocObj.supply(envSchema.env.shape.SOURCE_ROCKSKY_HANDLE, 'foxxmd.dev') + break; + } + const componentMockData = zocObj.generate(); const primitives = generateCommonComponentEnvConfigSchema(envSchema.prefix.toLocaleUpperCase()); const primitiveMockData = zocker(primitives).generate(); primitiveMockData[`${envSchema.prefix.toLocaleUpperCase()}_ENABLE`] = true; @@ -213,7 +222,16 @@ describe('Sample Configs', function () { const emitter = new WildcardEmitter(); const envSchema = await getClientEnvSchema(componentType); - const componentMockData = zocker(envSchema.env).generate(); + let zocObj = zocker(envSchema.env); + switch(componentType) { + case 'rocksky': + zocObj = zocObj.supply(envSchema.env.shape.ROCKSKY_HANDLE, 'foxxmd.dev') + zocObj = zocObj.supply(envSchema.env.shape.ROCKSKY_TOKEN, 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkaWQ') + break; + case 'discord': + zocObj = zocObj.supply(envSchema.env.shape.DISCORD_STATUS_OVERRIDE_ALLOW, 'online') + } + const componentMockData = zocObj.generate(); const primitives = generateCommonComponentEnvConfigSchema(envSchema.prefix.toLocaleUpperCase()); const primitiveMockData = zocker(primitives).generate(); primitiveMockData[`${envSchema.prefix.toLocaleUpperCase()}_ENABLE`] = true; -- 2.51.2