Skip to content

Commit c3e9fa3

Browse files
authored
Merge pull request #3 from shawnhooper/feature-alias
Add Assertions for "Plus Sign Alias" Email Addresses
2 parents c89ff38 + e857b3e commit c3e9fa3

File tree

3 files changed

+44
-0
lines changed

3 files changed

+44
-0
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ This will prevent any method name conflicts with core, your custom or other trai
4242
\Astrotomic\PhpunitAssertions\EmailAssertions::assertValidStrict('gummibeer@astrotomic.info');
4343
\Astrotomic\PhpunitAssertions\EmailAssertions::assertDomain('astrotomic.info', 'gummibeer@astrotomic.info');
4444
\Astrotomic\PhpunitAssertions\EmailAssertions::assertLocalPart('gummibeer', 'gummibeer@astrotomic.info');
45+
\Astrotomic\PhpunitAssertions\EmailAssertions::assertPlusMailbox('gummibeer', 'gummibeer+news@astrotomic.info');
46+
\Astrotomic\PhpunitAssertions\EmailAssertions::assertPlusAlias('news', 'gummibeer+news@astrotomic.info');
4547
```
4648

4749
### Geographic

src/EmailAssertions.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,4 +33,20 @@ public static function assertLocalPart(string $expected, $actual): void
3333
[$localPart] = explode('@', $actual, 2);
3434
PHPUnit::assertSame($expected, $localPart);
3535
}
36+
37+
public static function assertPlusMailbox(string $expected, $actual): void
38+
{
39+
PHPUnit::assertIsString($actual);
40+
[$localPart] = explode('@', $actual, 2);
41+
[$mailbox] = explode('+', $localPart, 2);
42+
PHPUnit::assertSame($expected, $mailbox);
43+
}
44+
45+
public static function assertPlusAlias(string $expected, $actual): void
46+
{
47+
PHPUnit::assertIsString($actual);
48+
[$localPart] = explode('@', $actual, 2);
49+
[$mailbox, $alias] = explode('+', $localPart, 2);
50+
PHPUnit::assertSame($expected, $alias);
51+
}
3652
}

tests/EmailAssertionsTest.php

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,4 +43,30 @@ public static function it_can_validate_local_part(): void
4343

4444
EmailAssertions::assertLocalPart($localPart, $localPart.'@email.com');
4545
}
46+
47+
/**
48+
* @test
49+
* @dataProvider hundredTimes
50+
*/
51+
public static function it_can_validate_plus_mailbox(): void
52+
{
53+
$mailbox = self::randomString();
54+
$alias = self::randomBool();
55+
$email = $mailbox.'+'.$alias.'@email.com';
56+
57+
EmailAssertions::assertPlusMailbox($mailbox, $email);
58+
}
59+
60+
/**
61+
* @test
62+
* @dataProvider hundredTimes
63+
*/
64+
public static function it_can_validate_plus_alias(): void
65+
{
66+
$mailbox = self::randomString();
67+
$alias = self::randomBool();
68+
$email = $mailbox.'+'.$alias.'@email.com';
69+
70+
EmailAssertions::assertPlusAlias($alias, $email);
71+
}
4672
}

0 commit comments

Comments
 (0)