ConfigTest.php 3.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\PageCache\Model;
  7. class ConfigTest extends \PHPUnit\Framework\TestCase
  8. {
  9. /**
  10. * @var \Magento\PageCache\Model\Config
  11. */
  12. private $config;
  13. protected function setUp()
  14. {
  15. $readFactoryMock = $this->createMock(\Magento\Framework\Filesystem\Directory\ReadFactory::class);
  16. $modulesDirectoryMock = $this->createMock(\Magento\Framework\Filesystem\Directory\Write::class);
  17. $readFactoryMock->expects(
  18. $this->any()
  19. )->method(
  20. 'create'
  21. )->will(
  22. $this->returnValue($modulesDirectoryMock)
  23. );
  24. $modulesDirectoryMock->expects(
  25. $this->any()
  26. )->method(
  27. 'readFile'
  28. )->will(
  29. $this->returnValue(file_get_contents(__DIR__ . '/_files/test.vcl'))
  30. );
  31. /** @var \PHPUnit_Framework_MockObject_MockObject $vclTemplateLocator */
  32. $vclTemplateLocator = $this->getMockBuilder(\Magento\PageCache\Model\Varnish\VclTemplateLocator::class)
  33. ->disableOriginalConstructor()
  34. ->setMethods(['getTemplate'])
  35. ->getMock();
  36. $vclTemplateLocator->expects($this->any())
  37. ->method('getTemplate')
  38. ->will($this->returnValue(file_get_contents(__DIR__ . '/_files/test.vcl')));
  39. /** @var \PHPUnit_Framework_MockObject_MockObject $vclTemplateLocator */
  40. $vclGeneratorFactory = $this->getMockBuilder(\Magento\PageCache\Model\Varnish\VclGeneratorFactory::class)
  41. ->disableOriginalConstructor()
  42. ->setMethods(['create'])
  43. ->getMock();
  44. $expectedParams = [
  45. 'backendHost' => 'example.com',
  46. 'backendPort' => '8080',
  47. 'accessList' => explode(',', '127.0.0.1,192.168.0.1,127.0.0.2'),
  48. 'designExceptions' => json_decode('{"_":{"regexp":"\/firefox\/i","value":"Magento\/blank"}}', true),
  49. 'sslOffloadedHeader' => 'X-Forwarded-Proto',
  50. 'gracePeriod' => 1234
  51. ];
  52. $vclGeneratorFactory->expects($this->any())
  53. ->method('create')
  54. ->with($expectedParams)
  55. ->will($this->returnValue(new \Magento\PageCache\Model\Varnish\VclGenerator(
  56. $vclTemplateLocator,
  57. 'example.com',
  58. '8080',
  59. explode(',', '127.0.0.1,192.168.0.1,127.0.0.2'),
  60. 1234,
  61. 'X-Forwarded-Proto',
  62. json_decode('{"_":{"regexp":"\/firefox\/i","value":"Magento\/blank"}}', true)
  63. )));
  64. $this->config = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
  65. \Magento\PageCache\Model\Config::class,
  66. [
  67. 'vclGeneratorFactory' => $vclGeneratorFactory
  68. ]
  69. );
  70. }
  71. // @codingStandardsIgnoreStart
  72. /**
  73. * @magentoConfigFixture default/system/full_page_cache/varnish/backend_host example.com
  74. * @magentoConfigFixture default/system/full_page_cache/varnish/backend_port 8080
  75. * @magentoConfigFixture default/system/full_page_cache/varnish/grace_period 1234
  76. * @magentoConfigFixture default/system/full_page_cache/varnish/access_list 127.0.0.1,192.168.0.1,127.0.0.2
  77. * @magentoConfigFixture current_store design/theme/ua_regexp {"_":{"regexp":"\/firefox\/i","value":"Magento\/blank"}}
  78. * @magentoAppIsolation enabled
  79. */
  80. // @codingStandardsIgnoreEnd
  81. public function testGetVclFile()
  82. {
  83. $result = $this->config->getVclFile(Config::VARNISH_5_CONFIGURATION_PATH);
  84. $this->assertEquals(file_get_contents(__DIR__ . '/_files/result.vcl'), $result);
  85. }
  86. }