WordPress.org

Make WordPress Core

Ticket #28909: 28909.unit-test-vars.diff

File 28909.unit-test-vars.diff, 3.5 KB (added by dd32, 4 years ago)
  • tests/phpunit/tests/mail.php

     
    11<?php
    22/**
    33 * @group pluggable
    44 * @group mail
    55 */
    66class Tests_Mail extends WP_UnitTestCase {
    77        function setUp() {
    88                parent::setUp();
    99                unset( $GLOBALS['phpmailer']->mock_sent );
    1010        }
    1111
     12        function test_wp_mail_break_it() {
     13                $content = str_repeat( 'A', 1000 );
     14                wp_mail( "admin@example.org", 'Looong line testing', $content);
     15        }
     16
    1217        function test_wp_mail_custom_boundaries() {
    1318                $to = 'user@example.com';
    1419                $subject = 'Test email with custom boundaries';
    1520                $headers  = '' . "\n";
    1621                $headers .= 'MIME-Version: 1.0' . "\n";
    1722                $headers .= 'Content-Type: multipart/mixed; boundary="----=_Part_4892_25692638.1192452070893"' . "\n";
    1823                $headers .= "\n";
    1924                $body  = "\n";
    2025                $body .= '------=_Part_4892_25692638.1192452070893' . "\n";
    2126                $body .= 'Content-Type: text/plain; charset=ISO-8859-1' . "\n";
    2227                $body .= 'Content-Transfer-Encoding: 7bit' . "\n";
    2328                $body .= 'Content-Disposition: inline' . "\n";
    2429                $body .= "\n";
    2530                $body .= 'Here is a message with an attachment of a binary file.' . "\n";
    2631                $body .= "\n";
  • tests/phpunit/includes/mock-mailer.php

     
    11<?php
    22require_once( ABSPATH . '/wp-includes/class-phpmailer.php' );
    33
    44class MockPHPMailer extends PHPMailer {
    55        var $mock_sent = array();
    66
     7        function preSend() {
     8                $this->Encoding = '8bit';
     9                parent::preSend();
     10        }
     11
    712        /**
    8          * Override send() so mail isn't actually sent.
     13         * Override postSend() so mail isn't actually sent.
    914         */
    10         function send() {
    11                 try {
    12                         if ( ! $this->preSend() )
    13                                 return false;
    14 
    15                         $this->mock_sent[] = array(
    16                                 'to'     => $this->to,
    17                                 'cc'     => $this->cc,
    18                                 'bcc'    => $this->bcc,
    19                                 'header' => $this->MIMEHeader,
    20                                 'body'   => $this->MIMEBody,
    21                         );
     15        function postSend() {
     16                $this->mock_sent[] = array(
     17                        'to'     => $this->to,
     18                        'cc'     => $this->cc,
     19                        'bcc'    => $this->bcc,
     20                        'header' => $this->MIMEHeader,
     21                        'body'   => $this->MIMEBody,
     22                );
    2223
    23                         return true;
    24                 } catch ( phpmailerException $e ) {
    25                         return false;
    26                 }
     24                return true;
    2725        }
    2826}
  • tests/phpunit/includes/testcase.php

    class WP_UnitTestCase extends PHPUnit_Fr 
    569569         */
    570570        protected function _microtime_to_float($microtime ){
    571571                $time_array = explode( ' ', $microtime );
    572572                return array_sum( $time_array );
    573573        }
    574574
    575575        /**
    576576         * When `wp_mail()` is called, make sure `$_SERVER['SERVER_NAME']` is faked.
    577577         *
    578578         * @since 4.3.0
    579579         *
    580580         * @param array $args `wp_mail()` arguments.
    581581         * @return array $args
    582582         */
    583583        public function set_wp_mail_globals( $args ) {
     584                global $phpmailer;
     585                // Reset the MockMailer on each new wp_mail() call
     586                //$phpmailer = new MockPHPMailer();
     587
    584588                if ( ! isset( $_SERVER['SERVER_NAME'] ) ) {
    585589                        $_SERVER['SERVER_NAME'] = 'example.com';
    586590                        add_action( 'phpmailer_init', array( $this, 'tear_down_wp_mail_globals' ) );
    587591                }
    588592
    589593                return $args;
    590594        }
    591595
    592596        /**
    593597         * Tear down the faked `$_SERVER['SERVER_NAME']` global used in `wp_mail()`.
    594598         *
    595599         * @since 4.3.0
    596600         */
    597601        public function tear_down_wp_mail_globals() {
    598602                unset( $_SERVER['SERVER_NAME'] );