WordPress.org

Make WordPress Core

Ticket #21659: 21659-tests.diff

File 21659-tests.diff, 2.2 KB (added by iandunn, 3 years ago)
  • tests/phpunit/includes/mock-mailer.php

    diff --git tests/phpunit/includes/mock-mailer.php tests/phpunit/includes/mock-mailer.php
    index c91a67a..7acfd57 100644
    class MockPHPMailer extends PHPMailer { 
    1717                        'to'      => $this->to,
    1818                        'cc'      => $this->cc,
    1919                        'bcc'     => $this->bcc,
    20                         'header'  => $this->MIMEHeader,
     20                        'header'  => $this->MIMEHeader . $this->mailHeader,
    2121                        'subject' => $this->Subject,
    2222                        'body'    => $this->MIMEBody,
    2323                );
  • tests/phpunit/tests/mail.php

    diff --git tests/phpunit/tests/mail.php tests/phpunit/tests/mail.php
    index 5142c72..27bc739 100644
    class Tests_Mail extends WP_UnitTestCase { 
    307307
    308308                $this->assertNotContains( 'quoted-printable', $GLOBALS['phpmailer']->mock_sent[0]['header'] );
    309309        }
     310
     311        /**
     312         * @ticket 21659
     313         */
     314        public function test_wp_mail_addresses_arent_encoded() {
     315                $to      = 'Lukáš To <to@example.org>';
     316                $subject = 'Testing #21659';
     317                $message = 'Only the name should be encoded, not the address.';
     318
     319                $headers = array(
     320                        'From'     => 'From: Lukáš From <from@example.org>',
     321                        'Cc'       => 'Cc: Lukáš CC <cc@example.org>',
     322                        'Bcc'      => 'Bcc: Lukáš BCC <bcc@example.org>',
     323                        'Reply-To' => 'Reply-To: Lukáš Reply-To <reply_to@example.org>',
     324                );
     325
     326                $expected = array(
     327                        'To'       => 'To: =?UTF-8?B?THVrw6HFoSBUbw==?= <to@example.org>',
     328                        'From'     => 'From: =?UTF-8?Q?Luk=C3=A1=C5=A1_From?= <from@example.org>',
     329                        'Cc'       => 'Cc: =?UTF-8?B?THVrw6HFoSBDQw==?= <cc@example.org>',
     330                        'Bcc'      => 'Bcc: =?UTF-8?B?THVrw6HFoSBCQ0M=?= <bcc@example.org>',
     331                        'Reply-To' => 'Reply-To: =?UTF-8?Q?Luk=C3=A1=C5=A1_Reply-To?= <reply_to@example.org>',
     332                );
     333
     334                wp_mail( $to, $subject, $message, array_values( $headers ) );
     335
     336                /** @var MockPHPMailer $mailer */
     337                $mailer        = tests_retrieve_phpmailer_instance();
     338                $sent_headers  = preg_split( "/\r\n|\n|\r/", $mailer->get_sent()->header );
     339                $headers['To'] = "To: $to";
     340
     341                foreach ( $headers as $header => $value ) {
     342                        $target_headers = preg_grep( "/^$header:/", $sent_headers );
     343                        $this->assertEquals( $expected[ $header ], array_pop( $target_headers ) );
     344                }
     345        }
    310346}