Skip to content

Commit

Permalink
fixes #11424 Enchament to email class error message
Browse files Browse the repository at this point in the history
  • Loading branch information
AlexAlexandru committed Aug 1, 2018
1 parent a58eb70 commit 8c3982b
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 14 deletions.
18 changes: 11 additions & 7 deletions lib/Cake/Network/Email/CakeEmail.php
Expand Up @@ -589,7 +589,7 @@ public function emailPattern($regex = false) {
*/
protected function _setEmail($varName, $email, $name) {
if (!is_array($email)) {
$this->_validateEmail($email);
$this->_validateEmail($email, $varName);
if ($name === null) {
$name = $email;
}
Expand All @@ -601,7 +601,7 @@ protected function _setEmail($varName, $email, $name) {
if (is_int($key)) {
$key = $value;
}
$this->_validateEmail($key);
$this->_validateEmail($key, $varName);
$list[$key] = $value;
}
$this->{$varName} = $list;
Expand All @@ -611,19 +611,23 @@ protected function _setEmail($varName, $email, $name) {
/**
* Validate email address
*
* @param string $email Email
* @param string $email Email address to validate
* @param string $context Which property was set
* @return void
* @throws SocketException If email address does not validate
*/
protected function _validateEmail($email) {
protected function _validateEmail($email, $context) {
if ($this->_emailPattern === null) {
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
return;
}
} elseif (preg_match($this->_emailPattern, $email)) {
return;
}
throw new SocketException(__d('cake_dev', 'Invalid email: "%s"', $email));
if ($email == '') {
throw new SocketException(__d('cake_dev', 'The email set for "%s" is empty.', $context));
}
throw new SocketException(__d('cake_dev', 'Invalid email set for "%s". You passed "%s".', $context, $email));
}

/**
Expand Down Expand Up @@ -659,7 +663,7 @@ protected function _setEmailSingle($varName, $email, $name, $throwMessage) {
*/
protected function _addEmail($varName, $email, $name) {
if (!is_array($email)) {
$this->_validateEmail($email);
$this->_validateEmail($email, $varName);
if ($name === null) {
$name = $email;
}
Expand All @@ -671,7 +675,7 @@ protected function _addEmail($varName, $email, $name) {
if (is_int($key)) {
$key = $value;
}
$this->_validateEmail($key);
$this->_validateEmail($key, $varName);
$list[$key] = $value;
}
$this->{$varName} = array_merge($this->{$varName}, $list);
Expand Down
25 changes: 18 additions & 7 deletions lib/Cake/Test/Case/Network/Email/CakeEmailTest.php
Expand Up @@ -334,23 +334,34 @@ public static function invalidEmails() {
/**
* testBuildInvalidData
*
* @dataProvider invalidEmails
* @expectedException SocketException
* @expectedExceptionMessage The email set for "_to" is empty.
* @return void
*/
public function testInvalidEmail($value) {
$this->CakeEmail->to($value);
public function testInvalidEmail() {
$this->CakeEmail->to('');
}

/**
* testBuildInvalidData
*
* @expectedException SocketException
* @expectedExceptionMessage Invalid email set for "_from". You passed "cake.@"
* @return void
*/
public function testInvalidFrom() {
$this->CakeEmail->from('cake.@');
}

/**
* testBuildInvalidData
*
* @dataProvider invalidEmails
* @expectedException SocketException
* @expectedExceptionMessage Invalid email set for "_to". You passed "1"
* @return void
*/
public function testInvalidEmailAdd($value) {
$this->CakeEmail->addTo($value);
public function testInvalidEmailAdd() {
$this->CakeEmail->addTo('1');
}

/**
Expand Down Expand Up @@ -423,7 +434,7 @@ public function testCustomEmailValidation() {
* @return void
*
* @expectedException SocketException
* @expectedExceptionMessage Invalid email: "fail.@example.com"
* @expectedExceptionMessage Invalid email set for "_to". You passed "fail.@example.com"
*/
public function testUnsetEmailPattern() {
$email = new CakeEmail();
Expand Down

0 comments on commit 8c3982b

Please sign in to comment.