From eb53272faa40f199dc6ae41e79b4ff633855c499 Mon Sep 17 00:00:00 2001 From: Nidhi Patadia <nidhipatadia27@gmail.com> Date: Tue, 25 Mar 2025 12:26:59 +0530 Subject: [PATCH 1/8] Add validation to verify email form. --- src/Form/VerifyEmailForm.php | 33 +++++++++++++++++ tests/src/Functional/VerifyEmailFormTest.php | 39 ++++++++++++++++++++ 2 files changed, 72 insertions(+) create mode 100644 tests/src/Functional/VerifyEmailFormTest.php diff --git a/src/Form/VerifyEmailForm.php b/src/Form/VerifyEmailForm.php index 221106c..978cdf7 100644 --- a/src/Form/VerifyEmailForm.php +++ b/src/Form/VerifyEmailForm.php @@ -4,15 +4,43 @@ namespace Drupal\verify_email\Form; +use Drupal\Component\Utility\EmailValidatorInterface; use Drupal\Core\Form\FormBase; use Drupal\Core\Form\FormStateInterface; use Drupal\verify_email\VerifyEmailInterface; +use Symfony\Component\DependencyInjection\ContainerInterface; /** * Provides a Verify Email form. */ final class VerifyEmailForm extends FormBase { + /** + * The email validator. + * + * @var \Drupal\Component\Utility\EmailValidatorInterface + */ + protected $emailValidator; + + /** + * Constructs a new VerifyEmailForm. + * + * @param \Drupal\Component\Utility\EmailValidatorInterface $email_validator + * The email validator service. + */ + public function __construct(EmailValidatorInterface $email_validator) { + $this->emailValidator = $email_validator; + } + + /** + * {@inheritdoc} + */ + public static function create(ContainerInterface $container): self { + return new static( + $container->get('email.validator') + ); + } + /** * {@inheritdoc} */ @@ -62,6 +90,11 @@ public function validateForm(array &$form, FormStateInterface $form_state): void // ); // } // @endcode + // Use the email validator service to validate the email address. + $email = $form_state->getValue('message'); + if (!$this->emailValidator->isValid($email)) { + $form_state->setErrorByName('message', $this->t('The email address %email is not valid.', ['%email' => $email])); + } } /** diff --git a/tests/src/Functional/VerifyEmailFormTest.php b/tests/src/Functional/VerifyEmailFormTest.php new file mode 100644 index 0000000..3c1a283 --- /dev/null +++ b/tests/src/Functional/VerifyEmailFormTest.php @@ -0,0 +1,39 @@ +<?php + +declare(strict_types=1); + +namespace Drupal\Tests\verify_email\Functional; + +use Drupal\Tests\BrowserTestBase; + +/** + * Tests the Verify Email form. + */ +#[Group('verify_email')] +final class VerifyEmailFormTest extends BrowserTestBase { + + /** + * {@inheritdoc} + */ + protected static $modules = ['verify_email']; + + /** + * Tests invalid email validation. + */ + public function testInvalidEmail(): void { + // Visit the Verify Email form. + $this->drupalGet('/verify-email'); + + // Ensure the form is displayed. + $this->assertSession()->statusCodeEquals(200); + $this->assertSession()->pageTextContains('Please enter your email address below.'); + + // Submit the form with an invalid email address. + $this->submitForm([ + 'message' => 'invalid-email', + ], 'Verify'); + + // Assert that an error message is displayed. + $this->assertSession()->pageTextContains('The email address invalid-email is not valid.'); + } +} -- GitLab From 6b4672aea51dc5d86ea676869183d7bbc1f17e8d Mon Sep 17 00:00:00 2001 From: Nidhi Patadia <nidhipatadia27@gmail.com> Date: Tue, 25 Mar 2025 12:35:09 +0530 Subject: [PATCH 2/8] Add validation to verify email form. --- tests/src/Functional/VerifyEmailFormTest.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/src/Functional/VerifyEmailFormTest.php b/tests/src/Functional/VerifyEmailFormTest.php index 3c1a283..07fa856 100644 --- a/tests/src/Functional/VerifyEmailFormTest.php +++ b/tests/src/Functional/VerifyEmailFormTest.php @@ -17,6 +17,11 @@ final class VerifyEmailFormTest extends BrowserTestBase { */ protected static $modules = ['verify_email']; + /** + * {@inheritdoc} + */ + protected $defaultTheme = 'stark'; + /** * Tests invalid email validation. */ -- GitLab From f41d86bc53e100c65691a65c63a99ca8610d552d Mon Sep 17 00:00:00 2001 From: Nidhi Patadia <nidhipatadia27@gmail.com> Date: Tue, 25 Mar 2025 12:52:16 +0530 Subject: [PATCH 3/8] Add validation to verify email form. --- tests/src/Functional/VerifyEmailFormTest.php | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/src/Functional/VerifyEmailFormTest.php b/tests/src/Functional/VerifyEmailFormTest.php index 07fa856..cc4dbb0 100644 --- a/tests/src/Functional/VerifyEmailFormTest.php +++ b/tests/src/Functional/VerifyEmailFormTest.php @@ -41,4 +41,5 @@ public function testInvalidEmail(): void { // Assert that an error message is displayed. $this->assertSession()->pageTextContains('The email address invalid-email is not valid.'); } + } -- GitLab From b5c3f66e807572acf26b9cbbd445fbb815479306 Mon Sep 17 00:00:00 2001 From: Nidhi Patadia <nidhipatadia27@gmail.com> Date: Tue, 25 Mar 2025 13:08:01 +0530 Subject: [PATCH 4/8] Add validation to verify email form. --- tests/src/Functional/VerifyEmailFormTest.php | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/tests/src/Functional/VerifyEmailFormTest.php b/tests/src/Functional/VerifyEmailFormTest.php index cc4dbb0..af32e4a 100644 --- a/tests/src/Functional/VerifyEmailFormTest.php +++ b/tests/src/Functional/VerifyEmailFormTest.php @@ -8,8 +8,9 @@ /** * Tests the Verify Email form. + * + * @group verify_email */ -#[Group('verify_email')] final class VerifyEmailFormTest extends BrowserTestBase { /** @@ -22,6 +23,21 @@ final class VerifyEmailFormTest extends BrowserTestBase { */ protected $defaultTheme = 'stark'; + /** + * {@inheritdoc} + */ + protected $adminUser; + + /** + * {@inheritdoc} + */ + protected function setUp(): void { + parent::setUp(); + // Set up the test here. + $this->adminUser = $this->drupalCreateUser(['access content']); + $this->drupalLogin($this->adminUser); + } + /** * Tests invalid email validation. */ -- GitLab From 9caeaaab100b0123e955261419cf4a78bd544b60 Mon Sep 17 00:00:00 2001 From: KPL22 <Keshav.patel@3ds.com> Date: Wed, 26 Mar 2025 10:49:21 +0530 Subject: [PATCH 5/8] Issue #3515147: Improved constructor code --- src/Form/VerifyEmailForm.php | 19 +++---------------- 1 file changed, 3 insertions(+), 16 deletions(-) diff --git a/src/Form/VerifyEmailForm.php b/src/Form/VerifyEmailForm.php index 978cdf7..e805e3a 100644 --- a/src/Form/VerifyEmailForm.php +++ b/src/Form/VerifyEmailForm.php @@ -15,30 +15,16 @@ */ final class VerifyEmailForm extends FormBase { - /** - * The email validator. - * - * @var \Drupal\Component\Utility\EmailValidatorInterface - */ - protected $emailValidator; - /** * Constructs a new VerifyEmailForm. - * - * @param \Drupal\Component\Utility\EmailValidatorInterface $email_validator - * The email validator service. */ - public function __construct(EmailValidatorInterface $email_validator) { - $this->emailValidator = $email_validator; - } + public function __construct(protected EmailValidatorInterface $emailValidator) {} /** * {@inheritdoc} */ public static function create(ContainerInterface $container): self { - return new static( - $container->get('email.validator') - ); + return new static($container->get('email.validator')); } /** @@ -90,6 +76,7 @@ public function validateForm(array &$form, FormStateInterface $form_state): void // ); // } // @endcode + // Use the email validator service to validate the email address. $email = $form_state->getValue('message'); if (!$this->emailValidator->isValid($email)) { -- GitLab From 9d5087e09b86a2356e712468f82a16c1c7b757a4 Mon Sep 17 00:00:00 2001 From: lostcarpark <james@lostcarpark.com> Date: Wed, 26 Mar 2025 13:43:01 +0000 Subject: [PATCH 6/8] Remove boilerplate from validation function. --- src/Form/VerifyEmailForm.php | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/src/Form/VerifyEmailForm.php b/src/Form/VerifyEmailForm.php index e805e3a..b2bdb99 100644 --- a/src/Form/VerifyEmailForm.php +++ b/src/Form/VerifyEmailForm.php @@ -66,17 +66,6 @@ public function buildForm(array $form, FormStateInterface $form_state, VerifyEma * {@inheritdoc} */ public function validateForm(array &$form, FormStateInterface $form_state): void { - // @todo Validate the form here. - // Example: - // @code - // if (mb_strlen($form_state->getValue('message')) < 10) { - // $form_state->setErrorByName( - // 'message', - // $this->t('Message should be at least 10 characters.'), - // ); - // } - // @endcode - // Use the email validator service to validate the email address. $email = $form_state->getValue('message'); if (!$this->emailValidator->isValid($email)) { -- GitLab From e6c3dff8388cdc8d2e228c7a18d69f545acc4ab0 Mon Sep 17 00:00:00 2001 From: Nidhi Patadia <nidhipatadia27@gmail.com> Date: Wed, 26 Mar 2025 20:24:30 +0530 Subject: [PATCH 7/8] Added php unit test. --- tests/src/Functional/VerifyEmailFormTest.php | 61 ------------------- .../src/Functional/VerifyEmailRoutingTest.php | 13 ++++ 2 files changed, 13 insertions(+), 61 deletions(-) delete mode 100644 tests/src/Functional/VerifyEmailFormTest.php diff --git a/tests/src/Functional/VerifyEmailFormTest.php b/tests/src/Functional/VerifyEmailFormTest.php deleted file mode 100644 index af32e4a..0000000 --- a/tests/src/Functional/VerifyEmailFormTest.php +++ /dev/null @@ -1,61 +0,0 @@ -<?php - -declare(strict_types=1); - -namespace Drupal\Tests\verify_email\Functional; - -use Drupal\Tests\BrowserTestBase; - -/** - * Tests the Verify Email form. - * - * @group verify_email - */ -final class VerifyEmailFormTest extends BrowserTestBase { - - /** - * {@inheritdoc} - */ - protected static $modules = ['verify_email']; - - /** - * {@inheritdoc} - */ - protected $defaultTheme = 'stark'; - - /** - * {@inheritdoc} - */ - protected $adminUser; - - /** - * {@inheritdoc} - */ - protected function setUp(): void { - parent::setUp(); - // Set up the test here. - $this->adminUser = $this->drupalCreateUser(['access content']); - $this->drupalLogin($this->adminUser); - } - - /** - * Tests invalid email validation. - */ - public function testInvalidEmail(): void { - // Visit the Verify Email form. - $this->drupalGet('/verify-email'); - - // Ensure the form is displayed. - $this->assertSession()->statusCodeEquals(200); - $this->assertSession()->pageTextContains('Please enter your email address below.'); - - // Submit the form with an invalid email address. - $this->submitForm([ - 'message' => 'invalid-email', - ], 'Verify'); - - // Assert that an error message is displayed. - $this->assertSession()->pageTextContains('The email address invalid-email is not valid.'); - } - -} diff --git a/tests/src/Functional/VerifyEmailRoutingTest.php b/tests/src/Functional/VerifyEmailRoutingTest.php index a36f9e2..bb886b2 100644 --- a/tests/src/Functional/VerifyEmailRoutingTest.php +++ b/tests/src/Functional/VerifyEmailRoutingTest.php @@ -59,4 +59,17 @@ public function testVerifyEmailRoute(): void { $this->assertSession()->pageTextContains('Enter your email address.'); } + /** + * Tests invalid email validation. + */ + public function testInvalidEmail(): void { + $this->drupalGet('/verify-email-form'); + $this->assertSession()->statusCodeEquals(200); + // Submit the form with an invalid email address. + $this->submitForm([ + 'message' => 'invalid-email', + ], 'Verify'); + $this->assertSession()->pageTextContains('The email address invalid-email is not valid.'); + } + } -- GitLab From 45dc1dae11877f343d96c410c85768eaf93c3ced Mon Sep 17 00:00:00 2001 From: lostcarpark <james@lostcarpark.com> Date: Wed, 26 Mar 2025 17:47:30 +0000 Subject: [PATCH 8/8] Update field name in test. --- src/Form/VerifyEmailForm.php | 6 +++--- tests/src/Functional/VerifyEmailRoutingTest.php | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Form/VerifyEmailForm.php b/src/Form/VerifyEmailForm.php index b2bdb99..18721ea 100644 --- a/src/Form/VerifyEmailForm.php +++ b/src/Form/VerifyEmailForm.php @@ -45,7 +45,7 @@ public function buildForm(array $form, FormStateInterface $form_state, VerifyEma '#suffix' => '</div>', ]; - $form['message'] = [ + $form['email'] = [ '#type' => 'textfield', '#title' => $this->t('Enter your email address'), '#required' => TRUE, @@ -67,9 +67,9 @@ public function buildForm(array $form, FormStateInterface $form_state, VerifyEma */ public function validateForm(array &$form, FormStateInterface $form_state): void { // Use the email validator service to validate the email address. - $email = $form_state->getValue('message'); + $email = $form_state->getValue('email'); if (!$this->emailValidator->isValid($email)) { - $form_state->setErrorByName('message', $this->t('The email address %email is not valid.', ['%email' => $email])); + $form_state->setErrorByName('email', $this->t('The email address %email is not valid.', ['%email' => $email])); } } diff --git a/tests/src/Functional/VerifyEmailRoutingTest.php b/tests/src/Functional/VerifyEmailRoutingTest.php index bb886b2..a672585 100644 --- a/tests/src/Functional/VerifyEmailRoutingTest.php +++ b/tests/src/Functional/VerifyEmailRoutingTest.php @@ -67,7 +67,7 @@ public function testInvalidEmail(): void { $this->assertSession()->statusCodeEquals(200); // Submit the form with an invalid email address. $this->submitForm([ - 'message' => 'invalid-email', + 'email' => 'invalid-email', ], 'Verify'); $this->assertSession()->pageTextContains('The email address invalid-email is not valid.'); } -- GitLab