diff --git a/core/modules/user/tests/src/Functional/UserPasswordResetTest.php b/core/modules/user/tests/src/Functional/UserPasswordResetTest.php index 21cbfd5639a13062d0f60c639f56f6fc8b2750a2..9a772f2172dc8810ce79261ac95054d3fb53234b 100644 --- a/core/modules/user/tests/src/Functional/UserPasswordResetTest.php +++ b/core/modules/user/tests/src/Functional/UserPasswordResetTest.php @@ -239,10 +239,8 @@ public function testUserPasswordReset(): void { /** * Tests password reset functionality when user has set preferred language. - * - * @dataProvider languagePrefixTestProvider */ - public function testUserPasswordResetPreferredLanguage($setPreferredLangcode, $activeLangcode, $prefix, $visitingUrl, $expectedResetUrl, $unexpectedResetUrl): void { + public function testUserPasswordResetPreferredLanguage(): void { // Set two new languages. ConfigurableLanguage::createFromLangcode('fr')->save(); ConfigurableLanguage::createFromLangcode('zh-hant')->save(); @@ -254,34 +252,38 @@ public function testUserPasswordResetPreferredLanguage($setPreferredLangcode, $a $config->set('url.prefixes', ['en' => '', 'fr' => 'fr', 'zh-hant' => 'zh'])->save(); $this->rebuildContainer(); - $this->account->preferred_langcode = $setPreferredLangcode; - $this->account->save(); - $this->assertSame($setPreferredLangcode, $this->account->getPreferredLangcode(FALSE)); + 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']); - // 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()); + $resetURL = $this->getResetURL(); + $this->assertStringContainsString($expectedResetUrl, $resetURL); + $this->assertStringNotContainsString($unexpectedResetUrl, $resetURL); } - - // 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); } /** - * Data provider for testUserPasswordResetPreferredLanguage(). + * Provides scenarios for testUserPasswordResetPreferredLanguage(). * * @return array */ - public static function languagePrefixTestProvider() { + protected function languagePrefixTestProvider() { return [ 'Test language prefix set as \'\', visiting default with preferred language as en' => [ 'setPreferredLangcode' => 'en',