diff --git a/packages/authenticator/amplify_authenticator/lib/src/mixins/authenticator_phone_field.dart b/packages/authenticator/amplify_authenticator/lib/src/mixins/authenticator_phone_field.dart index a03679c879..be4a31ff62 100644 --- a/packages/authenticator/amplify_authenticator/lib/src/mixins/authenticator_phone_field.dart +++ b/packages/authenticator/amplify_authenticator/lib/src/mixins/authenticator_phone_field.dart @@ -47,7 +47,8 @@ mixin AuthenticatorPhoneFieldMixin get validator { switch (selectedUsernameType) { @@ -183,7 +192,7 @@ mixin AuthenticatorUsernameField validatePhoneNumber({ InputResolverKey.phoneNumberEmpty, ); } - phoneNumber = phoneNumber.trim(); - if (!phoneNumberRegex.hasMatch(phoneNumber)) { + final formattedNumber = phoneNumber.trim(); + if (!phoneNumberRegex.hasMatch(formattedNumber)) { return inputResolver.resolve(context, InputResolverKey.phoneNumberFormat); } return null; diff --git a/packages/authenticator/amplify_authenticator/lib/src/widgets/form_fields/confirm_sign_in_form_field.dart b/packages/authenticator/amplify_authenticator/lib/src/widgets/form_fields/confirm_sign_in_form_field.dart index 409faffa3f..1407e7e153 100644 --- a/packages/authenticator/amplify_authenticator/lib/src/widgets/form_fields/confirm_sign_in_form_field.dart +++ b/packages/authenticator/amplify_authenticator/lib/src/widgets/form_fields/confirm_sign_in_form_field.dart @@ -559,7 +559,7 @@ class _ConfirmSignInPhoneFieldState extends _ConfirmSignInTextFieldState @override FormFieldValidator get validator { return (phoneNumber) { - phoneNumber = formatPhoneNumber(phoneNumber); + phoneNumber = displayPhoneNumber(phoneNumber); return validatePhoneNumber( inputResolver: stringResolver.inputs, context: context, diff --git a/packages/authenticator/amplify_authenticator/lib/src/widgets/form_fields/phone_number_field.dart b/packages/authenticator/amplify_authenticator/lib/src/widgets/form_fields/phone_number_field.dart index b3cb32a3bd..c9dac65ebd 100644 --- a/packages/authenticator/amplify_authenticator/lib/src/widgets/form_fields/phone_number_field.dart +++ b/packages/authenticator/amplify_authenticator/lib/src/widgets/form_fields/phone_number_field.dart @@ -86,11 +86,12 @@ class _AuthenticatorPhoneFieldState @override FormFieldValidator get validator { return (String? phoneNumber) { - phoneNumber = formatPhoneNumber(phoneNumber); final validator = widget.validator; if (validator != null) { + phoneNumber = formatPhoneNumber(phoneNumber); return validator(phoneNumber); } + phoneNumber = displayPhoneNumber(phoneNumber); return validatePhoneNumber( inputResolver: stringResolver.inputs, context: context, diff --git a/packages/authenticator/amplify_authenticator/lib/src/widgets/form_fields/sign_up_form_field.dart b/packages/authenticator/amplify_authenticator/lib/src/widgets/form_fields/sign_up_form_field.dart index 94b9e39517..c365372cb5 100644 --- a/packages/authenticator/amplify_authenticator/lib/src/widgets/form_fields/sign_up_form_field.dart +++ b/packages/authenticator/amplify_authenticator/lib/src/widgets/form_fields/sign_up_form_field.dart @@ -738,7 +738,7 @@ class _SignUpPhoneFieldState extends _SignUpTextFieldState @override FormFieldValidator get validator { return (phoneNumber) { - phoneNumber = formatPhoneNumber(phoneNumber); + phoneNumber = displayPhoneNumber(phoneNumber); return validatePhoneNumber( inputResolver: stringResolver.inputs, context: context, diff --git a/packages/authenticator/amplify_authenticator/test/sign_up_form_test.dart b/packages/authenticator/amplify_authenticator/test/sign_up_form_test.dart index 119bf106b7..683c6d68d3 100644 --- a/packages/authenticator/amplify_authenticator/test/sign_up_form_test.dart +++ b/packages/authenticator/amplify_authenticator/test/sign_up_form_test.dart @@ -118,6 +118,44 @@ void main() { }, ); + testWidgets( + 'displays message when submitted with empty phone number if the field is required', + (tester) async { + await tester.pumpWidget( + MockAuthenticatorApp( + initialStep: AuthenticatorStep.signUp, + signUpForm: SignUpForm.custom( + fields: [ + SignUpFormField.username(), + SignUpFormField.phoneNumber(required: true), + SignUpFormField.password(), + ], + ), + ), + ); + await tester.pumpAndSettle(); + + final signUpPage = SignUpPage(tester: tester); + + await signUpPage.submitSignUp(); + + await tester.pumpAndSettle(); + + Finder findPhoneFieldError() => find.descendant( + of: signUpPage.phoneField, + matching: find.text('Phone Number field must not be blank.'), + ); + + expect(findPhoneFieldError(), findsOneWidget); + + await signUpPage.enterPhoneNumber('1235556789'); + + await signUpPage.submitSignUp(); + + expect(findPhoneFieldError(), findsNothing); + }, + ); + testWidgets( 'displays message when submitted with invalid birth date', (tester) async {