diff --git a/contexts/MembershipContext/src/Domain/Model/EmailAddress.php b/contexts/MembershipContext/src/Domain/Model/EmailAddress.php index d7cccd8a5..3553e62e1 100644 --- a/contexts/MembershipContext/src/Domain/Model/EmailAddress.php +++ b/contexts/MembershipContext/src/Domain/Model/EmailAddress.php @@ -23,6 +23,10 @@ public function __construct( string $emailAddress ) { $this->userName = $addressParts[0]; $this->domain = $addressParts[1]; + + if ( trim( $this->domain ) === '' ) { + throw new \InvalidArgumentException( 'Email domain cannot be empty' ); + } } public function getUserName(): string { diff --git a/contexts/MembershipContext/tests/Unit/Domain/Model/EmailAddressTest.php b/contexts/MembershipContext/tests/Unit/Domain/Model/EmailAddressTest.php index 4bad2b5b0..ff6176b8a 100644 --- a/contexts/MembershipContext/tests/Unit/Domain/Model/EmailAddressTest.php +++ b/contexts/MembershipContext/tests/Unit/Domain/Model/EmailAddressTest.php @@ -2,7 +2,7 @@ declare( strict_types = 1 ); -namespace WMDE\Fundraising\Frontend\Tests\Unit\MembershipContext\Domain\Model; +namespace WMDE\Fundraising\Frontend\MembershipContext\Tests\Unit\Domain\Model; use WMDE\Fundraising\Frontend\MembershipContext\Domain\Model\EmailAddress; @@ -11,6 +11,7 @@ * * @licence GNU GPL v2+ * @author Kai Nissen < kai.nissen@wikimedia.de > + * @author Jeroen De Dauw < jeroendedauw@gmail.com > */ class EmailAddressTest extends \PHPUnit_Framework_TestCase { @@ -33,6 +34,11 @@ public function unparsableAddressProvider() { ]; } + public function testWhenDomainIsEmpty_constructorThrowsException() { + $this->expectException( \InvalidArgumentException::class ); + new EmailAddress( 'jeroendedauw@' ); + } + public function testGetFullAddressReturnsOriginalInput() { $email = new EmailAddress( 'jeroendedauw@gmail.com' );