-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathEmailDomainTest.php
More file actions
55 lines (43 loc) · 1.55 KB
/
Copy pathEmailDomainTest.php
File metadata and controls
55 lines (43 loc) · 1.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<?php
declare(strict_types=1);
namespace App\Tests\Unit\Security;
use App\Entity\User;
use App\Security\EmailDomain;
use PHPUnit\Framework\TestCase;
final class EmailDomainTest extends TestCase
{
// Tests that the domain part is returned in lowercase.
public function testReturnsLowercasedDomain(): void
{
$user = new User();
$user->setEmail('Alice@Aarhus.DK');
self::assertSame('aarhus.dk', EmailDomain::of($user));
}
// Verifies null is returned when the user has no email set.
public function testReturnsNullForUserWithoutEmail(): void
{
self::assertNull(EmailDomain::of(new User()));
}
// Ensures null is returned for input that contains no '@'.
public function testReturnsNullWhenEmailHasNoAtSign(): void
{
$user = new User();
$user->setEmail('not-an-email');
self::assertNull(EmailDomain::of($user));
}
// Ensures null is returned for input with an empty domain part (trailing '@').
public function testReturnsNullWhenEmailEndsWithAtSign(): void
{
$user = new User();
$user->setEmail('orphan@');
self::assertNull(EmailDomain::of($user));
}
// Tests that 'user+tag@domain' still resolves to the bare domain.
public function testHandlesSubaddressingByKeepingTheDomainOnly(): void
{
// "user+tag@domain" still has exactly one @; the helper splits on the rightmost.
$user = new User();
$user->setEmail('alice+sub@aarhus.dk');
self::assertSame('aarhus.dk', EmailDomain::of($user));
}
}