diff --git a/src/web-server/routes/profile-routes.ts b/src/web-server/routes/profile-routes.ts index 70aad36b..1b1a209f 100644 --- a/src/web-server/routes/profile-routes.ts +++ b/src/web-server/routes/profile-routes.ts @@ -18,7 +18,7 @@ import { updateSettingsFile } from './route-helpers'; const router = Router(); -function parseTarget(rawTarget: unknown): TargetType | null { +export function parseTarget(rawTarget: unknown): TargetType | null { if (rawTarget === undefined || rawTarget === null || rawTarget === '') { return null; } diff --git a/src/web-server/routes/variant-routes.ts b/src/web-server/routes/variant-routes.ts index b6359c95..65a4c07b 100644 --- a/src/web-server/routes/variant-routes.ts +++ b/src/web-server/routes/variant-routes.ts @@ -24,7 +24,7 @@ import { const router = Router(); -function parseTarget(rawTarget: unknown): TargetType | null { +export function parseTarget(rawTarget: unknown): TargetType | null { if (rawTarget === undefined || rawTarget === null || rawTarget === '') { return null; } diff --git a/tests/unit/web-server/target-parse-routes.test.ts b/tests/unit/web-server/target-parse-routes.test.ts new file mode 100644 index 00000000..2852a749 --- /dev/null +++ b/tests/unit/web-server/target-parse-routes.test.ts @@ -0,0 +1,27 @@ +import { describe, expect, it } from 'bun:test'; + +import { parseTarget as parseProfileTarget } from '../../../src/web-server/routes/profile-routes'; +import { parseTarget as parseVariantTarget } from '../../../src/web-server/routes/variant-routes'; + +describe('route target parsing', () => { + it('accepts valid target values', () => { + expect(parseProfileTarget('claude')).toBe('claude'); + expect(parseProfileTarget('DROID')).toBe('droid'); + expect(parseVariantTarget(' claude ')).toBe('claude'); + expect(parseVariantTarget('droid')).toBe('droid'); + }); + + it('returns null for invalid target values', () => { + expect(parseProfileTarget('glm')).toBeNull(); + expect(parseProfileTarget('')).toBeNull(); + expect(parseVariantTarget('factory')).toBeNull(); + expect(parseVariantTarget(' ')).toBeNull(); + }); + + it('returns null for non-string values', () => { + expect(parseProfileTarget(undefined)).toBeNull(); + expect(parseProfileTarget(null)).toBeNull(); + expect(parseVariantTarget(123)).toBeNull(); + expect(parseVariantTarget({ target: 'claude' })).toBeNull(); + }); +});