CreateTest.php 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  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. * Tests \Magento\Backup\Controller\Adminhtml\Index\Create class.
  10. *
  11. * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
  12. */
  13. class CreateTest extends \PHPUnit\Framework\TestCase
  14. {
  15. /**
  16. * @var \Magento\Framework\TestFramework\Unit\Helper\ObjectManager
  17. */
  18. private $objectManager;
  19. /**
  20. * @var \Magento\Backend\App\Action\Context
  21. */
  22. private $context;
  23. /**
  24. * @var \Magento\Framework\ObjectManagerInterface|\PHPUnit_Framework_MockObject_MockObject
  25. */
  26. private $objectManagerMock;
  27. /**
  28. * @var \Magento\Framework\App\RequestInterface|\PHPUnit_Framework_MockObject_MockObject
  29. */
  30. private $requestMock;
  31. /**
  32. * @var \Magento\Framework\App\ResponseInterface|\PHPUnit_Framework_MockObject_MockObject
  33. */
  34. private $responseMock;
  35. /**
  36. * @var \Magento\Backup\Model\Backup|\PHPUnit_Framework_MockObject_MockObject
  37. */
  38. private $backupModelMock;
  39. /**
  40. * @var \Magento\Backend\Helper\Data|\PHPUnit_Framework_MockObject_MockObject
  41. */
  42. private $dataBackendHelperMock;
  43. /**
  44. * @var \Magento\Backup\Helper\Data|\PHPUnit_Framework_MockObject_MockObject
  45. */
  46. private $dataBackupHelperMock;
  47. /**
  48. * @var \Magento\Framework\App\Response\Http\FileFactory|\PHPUnit_Framework_MockObject_MockObject
  49. */
  50. private $fileFactoryMock;
  51. /**
  52. * @var \Magento\Backend\Model\Session|\PHPUnit_Framework_MockObject_MockObject
  53. */
  54. private $sessionMock;
  55. /**
  56. * @var \Magento\Framework\App\MaintenanceMode|\PHPUnit_Framework_MockObject_MockObject
  57. */
  58. private $maintenanceModeMock;
  59. /**
  60. * @var \Magento\Framework\Backup\Factory|\PHPUnit_Framework_MockObject_MockObject
  61. */
  62. private $backupFactoryMock;
  63. /**
  64. * @var \Magento\Backup\Controller\Adminhtml\Index\Create
  65. */
  66. private $createController;
  67. public function setUp()
  68. {
  69. $this->objectManagerMock = $this->getMockBuilder(\Magento\Framework\ObjectManagerInterface::class)
  70. ->getMock();
  71. $this->requestMock = $this->getMockBuilder(\Magento\Framework\App\Request\Http::class)
  72. ->disableOriginalConstructor()
  73. ->setMethods(['isAjax', 'isPost', 'getParam'])
  74. ->getMock();
  75. $this->responseMock = $this->getMockBuilder(\Magento\Framework\App\Response\Http::class)
  76. ->disableOriginalConstructor()
  77. ->setMethods(['representJson', 'setRedirect'])
  78. ->getMock();
  79. $this->sessionMock = $this->getMockBuilder(\Magento\Backend\Model\Session::class)
  80. ->disableOriginalConstructor()
  81. ->getMock();
  82. $this->backupFactoryMock = $this->getMockBuilder(\Magento\Framework\Backup\Factory::class)
  83. ->disableOriginalConstructor()
  84. ->setMethods(['create'])
  85. ->getMock();
  86. $this->backupModelMock = $this->getMockBuilder(\Magento\Backup\Model\Backup::class)
  87. ->disableOriginalConstructor()
  88. ->setMethods(['setBackupExtension', 'setTime', 'setBackupsDir', 'setName', 'create'])
  89. ->getMock();
  90. $this->dataBackendHelperMock = $this->getMockBuilder(\Magento\Backend\Helper\Data::class)
  91. ->disableOriginalConstructor()
  92. ->setMethods(['getUrl'])
  93. ->getMock();
  94. $this->dataBackupHelperMock = $this->getMockBuilder(\Magento\Backup\Helper\Data::class)
  95. ->disableOriginalConstructor()
  96. ->setMethods(['getExtensionByType', 'getBackupsDir'])
  97. ->getMock();
  98. $this->maintenanceModeMock = $this->getMockBuilder(\Magento\Framework\App\MaintenanceMode::class)
  99. ->disableOriginalConstructor()
  100. ->setMethods(['set'])
  101. ->getMock();
  102. $this->fileFactoryMock = $this->getMockBuilder(\Magento\Framework\App\Response\Http\FileFactory::class)
  103. ->disableOriginalConstructor()
  104. ->getMock();
  105. $this->objectManager = new ObjectManager($this);
  106. $this->context = $this->objectManager->getObject(
  107. \Magento\Backend\App\Action\Context::class,
  108. [
  109. 'objectManager' => $this->objectManagerMock,
  110. 'request' => $this->requestMock,
  111. 'response' => $this->responseMock,
  112. 'session' => $this->sessionMock,
  113. 'helper' => $this->dataBackendHelperMock,
  114. 'maintenanceMode' => $this->maintenanceModeMock,
  115. ]
  116. );
  117. $this->createController = $this->objectManager->getObject(
  118. \Magento\Backup\Controller\Adminhtml\Index\Create::class,
  119. [
  120. 'context' => $this->context,
  121. 'backupFactory' => $this->backupFactoryMock,
  122. 'fileFactory' => $this->fileFactoryMock,
  123. ]
  124. );
  125. }
  126. /**
  127. * @covers \Magento\Backup\Controller\Adminhtml\Index\Create::execute
  128. * @return void
  129. */
  130. public function testExecuteNotPost()
  131. {
  132. $redirectUrl = '*/*/index';
  133. $redirectUrlBackup = 'backup/index/index';
  134. $this->requestMock->expects($this->any())
  135. ->method('isAjax')
  136. ->willReturn(true);
  137. $this->requestMock->expects($this->any())
  138. ->method('isPost')
  139. ->willReturn(false);
  140. $this->dataBackendHelperMock->expects($this->any())
  141. ->method('getUrl')
  142. ->with($redirectUrl, [])
  143. ->willReturn($redirectUrlBackup);
  144. $this->responseMock->expects($this->any())
  145. ->method('setRedirect')
  146. ->with($redirectUrlBackup)
  147. ->willReturnSelf();
  148. $this->assertSame($this->responseMock, $this->createController->execute());
  149. }
  150. /**
  151. * @covers \Magento\Backup\Controller\Adminhtml\Index\Create::execute
  152. * @return void
  153. */
  154. public function testExecutePermission()
  155. {
  156. $redirectUrl = '*/*/index';
  157. $redirectUrlBackup = 'backup/index/index';
  158. $backupType = 'db';
  159. $backupName = 'backup1';
  160. $response = '{"redirect_url":"backup\/index\/index"}';
  161. $this->requestMock->expects($this->any())
  162. ->method('isAjax')
  163. ->willReturn(true);
  164. $this->requestMock->expects($this->any())
  165. ->method('isPost')
  166. ->willReturn(true);
  167. $this->requestMock->expects($this->any())
  168. ->method('getParam')
  169. ->willReturnMap([
  170. ['type', null, $backupType],
  171. ['backup_name', null, $backupName],
  172. ]);
  173. $this->dataBackendHelperMock->expects($this->any())
  174. ->method('getUrl')
  175. ->with($redirectUrl, [])
  176. ->willReturn($redirectUrlBackup);
  177. $this->responseMock->expects($this->any())
  178. ->method('representJson')
  179. ->with($response)
  180. ->willReturnSelf();
  181. $this->maintenanceModeMock->expects($this->any())
  182. ->method('set')
  183. ->with(true)
  184. ->willReturn(false);
  185. $this->backupFactoryMock->expects($this->any())
  186. ->method('create')
  187. ->with($backupType)
  188. ->willReturn($this->backupModelMock);
  189. $this->backupModelMock->expects($this->any())
  190. ->method('setBackupExtension')
  191. ->with($backupType)
  192. ->willReturnSelf();
  193. $this->backupModelMock->expects($this->any())
  194. ->method('setBackupsDir')
  195. ->willReturnSelf();
  196. $this->backupModelMock->expects($this->any())
  197. ->method('setTime')
  198. ->willReturnSelf();
  199. $this->backupModelMock->expects($this->any())
  200. ->method('setName')
  201. ->with($backupName)
  202. ->willReturnSelf();
  203. $this->backupModelMock->expects($this->once())
  204. ->method('create')
  205. ->willReturnSelf();
  206. $this->objectManagerMock->expects($this->any())
  207. ->method('get')
  208. ->with(\Magento\Backup\Helper\Data::class)
  209. ->willReturn($this->dataBackupHelperMock);
  210. $this->dataBackupHelperMock->expects($this->any())
  211. ->method('getExtensionByType')
  212. ->with($backupType)
  213. ->willReturn($backupType);
  214. $this->dataBackupHelperMock->expects($this->any())
  215. ->method('getBackupsDir')
  216. ->willReturn('dir');
  217. $this->assertNull($this->createController->execute());
  218. }
  219. }