diff --git a/backend/src/middlewares/request-validators/room-validator.middleware.ts b/backend/src/middlewares/request-validators/room-validator.middleware.ts index 60f7eb7..b32b478 100644 --- a/backend/src/middlewares/request-validators/room-validator.middleware.ts +++ b/backend/src/middlewares/request-validators/room-validator.middleware.ts @@ -99,7 +99,7 @@ const RoomThemeSchema = z.object({ .string() .min(1, 'Theme name cannot be empty') .max(50, 'Theme name cannot exceed 50 characters') - .regex(/^[a-z0-9_-]+$/, 'Theme name can only contain lowercase letters, numbers, hyphens and underscores'), + .regex(/^[a-zA-Z0-9_-]+$/, 'Theme name can only contain letters, numbers, hyphens and underscores'), enabled: z.boolean(), baseTheme: ThemeModeSchema, backgroundColor: hexColorSchema.optional(), diff --git a/backend/tests/integration/api/global-config/appearance.test.ts b/backend/tests/integration/api/global-config/appearance.test.ts index 0f709c0..f0149db 100644 --- a/backend/tests/integration/api/global-config/appearance.test.ts +++ b/backend/tests/integration/api/global-config/appearance.test.ts @@ -182,12 +182,9 @@ describe('Rooms Appearance Config API Tests', () => { it('should reject when theme name has invalid characters', async () => { const invalidNames = [ - 'Corporate Blue', // Uppercase and spaces - 'dark-mode-2024!', // Exclamation mark - 'theme.corporate', // Dot - 'Dark_Mode', // Uppercase - 'theme 1', // Space - 'thème-français' // Accents + 'Corporate Blue', // Spaces + 'dark-mode.2024!', // Special characters + 'thème_français' // Accents ]; for (const name of invalidNames) { @@ -206,7 +203,7 @@ describe('Rooms Appearance Config API Tests', () => { expectValidationError( response, 'appearance.themes.0.name', - 'Theme name can only contain lowercase letters, numbers, hyphens and underscores' + 'Theme name can only contain letters, numbers, hyphens and underscores' ); } });