RollbackTest.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Backup\Test\Unit\Controller\Adminhtml\Index;
  7. use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
  8. /**
  9. * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
  10. * @SuppressWarnings(PHPMD.TooManyFields)
  11. */
  12. class RollbackTest extends \PHPUnit\Framework\TestCase
  13. {
  14. /**
  15. * @var \Magento\Framework\TestFramework\Unit\Helper\ObjectManager
  16. */
  17. private $objectManager;
  18. /**
  19. * @var \Magento\Framework\ObjectManagerInterface|\PHPUnit_Framework_MockObject_MockObject
  20. */
  21. private $objectManagerMock;
  22. /**
  23. * @var \Magento\Backend\App\Action\Context
  24. */
  25. private $context;
  26. /**
  27. * @var \Magento\Backup\Controller\Adminhtml\Index\Rollback
  28. */
  29. private $rollbackController;
  30. /**
  31. * @var \Magento\Framework\App\RequestInterface|\PHPUnit_Framework_MockObject_MockObject
  32. */
  33. private $requestMock;
  34. /**
  35. * @var \Magento\Framework\App\ResponseInterface|\PHPUnit_Framework_MockObject_MockObject
  36. */
  37. private $responseMock;
  38. /**
  39. * @var \Magento\Backup\Model\BackupFactory|\PHPUnit_Framework_MockObject_MockObject
  40. */
  41. private $backupModelFactoryMock;
  42. /**
  43. * @var \Magento\Backup\Model\Backup|\PHPUnit_Framework_MockObject_MockObject
  44. */
  45. private $backupModelMock;
  46. /**
  47. * @var \Magento\Backup\Helper\Data|\PHPUnit_Framework_MockObject_MockObject
  48. */
  49. private $dataHelperMock;
  50. /**
  51. * @var \Magento\Framework\App\Response\Http\FileFactory|\PHPUnit_Framework_MockObject_MockObject
  52. */
  53. private $fileFactoryMock;
  54. /**
  55. * @var \Magento\Backend\Model\View\Result\RedirectFactory|\PHPUnit_Framework_MockObject_MockObject
  56. */
  57. private $resultRedirectFactoryMock;
  58. /**
  59. * @var \Magento\Backend\Model\View\Result\Redirect|\PHPUnit_Framework_MockObject_MockObject
  60. */
  61. private $resultRedirectMock;
  62. /**
  63. * @var \Magento\Backend\Model\View\Result\Forward|\PHPUnit_Framework_MockObject_MockObject
  64. */
  65. private $resultForwardMock;
  66. /**
  67. * @var \Magento\Framework\Backup\Factory|\PHPUnit_Framework_MockObject_MockObject
  68. */
  69. private $backupFactoryMock;
  70. /**
  71. * @var \Magento\Framework\Backup\BackupInterface|\PHPUnit_Framework_MockObject_MockObject
  72. */
  73. private $backupManagerMock;
  74. /**
  75. * @var \Magento\Backup\Model\ResourceModel\Db|\PHPUnit_Framework_MockObject_MockObject
  76. */
  77. private $backupResourceModelMock;
  78. protected function setUp()
  79. {
  80. $this->objectManagerMock = $this->getMockBuilder(\Magento\Framework\ObjectManagerInterface::class)
  81. ->getMock();
  82. $this->requestMock = $this->getMockBuilder(\Magento\Framework\App\RequestInterface::class)
  83. ->setMethods(['initForward', 'setDispatched', 'isAjax'])
  84. ->getMockForAbstractClass();
  85. $this->responseMock = $this->getMockBuilder(\Magento\Framework\App\ResponseInterface::class)
  86. ->setMethods(['setRedirect', 'representJson'])
  87. ->getMockForAbstractClass();
  88. $this->backupModelFactoryMock = $this->getMockBuilder(\Magento\Backup\Model\BackupFactory::class)
  89. ->disableOriginalConstructor()
  90. ->setMethods(['create'])
  91. ->getMock();
  92. $this->backupModelMock = $this->getMockBuilder(\Magento\Backup\Model\Backup::class)
  93. ->disableOriginalConstructor()
  94. ->setMethods(['getTime', 'exists', 'getSize', 'output', 'validateUserPassword'])
  95. ->getMock();
  96. $this->backupResourceModelMock = $this->getMockBuilder(\Magento\Backup\Model\ResourceModel\Db::class)
  97. ->disableOriginalConstructor()
  98. ->getMock();
  99. $this->dataHelperMock = $this->getMockBuilder(\Magento\Backup\Helper\Data::class)
  100. ->disableOriginalConstructor()
  101. ->setMethods(['isRollbackAllowed', 'getBackupsDir', 'invalidateCache'])
  102. ->getMock();
  103. $this->fileFactoryMock = $this->getMockBuilder(\Magento\Framework\App\Response\Http\FileFactory::class)
  104. ->disableOriginalConstructor()
  105. ->getMock();
  106. $this->resultRedirectFactoryMock =
  107. $this->getMockBuilder(\Magento\Backend\Model\View\Result\RedirectFactory::class)
  108. ->disableOriginalConstructor()
  109. ->setMethods(['create'])
  110. ->getMock();
  111. $this->resultRedirectMock = $this->getMockBuilder(\Magento\Backend\Model\View\Result\Redirect::class)
  112. ->disableOriginalConstructor()
  113. ->getMock();
  114. $this->resultForwardMock = $this->getMockBuilder(\Magento\Backend\Model\View\Result\Forward::class)
  115. ->disableOriginalConstructor()
  116. ->getMock();
  117. $this->backupFactoryMock = $this->getMockBuilder(\Magento\Framework\Backup\Factory::class)
  118. ->disableOriginalConstructor()
  119. ->setMethods(['create'])
  120. ->getMock();
  121. $this->backupManagerMock = $this->getMockBuilder(\Magento\Framework\Backup\BackupInterface::class)
  122. ->setMethods(['setName'])
  123. ->getMockForAbstractClass();
  124. $this->objectManager = new ObjectManager($this);
  125. $this->context = $this->objectManager->getObject(
  126. \Magento\Backend\App\Action\Context::class,
  127. [
  128. 'objectManager' => $this->objectManagerMock,
  129. 'request' => $this->requestMock,
  130. 'response' => $this->responseMock,
  131. 'resultRedirectFactory' => $this->resultRedirectFactoryMock,
  132. ]
  133. );
  134. $this->rollbackController = $this->objectManager->getObject(
  135. \Magento\Backup\Controller\Adminhtml\Index\Rollback::class,
  136. [
  137. 'context' => $this->context,
  138. 'backupFactory' => $this->backupFactoryMock,
  139. 'backupModelFactory' => $this->backupModelFactoryMock,
  140. 'fileFactory' => $this->fileFactoryMock,
  141. ]
  142. );
  143. }
  144. public function testExecuteRollbackDisabled()
  145. {
  146. $rollbackAllowed = false;
  147. $this->dataHelperMock->expects($this->once())
  148. ->method('isRollbackAllowed')
  149. ->willReturn($rollbackAllowed);
  150. $this->objectManagerMock->expects($this->once())
  151. ->method('get')
  152. ->with(\Magento\Backup\Helper\Data::class)
  153. ->willReturn($this->dataHelperMock);
  154. $this->assertSame($this->responseMock, $this->rollbackController->execute());
  155. }
  156. public function testExecuteBackupNotFound()
  157. {
  158. $rollbackAllowed = true;
  159. $isAjax = true;
  160. $time = 0;
  161. $type = 'db';
  162. $exists = false;
  163. $this->dataHelperMock->expects($this->once())
  164. ->method('isRollbackAllowed')
  165. ->willReturn($rollbackAllowed);
  166. $this->objectManagerMock->expects($this->atLeastOnce())
  167. ->method('get')
  168. ->with(\Magento\Backup\Helper\Data::class)
  169. ->willReturn($this->dataHelperMock);
  170. $this->requestMock->expects($this->once())
  171. ->method('isAjax')
  172. ->willReturn($isAjax);
  173. $this->backupModelMock->expects($this->atLeastOnce())
  174. ->method('getTime')
  175. ->willReturn($time);
  176. $this->backupModelMock->expects($this->any())
  177. ->method('exists')
  178. ->willReturn($exists);
  179. $this->requestMock->expects($this->any())
  180. ->method('getParam')
  181. ->willReturnMap(
  182. [
  183. ['time', null, $time],
  184. ['type', null, $type],
  185. ]
  186. );
  187. $this->backupModelFactoryMock->expects($this->once())
  188. ->method('create')
  189. ->with($time, $type)
  190. ->willReturn($this->backupModelMock);
  191. $this->assertSame($this->responseMock, $this->rollbackController->execute());
  192. }
  193. public function testExecute()
  194. {
  195. $rollbackAllowed = true;
  196. $isAjax = true;
  197. $time = 1;
  198. $type = 'db';
  199. $exists = true;
  200. $passwordValid = true;
  201. $this->dataHelperMock->expects($this->once())
  202. ->method('isRollbackAllowed')
  203. ->willReturn($rollbackAllowed);
  204. $this->objectManagerMock->expects($this->any())
  205. ->method('get')
  206. ->with(\Magento\Backup\Helper\Data::class)
  207. ->willReturn($this->dataHelperMock);
  208. $this->requestMock->expects($this->once())
  209. ->method('isAjax')
  210. ->willReturn($isAjax);
  211. $this->backupModelMock->expects($this->atLeastOnce())
  212. ->method('getTime')
  213. ->willReturn($time);
  214. $this->backupModelMock->expects($this->any())
  215. ->method('exists')
  216. ->willReturn($exists);
  217. $this->requestMock->expects($this->any())
  218. ->method('getParam')
  219. ->willReturnMap(
  220. [
  221. ['time', null, $time],
  222. ['type', null, $type],
  223. ]
  224. );
  225. $this->backupModelFactoryMock->expects($this->once())
  226. ->method('create')
  227. ->with($time, $type)
  228. ->willReturn($this->backupModelMock);
  229. $this->backupManagerMock->expects($this->once())
  230. ->method('setBackupExtension')
  231. ->willReturn($this->backupManagerMock);
  232. $this->backupManagerMock->expects($this->once())
  233. ->method('setTime')
  234. ->willReturn($this->backupManagerMock);
  235. $this->backupManagerMock->expects($this->once())
  236. ->method('setBackupsDir')
  237. ->willReturn($this->backupManagerMock);
  238. $this->backupManagerMock->expects($this->once())
  239. ->method('setName')
  240. ->willReturn($this->backupManagerMock);
  241. $this->backupManagerMock->expects($this->once())
  242. ->method('setResourceModel')
  243. ->willReturn($this->backupManagerMock);
  244. $this->backupFactoryMock->expects($this->once())
  245. ->method('create')
  246. ->with($type)
  247. ->willReturn($this->backupManagerMock);
  248. $this->objectManagerMock->expects($this->at(2))
  249. ->method('create')
  250. ->with(\Magento\Backup\Model\ResourceModel\Db::class, [])
  251. ->willReturn($this->backupResourceModelMock);
  252. $this->objectManagerMock->expects($this->at(3))
  253. ->method('create')
  254. ->with(\Magento\Backup\Model\Backup::class, [])
  255. ->willReturn($this->backupModelMock);
  256. $this->backupModelMock->expects($this->once())
  257. ->method('validateUserPassword')
  258. ->willReturn($passwordValid);
  259. $this->rollbackController->execute();
  260. }
  261. }