alecpl
2012-04-15 f5f9b406e0d5454cfc7d4c0ab78ee42a94910b0e
tests/maildecode.php
@@ -12,14 +12,11 @@
  function __construct()
  {
    $this->UnitTestCase('Mail headers decoding tests');
    $this->app = rcmail::get_instance();
    $this->app->imap_init(false);
  }
  /**
   * Test decoding of single e-mail address strings
   * Uses rcube_imap::decode_address_list()
   * Uses rcube_mime::decode_address_list()
   */
  function test_decode_single_address()
  {
@@ -76,7 +73,7 @@
    );
    foreach ($headers as $idx => $header) {
      $res = $this->app->imap->decode_address_list($header);
      $res = rcube_mime::decode_address_list($header);
      $this->assertEqual($results[$idx][0], count($res), "Rows number in result for header: " . $header);
      $this->assertEqual($results[$idx][1], $res[1]['name'], "Name part decoding for header: " . $header);
@@ -84,4 +81,50 @@
    }
  }
  /**
   * Test decoding of header values
   * Uses rcube_mime::decode_mime_string()
   */
  function test_header_decode_qp()
  {
    $test = array(
      // #1488232: invalid character "?"
      'quoted-printable (1)' => array(
        'in'  => '=?utf-8?Q?Certifica=C3=A7=C3=A3??=',
        'out' => 'Certifica=C3=A7=C3=A3?',
      ),
      'quoted-printable (2)' => array(
        'in'  => '=?utf-8?Q?Certifica=?= =?utf-8?Q?C3=A7=C3=A3?=',
        'out' => 'Certifica=C3=A7=C3=A3',
      ),
      'quoted-printable (3)' => array(
        'in'  => '=?utf-8?Q??= =?utf-8?Q??=',
        'out' => '',
      ),
      'quoted-printable (4)' => array(
        'in'  => '=?utf-8?Q??= a =?utf-8?Q??=',
        'out' => ' a ',
      ),
      'quoted-printable (5)' => array(
        'in'  => '=?utf-8?Q?a?= =?utf-8?Q?b?=',
        'out' => 'ab',
      ),
      'quoted-printable (6)' => array(
        'in'  => '=?utf-8?Q?   ?= =?utf-8?Q?a?=',
        'out' => '   a',
      ),
      'quoted-printable (7)' => array(
        'in'  => '=?utf-8?Q?___?= =?utf-8?Q?a?=',
        'out' => '   a',
      ),
    );
    foreach ($test as $idx => $item) {
      $res = rcube_mime::decode_mime_string($item['in'], 'UTF-8');
      $res = quoted_printable_encode($res);
      $this->assertEqual($item['out'], $res, "Header decoding for: " . $idx);
    }
  }
}