From 3c93e8d6f3df3875ef8a112216fa154cb0ed81a1 Mon Sep 17 00:00:00 2001 From: SirLouen Date: Sun, 24 Aug 2025 16:03:51 +0200 Subject: [PATCH] Adding Temporary Specific Tests for Native Function --- src/PHPMailer.php | 2 ++ test/PHPMailer/ParseAddressesTest.php | 47 +++++++++++++++++++++++++++ 2 files changed, 49 insertions(+) diff --git a/src/PHPMailer.php b/src/PHPMailer.php index 577d33f6..92203715 100644 --- a/src/PHPMailer.php +++ b/src/PHPMailer.php @@ -1338,6 +1338,8 @@ class PHPMailer } } } + + return $addresses; } /** diff --git a/test/PHPMailer/ParseAddressesTest.php b/test/PHPMailer/ParseAddressesTest.php index 1df2e9c2..ee9064f1 100644 --- a/test/PHPMailer/ParseAddressesTest.php +++ b/test/PHPMailer/ParseAddressesTest.php @@ -14,6 +14,7 @@ namespace PHPMailer\Test\PHPMailer; use PHPMailer\PHPMailer\PHPMailer; +use ReflectionMethod; use Yoast\PHPUnitPolyfills\TestCases\TestCase; /** @@ -93,6 +94,52 @@ final class ParseAddressesTest extends TestCase $this->verifyExpectations($parsed, $expectedOutput); } + /** + * Test RFC822 address splitting using the native implementation + * + * @dataProvider dataAddressSplittingNative + * + * @param string $addrstr The address list string. + * @param array $expected The expected function output. + * @param string $charset Optional.The charset to use. + */ + public function testAddressSplittingNative($addrstr, $expected, $charset = PHPMailer::CHARSET_ISO88591) + { + error_reporting(E_ALL & ~E_USER_NOTICE); + $reflMethod = new ReflectionMethod(PHPMailer::class, 'parseSimplerAddresses'); + (\PHP_VERSION_ID < 80100) && $reflMethod->setAccessible(true); + $parsed = $reflMethod->invoke(null, $addrstr, $charset); + (\PHP_VERSION_ID < 80100) && $reflMethod->setAccessible(false); + $this->verifyExpectations($parsed, $expected); + } + + /** + * Data provider for testAddressSplittingNative. + * + * @return array + * addrstr: string, + * expected: array{name: string, address: string}[] + * charset: string + */ + public function dataAddressSplittingNative() + { + return [ + 'Valid address: single address without name' => [ + 'addrstr' => 'joe@example.com', + 'expected' => [ + ['name' => '', 'address' => 'joe@example.com'], + ], + ], + 'Valid address: two addresses with names' => [ + 'addrstr' => 'Joe User , Jill User ', + 'expected' => [ + ['name' => 'Joe User', 'address' => 'joe@example.com'], + ['name' => 'Jill User', 'address' => 'jill@example.net'], + ], + ], + ]; + } + /** * Verify the expectations. *