function UserPasswordResetTest::testUserPasswordResetPreferredLanguage
Same name in other branches
- 9 core/modules/user/tests/src/Functional/UserPasswordResetTest.php \Drupal\Tests\user\Functional\UserPasswordResetTest::testUserPasswordResetPreferredLanguage()
- 11.x core/modules/user/tests/src/Functional/UserPasswordResetTest.php \Drupal\Tests\user\Functional\UserPasswordResetTest::testUserPasswordResetPreferredLanguage()
Tests password reset functionality when user has set preferred language.
File
-
core/
modules/ user/ tests/ src/ Functional/ UserPasswordResetTest.php, line 242
Class
- UserPasswordResetTest
- Ensure that password reset methods work as expected.
Namespace
Drupal\Tests\user\FunctionalCode
public function testUserPasswordResetPreferredLanguage() : void {
// Set two new languages.
ConfigurableLanguage::createFromLangcode('fr')->save();
ConfigurableLanguage::createFromLangcode('zh-hant')->save();
$this->languageManager = \Drupal::languageManager();
// Set language prefixes.
$config = $this->config('language.negotiation');
$config->set('url.prefixes', [
'en' => '',
'fr' => 'fr',
'zh-hant' => 'zh',
])
->save();
$this->rebuildContainer();
foreach ($this->languagePrefixTestProvider() as $scenario) {
[
$setPreferredLangcode,
$activeLangcode,
$prefix,
$visitingUrl,
$expectedResetUrl,
$unexpectedResetUrl,
] = array_values($scenario);
$this->account->preferred_langcode = $setPreferredLangcode;
$this->account
->save();
$this->assertSame($setPreferredLangcode, $this->account
->getPreferredLangcode(FALSE));
// Test Default langcode is different from active langcode when visiting different.
if ($setPreferredLangcode !== 'en') {
$this->drupalGet($prefix . '/user/password');
$this->assertSame($activeLangcode, $this->getSession()
->getResponseHeader('Content-language'));
$this->assertSame('en', $this->languageManager
->getDefaultLanguage()
->getId());
}
// Test password reset with language prefixes.
$this->drupalGet($visitingUrl);
$edit = [
'name' => $this->account
->getAccountName(),
];
$this->submitForm($edit, 'Submit');
$this->assertValidPasswordReset($edit['name']);
$resetURL = $this->getResetURL();
$this->assertStringContainsString($expectedResetUrl, $resetURL);
$this->assertStringNotContainsString($unexpectedResetUrl, $resetURL);
}
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.