diff --git a/x-pack/platform/plugins/shared/automatic_import/common/constants.ts b/x-pack/platform/plugins/shared/automatic_import/common/constants.ts index ee668a859cc05..109de8faf9e1a 100644 --- a/x-pack/platform/plugins/shared/automatic_import/common/constants.ts +++ b/x-pack/platform/plugins/shared/automatic_import/common/constants.ts @@ -48,7 +48,7 @@ export const CATEGORIZATION_REVIEW_MAX_CYCLES = 5; export const CATEGORIZATION_RECURSION_LIMIT = 50; // Name regex pattern -export const NAME_REGEX_PATTERN = /^[a-z0-9_]+$/; +export const NAME_REGEX_PATTERN = /^[a-z_][a-z0-9_]+$/; // Datastream name regex pattern. Same regex that for the name validation in elastic-package export const DATASTREAM_NAME_REGEX_PATTERN = /^([a-z0-9]{2}|[a-z0-9][a-z0-9_]+[a-z0-9])$/; diff --git a/x-pack/platform/plugins/shared/automatic_import/public/components/create_integration/create_automatic_import/steps/data_stream_step/data_stream_step.tsx b/x-pack/platform/plugins/shared/automatic_import/public/components/create_integration/create_automatic_import/steps/data_stream_step/data_stream_step.tsx index 3b3ac84635991..d929dae7812e3 100644 --- a/x-pack/platform/plugins/shared/automatic_import/public/components/create_integration/create_automatic_import/steps/data_stream_step/data_stream_step.tsx +++ b/x-pack/platform/plugins/shared/automatic_import/public/components/create_integration/create_automatic_import/steps/data_stream_step/data_stream_step.tsx @@ -195,7 +195,7 @@ export const DataStreamStep = React.memo( { expect(isValidName('valid_name')).toBe(true); expect(isValidName('anothervalidname')).toBe(true); }); + it('should return false for names starting with numbers', () => { + expect(isValidName('123name')).toBe(false); + expect(isValidName('1name')).toBe(false); + expect(isValidName('999invalid')).toBe(false); + }); + + it('should return false for names starting with underscore', () => { + expect(isValidName('_name')).toBe(true); + expect(isValidName('_invalid_name')).toBe(true); + expect(isValidName('__name')).toBe(true); + }); + + it('should return true for names starting with letters followed by numbers', () => { + expect(isValidName('name123')).toBe(true); + expect(isValidName('valid1')).toBe(true); + expect(isValidName('valid_123')).toBe(true); + }); it('should return false for empty string', () => { expect(isValidName('')).toBe(false);