RainTPL.php 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. <?php
  2. class RainTPLTest extends PHPUnit_Framework_TestCase
  3. {
  4. private static $data = '{"iv":"EN39/wd5Nk8HAiSG2K5AsQ","salt":"QKN1DBXe5PI","ct":"8hA83xDdXjD7K2qfmw5NdA"}';
  5. private static $error = 'foo bar';
  6. private static $status = '!*#@?$+';
  7. private static $expire = array(
  8. '5min' => '5 minutes',
  9. '1hour' => '1 hour',
  10. 'never' => 'Never',
  11. );
  12. private static $expire_default = '1hour';
  13. private static $version = 'Version 1.2.3';
  14. private $_content;
  15. public function setUp()
  16. {
  17. /* Setup Routine */
  18. $page = new RainTPL;
  19. $page::configure(array('cache_dir' => 'tmp/'));
  20. $page = new RainTPL;
  21. // We escape it here because ENT_NOQUOTES can't be used in RainTPL templates.
  22. $page->assign('CIPHERDATA', htmlspecialchars(self::$data, ENT_NOQUOTES));
  23. $page->assign('ERROR', self::$error);
  24. $page->assign('STATUS', self::$status);
  25. $page->assign('VERSION', self::$version);
  26. $page->assign('BURNAFTERREADINGSELECTED', false);
  27. $page->assign('OPENDISCUSSION', false);
  28. $page->assign('SYNTAXHIGHLIGHTING', true);
  29. $page->assign('EXPIRE', self::$expire);
  30. $page->assign('EXPIREDEFAULT', self::$expire_default);
  31. ob_start();
  32. $page->draw('page');
  33. $this->_content = ob_get_contents();
  34. // run a second time from cache
  35. $page->cache('page');
  36. $page->draw('page');
  37. ob_end_clean();
  38. }
  39. public function tearDown()
  40. {
  41. /* Tear Down Routine */
  42. helper::rmdir(PATH . 'tmp');
  43. }
  44. public function testTemplateRendersCorrectly()
  45. {
  46. $this->assertTag(
  47. array(
  48. 'id' => 'cipherdata',
  49. 'content' => htmlspecialchars(self::$data, ENT_NOQUOTES)
  50. ),
  51. $this->_content,
  52. 'outputs data correctly'
  53. );
  54. $this->assertTag(
  55. array(
  56. 'id' => 'errormessage',
  57. 'content' => self::$error
  58. ),
  59. $this->_content,
  60. 'outputs error correctly'
  61. );
  62. $this->assertTag(
  63. array(
  64. 'id' => 'opendiscussion',
  65. 'attributes' => array(
  66. 'disabled' => 'disabled'
  67. ),
  68. ),
  69. $this->_content,
  70. 'disables discussions if configured'
  71. );
  72. // testing version number in JS address, since other instances may not be present in different templates
  73. $this->assertTag(
  74. array(
  75. 'tag' => 'script',
  76. 'attributes' => array(
  77. 'src' => 'js/zerobin.js?' . rawurlencode(self::$version)
  78. ),
  79. ),
  80. $this->_content,
  81. 'outputs version correctly'
  82. );
  83. }
  84. }