Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Captcha\Observer;

use Magento\Framework\Data\Form\FormKey;
use Magento\Framework\Message\MessageInterface;
use Magento\TestFramework\Request;
use Magento\TestFramework\TestCase\AbstractController;

/**
* Test captcha observer behavior
*
* @magentoAppArea frontend
*/
class CaseCheckOnFrontendUnsuccessfulMessageWhenCaptchaFailedTest extends AbstractController
{
/**
* Test incorrect captcha on customer login page
*
* @magentoDbIsolation enabled
* @magentoAppIsolation enabled
* @magentoConfigFixture default_store customer/captcha/enable 1
* @magentoConfigFixture default_store customer/captcha/forms user_login
* @magentoConfigFixture default_store customer/captcha/mode always
*/
public function testLoginCheckUnsuccessfulMessageWhenCaptchaFailed()
{
/** @var FormKey $formKey */
$formKey = $this->_objectManager->get(FormKey::class);
$post = [
'login' => [
'username' => '[email protected]',
'password' => 'dummy_password1',
],
'captcha' => ['user_login' => 'wrong_captcha'],
'form_key' => $formKey->getFormKey(),
];

$this->prepareRequestData($post);

$this->dispatch('customer/account/loginPost');

$this->assertRedirect($this->stringContains('customer/account/login'));
$this->assertSessionMessages(
$this->equalTo(['Incorrect CAPTCHA']),
MessageInterface::TYPE_ERROR
);
}

/**
* Test incorrect captcha on customer forgot password page
*
* @codingStandardsIgnoreStart
* @magentoConfigFixture current_store customer/password/limit_password_reset_requests_method 0
* @magentoConfigFixture default_store customer/captcha/enable 1
* @magentoConfigFixture default_store customer/captcha/forms user_forgotpassword
* @magentoConfigFixture default_store customer/captcha/mode always
*/
public function testForgotPasswordCheckUnsuccessfulMessageWhenCaptchaFailed()
{
$post = ['email' => '[email protected]'];
$this->prepareRequestData($post);

$this->dispatch('customer/account/forgotPasswordPost');

$this->assertRedirect($this->stringContains('customer/account/forgotpassword'));
$this->assertSessionMessages(
$this->equalTo(['Incorrect CAPTCHA']),
MessageInterface::TYPE_ERROR
);
}

/**
* Test incorrect captcha on customer create account page
*
* @codingStandardsIgnoreStart
* @magentoConfigFixture current_store customer/password/limit_password_reset_requests_method 0
* @magentoConfigFixture default_store customer/captcha/enable 1
* @magentoConfigFixture default_store customer/captcha/forms user_create
* @magentoConfigFixture default_store customer/captcha/mode always
*/
public function testCreateAccountCheckUnsuccessfulMessageWhenCaptchaFailed()
{
/** @var FormKey $formKey */
$formKey = $this->_objectManager->get(FormKey::class);
$post = [
'firstname' => 'Firstname',
'lastname' => 'Lastname',
'email' => '[email protected]',
'password' => 'TestPassword123',
'password_confirmation' => 'TestPassword123',
'captcha' => ['user_create' => 'wrong_captcha'],
'form_key' => $formKey->getFormKey(),
];
$this->prepareRequestData($post);

$this->dispatch('customer/account/createPost');

$this->assertRedirect($this->stringContains('customer/account/create'));
$this->assertSessionMessages(
$this->equalTo(['Incorrect CAPTCHA']),
MessageInterface::TYPE_ERROR
);
}

/**
* @param array $postData
* @return void
*/
private function prepareRequestData($postData)
{
$this->getRequest()->setMethod(Request::METHOD_POST);
$this->getRequest()->setPostValue($postData);
}
}