SuggestionsTest.php 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\AdvancedSearch\Block;
  7. use Magento\TestFramework\Helper\Bootstrap;
  8. use Magento\Search\Model\QueryResult;
  9. use Magento\AdvancedSearch\Model\SuggestedQueriesInterface;
  10. use Magento\Framework\View\LayoutInterface;
  11. /**
  12. * @magentoAppArea frontend
  13. */
  14. class SuggestionsTest extends \PHPUnit\Framework\TestCase
  15. {
  16. /** @var \Magento\AdvancedSearch\Block\Suggestions */
  17. protected $block;
  18. protected function setUp()
  19. {
  20. $suggestedQueries = $this->createMock(SuggestedQueriesInterface::CLASS);
  21. $suggestedQueries->expects($this->any())->method('getItems')->willReturn([
  22. new QueryResult('test item', 1),
  23. new QueryResult("<script>alert('Test');</script>", 1)
  24. ]);
  25. $this->block = Bootstrap::getObjectManager()->create(\Magento\AdvancedSearch\Block\Suggestions::class, [
  26. 'searchDataProvider' => $suggestedQueries,
  27. 'title' => 'title',
  28. ]);
  29. }
  30. public function testRenderEscaping()
  31. {
  32. $html = $this->block->toHtml();
  33. $this->assertContains('test+item', $html);
  34. $this->assertContains('test item', $html);
  35. $this->assertNotContains('<script>', $html);
  36. $this->assertContains('%3Cscript%3Ealert%28%27Test%27%29%3B%3C%2Fscript%3E', $html);
  37. $this->assertContains("&lt;script&gt;alert(&#039;Test&#039;);&lt;/script&gt;", $html);
  38. }
  39. }