view.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. <?php
  2. class viewTest extends PHPUnit_Framework_TestCase
  3. {
  4. private static $error = 'foo bar';
  5. private static $status = '!*#@?$+';
  6. private static $formatters = array(
  7. 'plaintext' => 'Plain Text',
  8. 'syntaxhighlighting' => 'Source Code',
  9. 'markdown' => 'Markdown',
  10. );
  11. private static $formatter_default = 'plaintext';
  12. private static $expire = array(
  13. '5min' => '5 minutes',
  14. '1hour' => '1 hour',
  15. 'never' => 'Never',
  16. );
  17. private static $expire_default = '1hour';
  18. private static $version = 'Version 1.2.3';
  19. private $_content;
  20. public function setUp()
  21. {
  22. /* Setup Routine */
  23. $page = new view;
  24. $page->assign('CIPHERDATA', helper::getPaste()['data']);
  25. $page->assign('ERROR', self::$error);
  26. $page->assign('STATUS', self::$status);
  27. $page->assign('VERSION', self::$version);
  28. $page->assign('DISCUSSION', true);
  29. $page->assign('OPENDISCUSSION', true);
  30. $page->assign('MARKDOWN', true);
  31. $page->assign('SYNTAXHIGHLIGHTING', true);
  32. $page->assign('SYNTAXHIGHLIGHTINGTHEME', 'sons-of-obsidian');
  33. $page->assign('FORMATTER', self::$formatters);
  34. $page->assign('FORMATTERDEFAULT', self::$formatter_default);
  35. $page->assign('BURNAFTERREADINGSELECTED', false);
  36. $page->assign('PASSWORD', true);
  37. $page->assign('FILEUPLOAD', false);
  38. $page->assign('BASE64JSVERSION', '2.1.9');
  39. $page->assign('NOTICE', 'example');
  40. $page->assign('LANGUAGESELECTION', '');
  41. $page->assign('LANGUAGES', i18n::getLanguageLabels(i18n::getAvailableLanguages()));
  42. $page->assign('EXPIRE', self::$expire);
  43. $page->assign('EXPIREDEFAULT', self::$expire_default);
  44. $page->assign('EXPIRECLONE', true);
  45. $page->assign('URLSHORTENER', '');
  46. ob_start();
  47. $page->draw('page');
  48. $this->_content = ob_get_contents();
  49. ob_end_clean();
  50. }
  51. public function tearDown()
  52. {
  53. /* Tear Down Routine */
  54. }
  55. public function testTemplateRendersCorrectly()
  56. {
  57. $this->assertContains(
  58. '<div id="cipherdata" class="hidden">' .
  59. htmlspecialchars(helper::getPaste()['data'], ENT_NOQUOTES) .
  60. '</div>',
  61. $this->_content,
  62. 'outputs data correctly'
  63. );
  64. $this->assertRegExp(
  65. '#<div[^>]+id="errormessage"[^>]*>.*' . self::$error . '</div>#',
  66. $this->_content,
  67. 'outputs error correctly'
  68. );
  69. $this->assertRegExp(
  70. '#<[^>]+id="password"[^>]*>#',
  71. $this->_content,
  72. 'password available if configured'
  73. );
  74. $this->assertRegExp(
  75. '#<input[^>]+id="opendiscussion"[^>]*checked="checked"[^>]*>#',
  76. $this->_content,
  77. 'checked discussion if configured'
  78. );
  79. $this->assertRegExp(
  80. '#<[^>]+id="opendisc"[^>]*>#',
  81. $this->_content,
  82. 'discussions available if configured'
  83. );
  84. // testing version number in JS address, since other instances may not be present in different templates
  85. $this->assertRegExp(
  86. '#<script[^>]+src="js/privatebin.js\\?' . rawurlencode(self::$version) . '"[^>]*>#',
  87. $this->_content,
  88. 'outputs version correctly'
  89. );
  90. }
  91. /**
  92. * @expectedException Exception
  93. * @expectedExceptionCode 80
  94. */
  95. public function testMissingTemplate()
  96. {
  97. $test = new view;
  98. $test->draw('123456789 does not exist!');
  99. }
  100. }