HeaderTest.php 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Framework\HTTP\Test\Unit;
  7. class HeaderTest extends \PHPUnit\Framework\TestCase
  8. {
  9. /**
  10. * @var \Magento\Framework\TestFramework\Unit\Helper\ObjectManager
  11. */
  12. protected $_objectManager;
  13. /**
  14. * @var \Magento\Framework\App\Request\Http
  15. */
  16. protected $_request;
  17. /**
  18. * @var \Magento\Framework\Stdlib\StringUtils
  19. */
  20. protected $_converter;
  21. protected function setUp()
  22. {
  23. $this->_objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
  24. $this->_request =
  25. $this->createPartialMock(\Magento\Framework\App\Request\Http::class, ['getServer', 'getRequestUri']);
  26. $this->_converter = $this->createPartialMock(\Magento\Framework\Stdlib\StringUtils::class, ['cleanString']);
  27. }
  28. /**
  29. * @param string $method
  30. * @param boolean $clean
  31. * @param string $expectedValue
  32. *
  33. * @dataProvider methodsDataProvider
  34. *
  35. * @covers \Magento\Framework\HTTP\Header::getHttpHost
  36. * @covers \Magento\Framework\HTTP\Header::getHttpUserAgent
  37. * @covers \Magento\Framework\HTTP\Header::getHttpAcceptLanguage
  38. * @covers \Magento\Framework\HTTP\Header::getHttpAcceptCharset
  39. * @covers \Magento\Framework\HTTP\Header::getHttpReferer
  40. */
  41. public function testHttpMethods($method, $clean, $expectedValue)
  42. {
  43. $this->_request->expects($this->once())->method('getServer')->will($this->returnValue('value'));
  44. $this->_prepareCleanString($clean);
  45. $headerObject = $this->_objectManager->getObject(
  46. \Magento\Framework\HTTP\Header::class,
  47. ['httpRequest' => $this->_request, 'converter' => $this->_converter]
  48. );
  49. $method = new \ReflectionMethod(\Magento\Framework\HTTP\Header::class, $method);
  50. $result = $method->invokeArgs($headerObject, ['clean' => $clean]);
  51. $this->assertEquals($expectedValue, $result);
  52. }
  53. /**
  54. * @return array
  55. */
  56. public function methodsDataProvider()
  57. {
  58. return [
  59. 'getHttpHost clean true' => [
  60. 'method' => 'getHttpHost',
  61. 'clean' => true,
  62. 'expectedValue' => 'converted value',
  63. ],
  64. 'getHttpHost clean false' => [
  65. 'method' => 'getHttpHost',
  66. 'clean' => false,
  67. 'expectedValue' => 'value',
  68. ],
  69. 'getHttpUserAgent clean true' => [
  70. 'method' => 'getHttpUserAgent',
  71. 'clean' => true,
  72. 'expectedValue' => 'converted value',
  73. ],
  74. 'getHttpUserAgent clean false' => [
  75. 'method' => 'getHttpUserAgent',
  76. 'clean' => false,
  77. 'expectedValue' => 'value',
  78. ],
  79. 'getHttpAcceptLanguage clean true' => [
  80. 'method' => 'getHttpAcceptLanguage',
  81. 'clean' => true,
  82. 'expectedValue' => 'converted value',
  83. ],
  84. 'getHttpAcceptLanguage clean false' => [
  85. 'method' => 'getHttpAcceptLanguage',
  86. 'clean' => false,
  87. 'expectedValue' => 'value',
  88. ],
  89. 'getHttpAcceptCharset clean true' => [
  90. 'method' => 'getHttpAcceptCharset',
  91. 'clean' => true,
  92. 'expectedValue' => 'converted value',
  93. ],
  94. 'getHttpAcceptCharset clean false' => [
  95. 'method' => 'getHttpAcceptCharset',
  96. 'clean' => false,
  97. 'expectedValue' => 'value',
  98. ],
  99. 'getHttpReferer clean true' => [
  100. 'method' => 'getHttpReferer',
  101. 'clean' => true,
  102. 'expectedValue' => 'converted value',
  103. ],
  104. 'getHttpReferer clean false' => [
  105. 'method' => 'getHttpReferer',
  106. 'clean' => false,
  107. 'expectedValue' => 'value',
  108. ]
  109. ];
  110. }
  111. /**
  112. * @param boolean $clean
  113. * @param string $expectedValue
  114. *
  115. * @dataProvider getRequestUriDataProvider
  116. */
  117. public function testGetRequestUri($clean, $expectedValue)
  118. {
  119. $this->_request->expects($this->once())->method('getRequestUri')->will($this->returnValue('value'));
  120. $this->_prepareCleanString($clean);
  121. $headerObject = $this->_objectManager->getObject(
  122. \Magento\Framework\HTTP\Header::class,
  123. ['httpRequest' => $this->_request, 'converter' => $this->_converter]
  124. );
  125. $result = $headerObject->getRequestUri($clean);
  126. $this->assertEquals($expectedValue, $result);
  127. }
  128. /**
  129. * @return array
  130. */
  131. public function getRequestUriDataProvider()
  132. {
  133. return [
  134. 'getRequestUri clean true' => ['clean' => true, 'expectedValue' => 'converted value'],
  135. 'getRequestUri clean false' => ['clean' => false, 'expectedValue' => 'value']
  136. ];
  137. }
  138. /**
  139. * @param boolean $clean
  140. * @return $this
  141. */
  142. protected function _prepareCleanString($clean)
  143. {
  144. $cleanStringExpects = $clean ? $this->once() : $this->never();
  145. $this->_converter->expects(
  146. $cleanStringExpects
  147. )->method(
  148. 'cleanString'
  149. )->will(
  150. $this->returnValue('converted value')
  151. );
  152. return $this;
  153. }
  154. }