ReplyToGetSetClearTest::testAddReplyToValidAddressNonIdn(): add additional test cases

This commit:
* Adds two extra test cases.
* Adds handling to allow the "expected" registered values (and key) being different from the original input values.
This commit is contained in:
jrfnl 2021-07-11 22:25:39 +02:00
parent 6ba19a260f
commit ce91079a56
1 changed files with 38 additions and 9 deletions

View File

@ -32,10 +32,12 @@ final class ReplyToGetSetClearTest extends PreSendTestCase
*
* @dataProvider dataAddReplyToValidAddressNonIdn
*
* @param string $address The email address to set.
* @param string $name Optional. The name to set.
* @param string $address The email address to set.
* @param string $name Optional. The name to set.
* @param string $expected Optional. The email address and name as they are expected to be set.
* Only needs to be passed if different than the original inputs.
*/
public function testAddReplyToValidAddressNonIdn($address, $name = null)
public function testAddReplyToValidAddressNonIdn($address, $name = null, $expected = null)
{
if (isset($name)) {
$result = $this->Mail->addReplyTo($address, $name);
@ -44,6 +46,14 @@ final class ReplyToGetSetClearTest extends PreSendTestCase
$name = '';
}
if (isset($expected) === false) {
$expected = [
'key' => $address,
'address' => $address,
'name' => $name,
];
}
// Test the setting is successful.
self::assertTrue($result, 'Replyto Addressing failed');
@ -52,24 +62,25 @@ final class ReplyToGetSetClearTest extends PreSendTestCase
self::assertIsArray($retrieved, 'ReplyTo property is not an array');
self::assertCount(1, $retrieved, 'ReplyTo property does not contain exactly one address');
$key = $expected['key'];
self::assertArrayHasKey(
$address,
$key,
$retrieved,
'ReplyTo property does not contain an entry with this address as the key'
);
self::assertCount(
2,
$retrieved[$address],
$retrieved[$key],
'ReplyTo array for this address does not contain exactly two array items'
);
self::assertSame(
$address,
$retrieved[$address][0],
$expected['address'],
$retrieved[$key][0],
'ReplyTo array for this address does not contain added address'
);
self::assertSame(
$name,
$retrieved[$address][1],
$expected['name'],
$retrieved[$key][1],
'ReplyTo array for this address does not contain added name'
);
}
@ -85,10 +96,28 @@ final class ReplyToGetSetClearTest extends PreSendTestCase
'Valid address' => [
'address' => 'a@example.com',
],
'Valid address with surrounding whitespace and mixed case' => [
'address' => " \tMiXeD@Example.Com \r\n",
'name' => null,
'expected' => [
'key' => 'mixed@example.com',
'address' => 'MiXeD@Example.Com',
'name' => '',
],
],
'Valid address with name' => [
'address' => 'a@example.com',
'name' => 'ReplyTo name',
],
'Valid address with name; name with whitespace and line breaks' => [
'address' => 'a@example.com',
'name' => "\t\t ReplyTo\r\nname ",
'expected' => [
'key' => 'a@example.com',
'address' => 'a@example.com',
'name' => 'ReplyToname',
],
],
];
}