From 13326b75403ec1d1f21254753d5a66f8bfaa5f5c Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Wed, 20 Oct 2010 04:55:28 -0400
Subject: [PATCH] - Add tests for e-mail addresses decoding

---
 tests/maildecode.php |   63 +++++++++++++++++++++++++++++++
 tests/modcss.php     |    2 
 tests/mailfunc.php   |    2 -
 3 files changed, 64 insertions(+), 3 deletions(-)

diff --git a/tests/maildecode.php b/tests/maildecode.php
new file mode 100644
index 0000000..cfd7eda
--- /dev/null
+++ b/tests/maildecode.php
@@ -0,0 +1,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);
+    }
+  }
+
+}
diff --git a/tests/mailfunc.php b/tests/mailfunc.php
index a3008a6..4ba3505 100644
--- a/tests/mailfunc.php
+++ b/tests/mailfunc.php
@@ -132,5 +132,3 @@
   }
 
 }
-
-?>
\ No newline at end of file
diff --git a/tests/modcss.php b/tests/modcss.php
index 3ff5c48..945cac3 100644
--- a/tests/modcss.php
+++ b/tests/modcss.php
@@ -42,4 +42,4 @@
     $this->assertEqual("/* evil! */", $mod, "Don't allow encoding quirks (2)");
   }
   
-}
\ No newline at end of file
+}

--
Gitblit v1.9.1