PageRenderTime 36ms CodeModel.GetById 12ms RepoModel.GetById 0ms app.codeStats 0ms

/framework/Kolab_Filter/test/Horde/Kolab/Filter/Unit/Helper/AddressFilter.php

https://github.com/imr/horde
PHP | 108 lines | 71 code | 7 blank | 30 comment | 0 complexity | 9b551b479f6de555123d63109d75c844 MD5 | raw file
  1. <?php
  2. /**
  3. * Test the address rewriting filter.
  4. *
  5. * PHP version 5
  6. *
  7. * @category Kolab
  8. * @package Kolab_Filter
  9. * @subpackage UnitTests
  10. * @author Gunnar Wrobel <wrobel@pardus.de>
  11. * @license http://www.horde.org/licenses/lgpl21 LGPL 2.1
  12. * @link http://pear.horde.org/index.php?package=Kolab_Filter
  13. */
  14. /**
  15. * Test the address rewriting filter.
  16. *
  17. * Copyright 2010-2014 Horde LLC (http://www.horde.org/)
  18. *
  19. * See the enclosed file COPYING for license information (LGPL). If you
  20. * did not receive this file, see http://www.horde.org/licenses/lgpl21.
  21. *
  22. * @category Kolab
  23. * @package Kolab_Filter
  24. * @subpackage UnitTests
  25. * @author Gunnar Wrobel <wrobel@pardus.de>
  26. * @license http://www.horde.org/licenses/lgpl21 LGPL 2.1
  27. * @link http://pear.horde.org/index.php?package=Kolab_Filter
  28. */
  29. class Horde_Kolab_Filter_Unit_Helper_AddressFilterTest
  30. extends PHPUnit_Framework_TestCase
  31. {
  32. public function testFilter()
  33. {
  34. $fp = fopen('php://memory', 'w+');
  35. fputs($fp, "hello\n");
  36. rewind($fp);
  37. stream_filter_register('addresses', 'Horde_Kolab_Filter_Helper_AddressFilter');
  38. stream_filter_append($fp, 'addresses');
  39. $this->assertEquals("hello\n", stream_get_contents($fp));
  40. }
  41. public function testFilterEmptiesUnsetParameterOne()
  42. {
  43. $fp = fopen('php://memory', 'w+');
  44. fputs($fp, "hello%1\$s\n");
  45. rewind($fp);
  46. stream_filter_register('addresses', 'Horde_Kolab_Filter_Helper_AddressFilter');
  47. stream_filter_append($fp, 'addresses');
  48. $this->assertEquals("hello\n", stream_get_contents($fp));
  49. }
  50. public function testFilterEmptiesUnsetParameterTwo()
  51. {
  52. $fp = fopen('php://memory', 'w+');
  53. fputs($fp, "hello%2\$s\n");
  54. rewind($fp);
  55. stream_filter_register('addresses', 'Horde_Kolab_Filter_Helper_AddressFilter');
  56. stream_filter_append($fp, 'addresses');
  57. $this->assertEquals("hello\n", stream_get_contents($fp));
  58. }
  59. public function testFilterSetsParameterSender()
  60. {
  61. $fp = fopen('php://memory', 'w+');
  62. fputs($fp, "hello %1\$s\n");
  63. rewind($fp);
  64. stream_filter_register('addresses', 'Horde_Kolab_Filter_Helper_AddressFilter');
  65. stream_filter_append($fp, 'addresses', STREAM_FILTER_READ, array('sender' => 'sender'));
  66. $this->assertEquals("hello sender\n", stream_get_contents($fp));
  67. }
  68. public function testFilterSetsParameterRecipient()
  69. {
  70. $fp = fopen('php://memory', 'w+');
  71. fputs($fp, "hello %2\$s\n");
  72. rewind($fp);
  73. stream_filter_register('addresses', 'Horde_Kolab_Filter_Helper_AddressFilter');
  74. stream_filter_append($fp, 'addresses', STREAM_FILTER_READ, array('recipient' => 'recipient'));
  75. $this->assertEquals("hello recipient\n", stream_get_contents($fp));
  76. }
  77. /**
  78. * @dataProvider provideBrokenParameters
  79. */
  80. public function testFilterHandlesBrokenParameter($param)
  81. {
  82. $fp = fopen('php://memory', 'w+');
  83. $append = "hello $param\n";
  84. fputs($fp, str_repeat('a', 16384 - strlen($append)) . $append . str_repeat('test', 300));
  85. rewind($fp);
  86. stream_filter_register('addresses', 'Horde_Kolab_Filter_Helper_AddressFilter');
  87. stream_filter_append($fp, 'addresses');
  88. fread($fp, 16384 - strlen($append));
  89. $this->assertEquals("hello $param\n", fread($fp, strlen($append)));
  90. }
  91. public function provideBrokenParameters()
  92. {
  93. return array(
  94. array("%"),
  95. array("%1"),
  96. array("%2"),
  97. array("%2\$"),
  98. array("%2\$\ns"),
  99. );
  100. }
  101. }