diff --git a/packages/teams-js/src/internal/emailAddressValidation.ts b/packages/teams-js/src/internal/emailAddressValidation.ts index ba25b61cf7..a361826e5d 100644 --- a/packages/teams-js/src/internal/emailAddressValidation.ts +++ b/packages/teams-js/src/internal/emailAddressValidation.ts @@ -1,6 +1,9 @@ -export function validateEmailAddress(emailString: string): void { - const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; - if (!emailRegex.test(emailString)) { +export function validateEmailAddress(emailString: string | null | undefined): void { + const emailIsEmptyOrUndefined = emailString ? emailString.length <= 0 : true; + const atIndex = emailString?.indexOf('@'); + const periodIndexAfterAt = emailString?.indexOf('.', atIndex); + + if (emailIsEmptyOrUndefined || atIndex === -1 || periodIndexAfterAt === -1) { throw new Error('Input email address does not have the correct format.'); } } diff --git a/packages/teams-js/test/internal/emailAddressValidation.spec.ts b/packages/teams-js/test/internal/emailAddressValidation.spec.ts index 49d39b3348..1721c9a201 100644 --- a/packages/teams-js/test/internal/emailAddressValidation.spec.ts +++ b/packages/teams-js/test/internal/emailAddressValidation.spec.ts @@ -1,7 +1,7 @@ import { validateEmailAddress } from '../../src/internal/emailAddressValidation'; describe('emailAddressValidation', () => { - const invalidEmails = ['@@domain.com', 'firstname lastname@domain.com', 'name@domain']; + const invalidEmails = ['domain.com', 'name.domain@com', 'name@domain', '', null]; invalidEmails.forEach((invalidEmail) => { it('should throw errors for invalid email addresses', () => { expect(() => validateEmailAddress(invalidEmail)).toThrow('Input email address does not have the correct format.'); @@ -16,8 +16,9 @@ describe('emailAddressValidation', () => { validEmails.forEach((validEmail) => { it('should not throw errors for valid email addresses', () => { expect(() => validateEmailAddress(validEmail)).not.toThrow( - 'Input email address does not have the correct format.', + 'Input email address does not have the correct format.' ); }); }); }); + diff --git a/packages/teams-js/test/public/emailAddress.spec.ts b/packages/teams-js/test/public/emailAddress.spec.ts index 3dae0726e1..4545ed18d8 100644 --- a/packages/teams-js/test/public/emailAddress.spec.ts +++ b/packages/teams-js/test/public/emailAddress.spec.ts @@ -1,7 +1,7 @@ import { EmailAddress } from '../../src/public'; describe('emailAddress', () => { - const invalidEmails = ['@@domain.com', 'firstname lastname@domain.com', 'name@domain']; + const invalidEmails = ['domain.com', 'name.domain@com', 'name@domain']; invalidEmails.forEach((invalidEmail) => { it('should throw errors for invalid email addresses', () => { expect(() => new EmailAddress(invalidEmail)).toThrowError(