LoginControllerTest.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Security\Test\Unit\Model\Plugin;
  7. use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
  8. use Magento\Security\Model\SecurityCookie;
  9. /**
  10. * Test class for \Magento\Security\Model\Plugin\LoginController testing
  11. */
  12. class LoginControllerTest extends \PHPUnit\Framework\TestCase
  13. {
  14. /** @var \Magento\Security\Model\Plugin\LoginController */
  15. protected $controller;
  16. /** @var \Magento\Framework\Message\ManagerInterface */
  17. protected $messageManagerMock;
  18. /** @var \Magento\Security\Model\AdminSessionsManager */
  19. protected $adminSessionsManagerMock;
  20. /** @var SecurityCookie */
  21. protected $securityCookieMock;
  22. /** @var \Magento\Backend\Controller\Adminhtml\Auth\Login */
  23. protected $backendControllerAuthLoginMock;
  24. /** @var \Magento\Framework\App\Request\Http */
  25. protected $requestMock;
  26. /** @var \Magento\Framework\TestFramework\Unit\Helper\ObjectManager */
  27. protected $objectManager;
  28. /**
  29. * Init mocks for tests
  30. * @return void
  31. */
  32. public function setUp()
  33. {
  34. $this->objectManager = new ObjectManager($this);
  35. $this->messageManagerMock = $this->createMock(\Magento\Framework\Message\ManagerInterface::class);
  36. $this->adminSessionsManagerMock = $this->createPartialMock(
  37. \Magento\Security\Model\AdminSessionsManager::class,
  38. ['getLogoutReasonMessageByStatus']
  39. );
  40. $this->securityCookieMock = $this->createPartialMock(
  41. SecurityCookie::class,
  42. ['getLogoutReasonCookie', 'deleteLogoutReasonCookie']
  43. );
  44. $this->backendControllerAuthLoginMock = $this->createPartialMock(
  45. \Magento\Backend\Controller\Adminhtml\Auth\Login::class,
  46. ['getRequest', 'getUrl']
  47. );
  48. $this->requestMock = $this->createPartialMock(\Magento\Framework\App\Request\Http::class, ['getUri']);
  49. $this->controller = $this->objectManager->getObject(
  50. \Magento\Security\Model\Plugin\LoginController::class,
  51. [
  52. 'messageManager' => $this->messageManagerMock,
  53. 'sessionsManager' => $this->adminSessionsManagerMock,
  54. 'securityCookie' => $this->securityCookieMock
  55. ]
  56. );
  57. }
  58. /**
  59. * @return void
  60. */
  61. public function testBeforeExecute()
  62. {
  63. $logoutReasonCode = 2;
  64. $uri = '/uri/';
  65. $errorMessage = 'Error Message';
  66. $this->securityCookieMock->expects($this->once())
  67. ->method('getLogoutReasonCookie')
  68. ->willReturn($logoutReasonCode);
  69. $this->backendControllerAuthLoginMock->expects($this->once())
  70. ->method('getRequest')
  71. ->willReturn($this->requestMock);
  72. $this->requestMock->expects($this->once())
  73. ->method('getUri')
  74. ->willReturn($uri);
  75. $this->backendControllerAuthLoginMock->expects($this->once())
  76. ->method('getUrl')
  77. ->willReturn($uri);
  78. $this->adminSessionsManagerMock->expects($this->once())
  79. ->method('getLogoutReasonMessageByStatus')
  80. ->with($logoutReasonCode)
  81. ->willReturn($errorMessage);
  82. $this->messageManagerMock->expects($this->once())
  83. ->method('addErrorMessage')
  84. ->with($errorMessage);
  85. $this->securityCookieMock->expects($this->once())
  86. ->method('deleteLogoutReasonCookie')
  87. ->willReturnSelf();
  88. $this->controller->beforeExecute($this->backendControllerAuthLoginMock);
  89. }
  90. }