PasswordResetTest.php in Legal 2.0.x
File
tests/src/Functional/PasswordResetTest.php
View source
<?php
namespace Drupal\Tests\legal\Functional;
use Drupal\Core\Test\AssertMailTrait;
use Drupal\Core\Url;
use Drupal\user\Entity\User;
class PasswordResetTest extends LegalTestBase {
use AssertMailTrait {
getMails as drupalGetMails;
}
public function setUp() {
parent::setUp();
$this->account->login = \Drupal::time()
->getRequestTime() - mt_rand(10, 100000);
\Drupal::database()
->update('users_field_data')
->fields([
'login' => $this->account
->getLastLoginTime(),
])
->condition('uid', $this->account
->id())
->execute();
}
public function testPasswordReset() {
$this
->drupalGet('user/password');
$edit['name'] = $this->loginDetails['name'];
$this
->drupalPostForm(NULL, $edit, 'Submit');
$_emails = $this
->drupalGetMails();
$email = end($_emails);
$urls = [];
preg_match('#.+user/reset/.+#', $email['body'], $urls);
$this
->drupalGet($urls[0]);
$this
->submitForm([], 'Log in', 'user-pass-reset');
$expected_query = [
'destination' => $this->account
->toUrl('edit-form')
->toString(),
'token' => '',
];
$expected_url = Url::fromRoute('legal.legal_login', [], [
'query' => $expected_query,
])
->setAbsolute()
->toString();
$this
->assertStringStartsWith($expected_url, $this
->getUrl());
$this
->assertResponse(200);
$edit = [
'edit-legal-accept' => TRUE,
];
$this
->submitForm($edit, 'Confirm', 'legal-login');
$account = User::load($this->uid);
$this
->drupalUserIsLoggedIn($account);
$current_url = $this
->getUrl();
$expected_url = $this->baseUrl . '/user/' . $this->uid . '/edit';
$this
->assertEquals($current_url, $expected_url);
}
}