MessageTest.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. <?php
  2. /**
  3. * @package Zend_Mime
  4. * @subpackage UnitTests
  5. */
  6. /**
  7. * Zend_Mime_Message
  8. */
  9. require_once 'Zend/Mime/Message.php';
  10. /**
  11. * PHPUnit test case
  12. */
  13. require_once 'PHPUnit/Framework/TestCase.php';
  14. /**
  15. * @package Zend_Mime
  16. * @subpackage UnitTests
  17. */
  18. class Zend_Mime_MessageTest extends PHPUnit_Framework_TestCase
  19. {
  20. public function testMultiPart()
  21. {
  22. $msg = new Zend_Mime_Message(); // No Parts
  23. $this->assertFalse($msg->isMultiPart());
  24. }
  25. public function testSetGetParts()
  26. {
  27. $msg = new Zend_Mime_Message(); // No Parts
  28. $p = $msg->getParts();
  29. $this->assertTrue(is_array($p));
  30. $this->assertTrue(count($p) == 0);
  31. $p2 = array();
  32. $p2[] = new Zend_Mime_Part('This is a test');
  33. $p2[] = new Zend_Mime_Part('This is another test');
  34. $msg->setParts($p2);
  35. $p = $msg->getParts();
  36. $this->assertTrue(is_array($p));
  37. $this->assertTrue(count($p) == 2);
  38. }
  39. public function testGetMime()
  40. {
  41. $msg = new Zend_Mime_Message(); // No Parts
  42. $m = $msg->getMime();
  43. $this->assertType('Zend_Mime', $m);
  44. $msg = new Zend_Mime_Message(); // No Parts
  45. $mime = new Zend_Mime('1234');
  46. $msg->setMime($mime);
  47. $m2 = $msg->getMime();
  48. $this->assertType('Zend_Mime', $m2);
  49. $this->assertEquals('1234', $m2->boundary());
  50. }
  51. public function testGenerate()
  52. {
  53. $msg = new Zend_Mime_Message(); // No Parts
  54. $p1 = new Zend_Mime_Part('This is a test');
  55. $p2 = new Zend_Mime_Part('This is another test');
  56. $msg->addPart($p1);
  57. $msg->addPart($p2);
  58. $res = $msg->generateMessage();
  59. $mime = $msg->getMime();
  60. $boundary = $mime->boundary();
  61. $p1 = strpos($res, $boundary);
  62. // $boundary must appear once for every mime part
  63. $this->assertTrue($p1 !== false);
  64. if ($p1) {
  65. $p2 = strpos($res, $boundary, $p1 + strlen($boundary));
  66. $this->assertTrue($p2 !== false);
  67. }
  68. // check if the two test messages appear:
  69. $this->assertTrue(strpos($res, 'This is a test') !== false);
  70. $this->assertTrue(strpos($res, 'This is another test') !== false);
  71. // ... more in ZMailTest
  72. }
  73. /**
  74. * check if decoding a string into a Zend_Mime_Message object works
  75. *
  76. */
  77. public function testDecodeMimeMessage()
  78. {
  79. $text = <<<EOD
  80. This is a message in Mime Format. If you see this, your mail reader does not support this format.
  81. --=_af4357ef34b786aae1491b0a2d14399f
  82. Content-Type: application/octet-stream
  83. Content-Transfer-Encoding: 8bit
  84. This is a test
  85. --=_af4357ef34b786aae1491b0a2d14399f
  86. Content-Type: image/gif
  87. Content-Transfer-Encoding: base64
  88. Content-ID: <12>
  89. This is another test
  90. --=_af4357ef34b786aae1491b0a2d14399f--
  91. EOD;
  92. $res = Zend_Mime_Message::createFromMessage($text, '=_af4357ef34b786aae1491b0a2d14399f');
  93. $parts = $res->getParts();
  94. $this->assertEquals(2, count($parts));
  95. $part1 = $parts[0];
  96. $this->assertEquals('application/octet-stream', $part1->type);
  97. $this->assertEquals('8bit', $part1->encoding);
  98. $part2 = $parts[1];
  99. $this->assertEquals('image/gif', $part2->type);
  100. $this->assertEquals('base64', $part2->encoding);
  101. $this->assertEquals('12', $part2->id);
  102. }
  103. }