MimeLibTest.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. <?php
  2. App::uses('MimeLib', 'Tools.Lib');
  3. App::uses('MyCakeTestCase', 'Tools.TestSuite');
  4. App::uses('CakeResponse', 'Network');
  5. class MimeLibTest extends MyCakeTestCase {
  6. public $Mime;
  7. public function setUp() {
  8. parent::setUp();
  9. $this->Mime = new MimeLib();
  10. }
  11. public function testObject() {
  12. $this->assertTrue(is_object($this->Mime));
  13. $this->assertInstanceOf('MimeLib', $this->Mime);
  14. }
  15. public function testAll() {
  16. $res = $this->Mime->getMimeTypes();
  17. $this->assertTrue(is_array($res) && count($res) > 100);
  18. }
  19. public function testSingle() {
  20. $res = $this->Mime->getMimeType('odxs');
  21. $this->assertFalse($res);
  22. $res = $this->Mime->getMimeType('ods');
  23. $this->assertEquals('application/vnd.oasis.opendocument.spreadsheet', $res);
  24. }
  25. public function testOverwrite() {
  26. $res = $this->Mime->getMimeType('ics');
  27. $this->assertEquals('application/ics', $res);
  28. }
  29. public function testReverseToSingle() {
  30. $res = $this->Mime->getMimeType('html');
  31. $this->assertEquals('text/html', $res);
  32. $res = $this->Mime->getMimeType('csv');
  33. $this->assertEquals('text/csv', $res);
  34. }
  35. public function testReverseToMultiple() {
  36. $res = $this->Mime->getMimeType('html', false);
  37. $this->assertTrue(is_array($res) && count($res) === 2);
  38. $res = $this->Mime->getMimeType('csv', false);
  39. $this->assertTrue(is_array($res) && count($res) > 2);
  40. }
  41. /**
  42. * test fake files
  43. * 2010-10-22 ms
  44. */
  45. public function testCorrectFileExtension() {
  46. file_put_contents(TMP.'sometest.txt', 'xyz');
  47. $is = $this->Mime->extractMimeType(TMP.'sometest.txt');
  48. //pr($is);
  49. $this->assertEquals($is, 'text/plain');
  50. }
  51. /**
  52. * test fake files
  53. * 2010-10-22 ms
  54. */
  55. public function testWrongFileExtension() {
  56. file_put_contents(TMP.'sometest.zip', 'xyz');
  57. $is = $this->Mime->extractMimeType(TMP.'sometest.zip');
  58. //pr($is);
  59. $this->assertEquals($is, 'text/plain');
  60. //Test failes? finfo_open not availaible??
  61. }
  62. /**
  63. * test fake files
  64. * 2010-10-22 ms
  65. */
  66. public function testEncoding() {
  67. file_put_contents(TMP.'sometest.txt', 'xyz');
  68. $is = $this->Mime->getEncoding(TMP.'sometest.txt');
  69. //pr($is);
  70. $this->assertEquals($is, 'us-ascii');
  71. file_put_contents(TMP.'sometest.zip', utf8_encode('xäääyz'));
  72. $is = $this->Mime->getEncoding(TMP.'sometest.zip');
  73. //pr($is);
  74. $this->assertEquals($is, 'utf-8');
  75. file_put_contents(TMP.'sometest.zip', utf8_encode('xyz'));
  76. $is = $this->Mime->getEncoding(TMP.'sometest.zip');
  77. //pr($is);
  78. $this->assertEquals($is, 'us-ascii');
  79. //Tests fail? finfo_open not availaible??
  80. }
  81. /**
  82. * MimeLibTest::testDifferenceBetweenPluginAndCore()
  83. *
  84. * @return void
  85. */
  86. public function testDifferenceBetweenPluginAndCore() {
  87. $this->TestCakeResponse = new TestCakeResponse();
  88. $this->TestMime = new TestMimeLib();
  89. $core = $this->TestCakeResponse->getMimeTypes();
  90. $plugin = $this->TestMime->getMimeTypes();
  91. $diff = array(
  92. 'coreonly' => array(),
  93. 'pluginonly' => array(),
  94. 'modified' => array()
  95. );
  96. foreach ($core as $key => $value) {
  97. if (!isset($plugin[$key])) {
  98. $diff['coreonly'][$key] = $value;
  99. } elseif ($value !== $plugin[$key]) {
  100. $diff['modified'][$key] = array('was' => $value, 'is' => $plugin[$key]);
  101. }
  102. unset($plugin[$key]);
  103. }
  104. foreach ($plugin as $key => $value) {
  105. $diff['pluginonly'][$key] = $value;
  106. }
  107. $this->debug($diff);
  108. }
  109. }
  110. class TestCakeResponse extends CakeResponse {
  111. public function getMimeTypes() {
  112. return $this->_mimeTypes;
  113. }
  114. }
  115. class TestMimeLib extends MimeLib {
  116. public function getMimeTypes($coreHasPrecedence = false) {
  117. return $this->_mimeTypesExt;
  118. }
  119. }