summaryrefslogtreecommitdiff
path: root/tests/maildecode.php
blob: cfd7eda2f52d2928464be73c79b13f2f78e9b3d9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<?php

/**
 * Test class to test messages decoding functions
 *
 * @package Tests
 */
class rcube_test_maildecode extends UnitTestCase
{
  private $app;

  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()
   */
  function test_decode_single_address()
  {
    $headers = array(
        0  => 'test@domain.tld',
        1  => '<test@domain.tld>',
        2  => 'Test <test@domain.tld>',
        3  => 'Test Test <test@domain.tld>',
        4  => 'Test Test<test@domain.tld>',
        5  => '"Test Test" <test@domain.tld>',
        6  => '"Test Test"<test@domain.tld>',
        7  => '"Test \\" Test" <test@domain.tld>',
        8  => '"Test<Test" <test@domain.tld>',
        9  => '=?ISO-8859-1?B?VGVzdAo=?= <test@domain.tld>',
        10 => '=?ISO-8859-1?B?VGVzdAo=?=<test@domain.tld>', // #1487068
    );

    $results = array(
        0  => array('', 'test@domain.tld'),
        1  => array('', 'test@domain.tld'),
        2  => array('Test', 'test@domain.tld'),
        3  => array('Test Test', 'test@domain.tld'),
        4  => array('Test Test', 'test@domain.tld'),
        5  => array('Test Test', 'test@domain.tld'),
        6  => array('Test Test', 'test@domain.tld'),
        7  => array('Test " Test', 'test@domain.tld'),
        8  => array('Test<Test', 'test@domain.tld'),
        9  => array('Test', 'test@domain.tld'),
        10 => array('Test', 'test@domain.tld'),
    );

    foreach ($headers as $idx => $header) {
      $res = $this->app->imap->decode_address_list($header);

      $this->assertEqual(1, count($res), "Rows number in result for header: " . $header);
      $this->assertEqual($results[$idx][0], $res[1]['name'], "Name part decoding for header: " . $header);
      $this->assertEqual($results[$idx][1], $res[1]['mailto'], "Name part decoding for header: " . $header);
    }
  }

}