CaseCaptchaIsRequiredAfterFailedLoginAttemptsTest.php 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Captcha\Observer;
  7. use Magento\Framework\Message\MessageInterface;
  8. /**
  9. * Test captcha observer behavior.
  10. *
  11. * @magentoAppArea adminhtml
  12. */
  13. class CaseCaptchaIsRequiredAfterFailedLoginAttemptsTest extends \Magento\TestFramework\TestCase\AbstractController
  14. {
  15. /**
  16. * @magentoAdminConfigFixture admin/captcha/forms backend_login
  17. * @magentoAdminConfigFixture admin/captcha/enable 1
  18. * @magentoAdminConfigFixture admin/captcha/mode always
  19. */
  20. public function testBackendLoginActionWithInvalidCaptchaReturnsError()
  21. {
  22. \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
  23. \Magento\Backend\Model\UrlInterface::class
  24. )->turnOffSecretKey();
  25. /** @var \Magento\Framework\Data\Form\FormKey $formKey */
  26. $formKey = $this->_objectManager->get(\Magento\Framework\Data\Form\FormKey::class);
  27. $post = [
  28. 'login' => [
  29. 'username' => \Magento\TestFramework\Bootstrap::ADMIN_NAME,
  30. 'password' => \Magento\TestFramework\Bootstrap::ADMIN_PASSWORD,
  31. ],
  32. 'captcha' => ['backend_login' => 'some_unrealistic_captcha_value'],
  33. 'form_key' => $formKey->getFormKey(),
  34. ];
  35. $this->getRequest()->setPostValue($post);
  36. $this->dispatch('backend/admin');
  37. $this->assertSessionMessages($this->equalTo([(string)__('Incorrect CAPTCHA.')]), MessageInterface::TYPE_ERROR);
  38. $backendUrlModel = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
  39. \Magento\Backend\Model\UrlInterface::class
  40. );
  41. $backendUrlModel->turnOffSecretKey();
  42. $url = $backendUrlModel->getUrl('admin');
  43. $this->assertRedirect($this->stringStartsWith($url));
  44. }
  45. }