TemplateSwitcherTest.php 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <?php declare(strict_types=1);
  2. use PHPUnit\Framework\TestCase;
  3. use PrivateBin\Configuration;
  4. use PrivateBin\TemplateSwitcher;
  5. class TemplateSwitcherTest extends TestCase
  6. {
  7. public function testSetTemplateFallback()
  8. {
  9. $conf = new Configuration;
  10. $defaultTemplateFallback = 'bootstrap5';
  11. $existingTemplateFallback = 'bootstrap-dark';
  12. $wrongBootstrapTemplateFallback = 'bootstrap-wrong';
  13. $wrongTemplateFallback = 'wrong-template';
  14. TemplateSwitcher::setAvailableTemplates($conf->getKey('availabletemplates'));
  15. TemplateSwitcher::setTemplateFallback($wrongBootstrapTemplateFallback);
  16. $this->assertEquals($defaultTemplateFallback, TemplateSwitcher::getTemplate(), 'Wrong bootstrap template fallback');
  17. TemplateSwitcher::setTemplateFallback($wrongTemplateFallback);
  18. $this->assertEquals($defaultTemplateFallback, TemplateSwitcher::getTemplate(), 'Wrong template fallback');
  19. TemplateSwitcher::setTemplateFallback($existingTemplateFallback);
  20. $this->assertEquals($existingTemplateFallback, TemplateSwitcher::getTemplate(), 'Correct template fallback');
  21. }
  22. public function testSetAvailableTemplates()
  23. {
  24. $conf = new Configuration;
  25. $availableTemplates = $conf->getKey('availabletemplates');
  26. TemplateSwitcher::setAvailableTemplates($availableTemplates);
  27. $this->assertEquals($availableTemplates, TemplateSwitcher::getAvailableTemplates(), 'Set available templates');
  28. }
  29. public function testGetTemplate()
  30. {
  31. $defaultTemplateFallback = 'bootstrap5';
  32. $customTemplate = 'bootstrap-dark';
  33. $customWrongTemplate = 'bootstrap-wrong';
  34. $escapeTemplateDirectory = '../index';
  35. TemplateSwitcher::setTemplateFallback($defaultTemplateFallback);
  36. $_COOKIE['template'] = $customWrongTemplate;
  37. $this->assertEquals($defaultTemplateFallback, TemplateSwitcher::getTemplate(), 'Custom wrong template');
  38. $_COOKIE['template'] = $customTemplate;
  39. $this->assertEquals($customTemplate, TemplateSwitcher::getTemplate(), 'Custom template');
  40. $_COOKIE['template'] = $escapeTemplateDirectory;
  41. $this->assertEquals($defaultTemplateFallback, TemplateSwitcher::getTemplate(), 'Fallback on escaping template directory');
  42. }
  43. public function testGetAvailableTemplates()
  44. {
  45. $this->assertNotEmpty(TemplateSwitcher::getAvailableTemplates(), 'Get available templates');
  46. }
  47. public function testIsTemplateAvailable()
  48. {
  49. $conf = new Configuration;
  50. $existingTemplate = 'bootstrap';
  51. $nonExistentTemplate = 'bootstrap-wrong';
  52. TemplateSwitcher::setAvailableTemplates($conf->getKey('availabletemplates'));
  53. $this->assertTrue(TemplateSwitcher::isTemplateAvailable($existingTemplate), 'Existing template');
  54. $this->assertFalse(TemplateSwitcher::isTemplateAvailable($nonExistentTemplate), 'Non-existent template');
  55. }
  56. }