Spaces:
No application file
No application file
declare(strict_types=1); | |
namespace Mautic\UserBundle\Tests\Functional\Controller; | |
use Mautic\CoreBundle\Test\MauticMysqlTestCase; | |
class PublicControllerTest extends MauticMysqlTestCase | |
{ | |
/** | |
* Tests to ensure that xss is prevented on password reset page. | |
*/ | |
public function testXssFilterOnPasswordReset(): void | |
{ | |
$this->client->request('GET', '/passwordreset?bundle=%27-alert("XSS%20TEST%20Mautic")-%27'); | |
$clientResponse = $this->client->getResponse(); | |
$this->assertSame(200, $clientResponse->getStatusCode(), 'Return code must be 200.'); | |
$responseData = $clientResponse->getContent(); | |
// Tests that actual string is not present. | |
$this->assertStringNotContainsString('-alert("xss test mautic")-', $responseData, 'XSS injection attempt is filtered.'); | |
// Tests that sanitized string is passed. | |
$this->assertStringContainsString('alertxsstestmautic', $responseData, 'XSS sanitized string is present.'); | |
} | |
public function testPasswordResetPage(): void | |
{ | |
$this->client->request('GET', '/passwordreset'); | |
$clientResponse = $this->client->getResponse(); | |
$this->assertSame(200, $clientResponse->getStatusCode(), 'Return code must be 200.'); | |
$responseData = $clientResponse->getContent(); | |
$this->assertStringContainsString('Enter either your username or email to reset your password. Instructions to reset your password will be sent to the email in your profile.', $responseData); | |
} | |
public function testPasswordResetAction(): void | |
{ | |
$crawler = $this->client->request('GET', '/passwordreset'); | |
$saveButton = $crawler->selectButton('reset password'); | |
$form = $saveButton->form(); | |
$form['passwordreset[identifier]']->setValue('test@example.com'); | |
$crawler = $this->client->submit($form); | |
$clientResponse = $this->client->getResponse(); | |
$this->assertTrue($clientResponse->isOk(), $clientResponse->getContent()); | |
$responseData = $clientResponse->getContent(); | |
$this->assertStringContainsString('A new password has been generated and will be emailed to you, if this user exists. If you do not receive it within a few minutes, check your spam box and/or contact the system administrator.', $responseData); | |
} | |
} | |