Skip to content

Commit

Permalink
SW-27102 - changing custom email validation to PHPs FILTER_VALIDATE_E…
Browse files Browse the repository at this point in the history
…MAIL
  • Loading branch information
ennasus4sun committed May 10, 2023
1 parent 12c96cb commit 39cc714
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 61 deletions.
20 changes: 0 additions & 20 deletions .phpstan-baseline.neon
Original file line number Diff line number Diff line change
Expand Up @@ -42925,26 +42925,6 @@ parameters:
count: 1
path: tests/Unit/Components/DispatchFormatHelperTest.php

-
message: "#^Method Shopware\\\\Tests\\\\Unit\\\\Components\\\\EmailValidatorTest\\:\\:getValidEmails\\(\\) has no return type specified\\.$#"
count: 1
path: tests/Unit/Components/EmailValidatorTest.php

-
message: "#^Method Shopware\\\\Tests\\\\Unit\\\\Components\\\\EmailValidatorTest\\:\\:getinvalidEmails\\(\\) has no return type specified\\.$#"
count: 1
path: tests/Unit/Components/EmailValidatorTest.php

-
message: "#^Method Shopware\\\\Tests\\\\Unit\\\\Components\\\\EmailValidatorTest\\:\\:testInvalidEmails\\(\\) has no return type specified\\.$#"
count: 1
path: tests/Unit/Components/EmailValidatorTest.php

-
message: "#^Method Shopware\\\\Tests\\\\Unit\\\\Components\\\\EmailValidatorTest\\:\\:testValidEmails\\(\\) has no return type specified\\.$#"
count: 1
path: tests/Unit/Components/EmailValidatorTest.php

-
message: "#^Method Shopware\\\\Tests\\\\Unit\\\\Components\\\\Escaper\\\\EscaperTest\\:\\:testItCastsNullToEmptyStrings\\(\\) has no return type specified\\.$#"
count: 1
Expand Down
4 changes: 1 addition & 3 deletions engine/Shopware/Components/Validator/EmailValidator.php
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,6 @@ class EmailValidator implements EmailValidatorInterface
*/
public function isValid($emailAddress)
{
// Inspired by the regex used in symfony/validator
// See: https://github.com/symfony/validator/blob/dae70b74fe173461395cfd61a5c5245e05e511f5/Constraints/EmailValidator.php#L72
return (bool) preg_match('/^\S+\@\S+\.\S+$/', $emailAddress);
return (bool) filter_var($emailAddress, FILTER_VALIDATE_EMAIL);
}
}
80 changes: 42 additions & 38 deletions tests/Unit/Components/EmailValidatorTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -29,76 +29,80 @@

class EmailValidatorTest extends TestCase
{
/**
* @var EmailValidator
*/
private $SUT;
private EmailValidator $SUT;

protected function setUp(): void
{
$this->SUT = new EmailValidator();
}

public function getValidEmails()
/**
* @return array<string, array<int, string>>
*/
public function getValidEmails(): array
{
return [
// old domains
['test@example.de'],
['test@example.com'],
['test@example.org'],
'test@example.de' => ['test@example.de'],
'test@example.com' => ['test@example.com'],
'test@example.org' => ['test@example.org'],

// new released domains
['test@example.berlin'],
['test@example.email'],
['test@example.systems'],
'test@example.berlin' => ['test@example.berlin'],
'test@example.email' => ['test@example.email'],
'test@example.systems' => ['test@example.systems'],

// new non released domains
['test@example.active'],
['test@example.love'],
['test@example.video'],
['test@example.app'],
['test@example.shop'],
'test@example.active' => ['test@example.active'],
'test@example.love' => ['test@example.love'],
'test@example.video' => ['test@example.video'],
'test@example.app' => ['test@example.app'],
'test@example.shop' => ['test@example.shop'],

['disposable.style.email.with+symbol@example.com'],
['other.email-with-dash@example.com'],

// We will ignore quoted string local parts
// this would blow up the simple regex method
// array('"much.more unusual"@example.com'),
'disposable.style.email.with+symbol@example.com' => ['disposable.style.email.with+symbol@example.com'],
'other.email-with-dash@example.com' => ['other.email-with-dash@example.com'],
'"much.more.unusual"@example.com' => ['"much.more.unusual"@example.com'],
'!#$%&*+-/=?^_`.{|}~@example.com' => ['!#$%&*+-/=?^_`.{|}~@example.com'],
];
}

/**
* @dataProvider getValidEmails
*
* @param string $email
*/
public function testValidEmails($email)
public function testValidEmails(string $email): void
{
static::assertTrue($this->SUT->isValid($email));
}

public function getinvalidEmails()
/**
* @return array<string, array<int, string>>
*/
public function getInvalidEmails(): array
{
return [
['test'],
['test@.de'],
['@example'],
['@example.de'],
['@.'],
[' @foo.de'],
['@foo.'],
['foo@ .de'],
['foo@bar. '],
'test' => ['test'],
'test@.de' => ['test@.de'],
'@example' => ['@example'],
'@example.de' => ['@example.de'],
'@.' => ['@.'],
' @foo.de' => [' @foo.de'],
'@foo.' => ['@foo.'],
'foo@ .de' => ['foo@ .de'],
'foo@bar. ' => ['foo@bar. '],
"testing@example.com'||DBMS_PIPE.RECEIVE_MESSAGE(CHR(98)||CHR(98)||CHR(" => ["testing@example.com'||DBMS_PIPE.RECEIVE_MESSAGE(CHR(98)||CHR(98)||CHR("],
"testing@example.com'||''||'" => ["testing@example.com'||''||'"],
"testing@example.com'|||'" => ["testing@example.com'|||'"],
"testing@example.com'||'" => ["testing@example.com'||'"],
'test@example.com|' => ['test@example.com|'],
'test@example.com(' => ['test@example.com('],
'test@example.com"' => ['test@example.com"'],
];
}

/**
* @dataProvider getInvalidEmails
*
* @param string $email
*/
public function testInvalidEmails($email)
public function testInvalidEmails(string $email): void
{
static::assertFalse($this->SUT->isValid($email));
}
Expand Down

0 comments on commit 39cc714

Please sign in to comment.