MaintenanceModeTest.php 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Framework\App\Test\Unit;
  7. use \Magento\Framework\App\MaintenanceMode;
  8. class MaintenanceModeTest extends \PHPUnit\Framework\TestCase
  9. {
  10. /**
  11. * @var MaintenanceMode
  12. */
  13. protected $model;
  14. /**
  15. * @var \Magento\Framework\Filesystem\Directory\WriteInterface | \PHPUnit_Framework_MockObject_MockObject
  16. */
  17. protected $flagDir;
  18. protected function setup()
  19. {
  20. $this->flagDir = $this->getMockForAbstractClass(\Magento\Framework\Filesystem\Directory\WriteInterface::class);
  21. $filesystem = $this->createMock(\Magento\Framework\Filesystem::class);
  22. $filesystem->expects($this->any())
  23. ->method('getDirectoryWrite')
  24. ->will($this->returnValue($this->flagDir));
  25. $this->model = new MaintenanceMode($filesystem);
  26. }
  27. public function testIsOnInitial()
  28. {
  29. $this->flagDir->expects($this->once())->method('isExist')
  30. ->with(MaintenanceMode::FLAG_FILENAME)
  31. ->will($this->returnValue(false));
  32. $this->assertFalse($this->model->isOn());
  33. }
  34. public function testisOnWithoutIP()
  35. {
  36. $mapisExist = [
  37. [MaintenanceMode::FLAG_FILENAME, true],
  38. [MaintenanceMode::IP_FILENAME, false],
  39. ];
  40. $this->flagDir->expects($this->exactly(2))->method('isExist')
  41. ->will(($this->returnValueMap($mapisExist)));
  42. $this->assertTrue($this->model->isOn());
  43. }
  44. public function testisOnWithIP()
  45. {
  46. $mapisExist = [
  47. [MaintenanceMode::FLAG_FILENAME, true],
  48. [MaintenanceMode::IP_FILENAME, true],
  49. ];
  50. $this->flagDir->expects($this->exactly(2))->method('isExist')
  51. ->will(($this->returnValueMap($mapisExist)));
  52. $this->assertFalse($this->model->isOn());
  53. }
  54. public function testisOnWithIPNoMaintenance()
  55. {
  56. $this->flagDir->expects($this->once())->method('isExist')
  57. ->with(MaintenanceMode::FLAG_FILENAME)
  58. ->willReturn(false);
  59. $this->assertFalse($this->model->isOn());
  60. }
  61. public function testMaintenanceModeOn()
  62. {
  63. $this->flagDir->expects($this->at(0))->method('isExist')->with(MaintenanceMode::FLAG_FILENAME)
  64. ->will($this->returnValue(false));
  65. $this->flagDir->expects($this->at(1))->method('touch')->will($this->returnValue(true));
  66. $this->flagDir->expects($this->at(2))->method('isExist')->with(MaintenanceMode::FLAG_FILENAME)
  67. ->will($this->returnValue(true));
  68. $this->flagDir->expects($this->at(3))->method('isExist')->with(MaintenanceMode::IP_FILENAME)
  69. ->will($this->returnValue(false));
  70. $this->assertFalse($this->model->isOn());
  71. $this->assertTrue($this->model->set(true));
  72. $this->assertTrue($this->model->isOn());
  73. }
  74. public function testMaintenanceModeOff()
  75. {
  76. $this->flagDir->expects($this->at(0))->method('isExist')->with(MaintenanceMode::FLAG_FILENAME)
  77. ->will($this->returnValue(true));
  78. $this->flagDir->expects($this->at(1))->method('delete')->with(MaintenanceMode::FLAG_FILENAME)
  79. ->will($this->returnValue(false));
  80. $this->flagDir->expects($this->at(2))->method('isExist')->with(MaintenanceMode::FLAG_FILENAME)
  81. ->will($this->returnValue(false));
  82. $this->assertFalse($this->model->set(false));
  83. $this->assertFalse($this->model->isOn());
  84. }
  85. public function testSetAddresses()
  86. {
  87. $mapisExist = [
  88. [MaintenanceMode::FLAG_FILENAME, true],
  89. [MaintenanceMode::IP_FILENAME, true],
  90. ];
  91. $this->flagDir->expects($this->any())->method('isExist')->will($this->returnValueMap($mapisExist));
  92. $this->flagDir->expects($this->any())->method('writeFile')
  93. ->with(MaintenanceMode::IP_FILENAME)
  94. ->will($this->returnValue(true));
  95. $this->flagDir->expects($this->any())->method('readFile')
  96. ->with(MaintenanceMode::IP_FILENAME)
  97. ->will($this->returnValue(''));
  98. $this->model->setAddresses('');
  99. $this->assertEquals([''], $this->model->getAddressInfo());
  100. }
  101. public function testSetSingleAddresses()
  102. {
  103. $mapisExist = [
  104. [MaintenanceMode::FLAG_FILENAME, true],
  105. [MaintenanceMode::IP_FILENAME, true],
  106. ];
  107. $this->flagDir->expects($this->any())->method('isExist')->will($this->returnValueMap($mapisExist));
  108. $this->flagDir->expects($this->any())->method('delete')->will($this->returnValueMap($mapisExist));
  109. $this->flagDir->expects($this->any())->method('writeFile')
  110. ->will($this->returnValue(10));
  111. $this->flagDir->expects($this->any())->method('readFile')
  112. ->with(MaintenanceMode::IP_FILENAME)
  113. ->will($this->returnValue('address1'));
  114. $this->model->setAddresses('address1');
  115. $this->assertEquals(['address1'], $this->model->getAddressInfo());
  116. }
  117. public function testOnSetMultipleAddresses()
  118. {
  119. $mapisExist = [
  120. [MaintenanceMode::FLAG_FILENAME, true],
  121. [MaintenanceMode::IP_FILENAME, true],
  122. ];
  123. $this->flagDir->expects($this->any())->method('isExist')->will($this->returnValueMap($mapisExist));
  124. $this->flagDir->expects($this->any())->method('delete')->will($this->returnValueMap($mapisExist));
  125. $this->flagDir->expects($this->any())->method('writeFile')
  126. ->will($this->returnValue(10));
  127. $this->flagDir->expects($this->any())->method('readFile')
  128. ->with(MaintenanceMode::IP_FILENAME)
  129. ->will($this->returnValue('address1,10.50.60.123'));
  130. $expectedArray = ['address1', '10.50.60.123'];
  131. $this->model->setAddresses('address1,10.50.60.123');
  132. $this->assertEquals($expectedArray, $this->model->getAddressInfo());
  133. $this->assertFalse($this->model->isOn('address1'));
  134. $this->assertTrue($this->model->isOn('address3'));
  135. }
  136. public function testOffSetMultipleAddresses()
  137. {
  138. $mapisExist = [
  139. [MaintenanceMode::FLAG_FILENAME, false],
  140. [MaintenanceMode::IP_FILENAME, true],
  141. ];
  142. $this->flagDir->expects($this->any())->method('isExist')->will($this->returnValueMap($mapisExist));
  143. $this->flagDir->expects($this->any())->method('delete')->will($this->returnValueMap($mapisExist));
  144. $this->flagDir->expects($this->any())->method('readFile')
  145. ->with(MaintenanceMode::IP_FILENAME)
  146. ->will($this->returnValue('address1,10.50.60.123'));
  147. $expectedArray = ['address1', '10.50.60.123'];
  148. $this->model->setAddresses('address1,10.50.60.123');
  149. $this->assertEquals($expectedArray, $this->model->getAddressInfo());
  150. $this->assertFalse($this->model->isOn('address1'));
  151. $this->assertFalse($this->model->isOn('address3'));
  152. }
  153. }