diff -u b/password_policy_characters/src/Plugin/PasswordConstraint/PasswordCharacter.php b/password_policy_characters/src/Plugin/PasswordConstraint/PasswordCharacter.php --- b/password_policy_characters/src/Plugin/PasswordConstraint/PasswordCharacter.php +++ b/password_policy_characters/src/Plugin/PasswordConstraint/PasswordCharacter.php @@ -69,13 +69,13 @@ case 'special': if ($count_special < $configuration['character_count']) { - $validation->setErrorMessage($this->formatPlural($configuration['character_count'], 'Password must contain at least 1 special character.', 'Password must contain at least @count special characters.')); + $validation->setErrorMessage($this->formatPlural($configuration['character_count'], 'Password must contain at least 1 special character.', 'Password must contain at least @count unique special characters.')); } break; case 'numeric': if ($count_numeric < $configuration['character_count']) { - $validation->setErrorMessage($this->formatPlural($configuration['character_count'], 'Password must contain at least 1 numeric character.', 'Password must contain at least @count numeric characters.')); + $validation->setErrorMessage($this->formatPlural($configuration['character_count'], 'Password must contain at least 1 numeric character.', 'Password must contain at least @count unique numeric characters.')); } break; } @@ -139,7 +139,9 @@ * {@inheritdoc} */ public function getSummary() { - return $this->t('Password must contain @characters @character-type characters', ['@character-type' => $this->configuration['character_type'], '@characters' => $this->configuration['character_count']]); + return $this->formatPlural($this->configuration['character_count'], 'Password must contain at least 1 @character_type character.', 'Password must contain at least @count unique @character_type characters.', [ + '@character_type' => $this->configuration['character_type'], + ]); } } only in patch2: unchanged: --- a/password_policy_characters/tests/src/Functional/PasswordCharacterOperations.php +++ b/password_policy_characters/tests/src/Functional/PasswordCharacterOperations.php @@ -40,19 +40,19 @@ class PasswordCharacterOperations extends BrowserTestBase { $this->assertSession()->pageTextContains('Character type'); $this->drupalPostForm(NULL, ['character_type' => 'special', 'character_count' => 2], 'Save'); - $this->assertSession()->pageTextContains('Password must contain 2 special characters'); + $this->assertSession()->pageTextContains('Password must contain at least 2 unique special characters'); $this->drupalGet('admin/config/system/password_policy/constraint/add/test_policy/password_policy_character_constraint'); $this->drupalPostForm(NULL, ['character_type' => 'numeric', 'character_count' => 3], 'Save'); - $this->assertSession()->pageTextContains('Password must contain 3 numeric characters'); + $this->assertSession()->pageTextContains('Password must contain at least 3 unique numeric characters'); $this->drupalGet('admin/config/system/password_policy/constraint/add/test_policy/password_policy_character_constraint'); $this->drupalPostForm(NULL, ['character_type' => 'lowercase', 'character_count' => 4], 'Save'); - $this->assertSession()->pageTextContains('Password must contain 4 lowercase characters'); + $this->assertSession()->pageTextContains('Password must contain at least 4 unique lowercase characters'); $this->drupalGet('admin/config/system/password_policy/constraint/add/test_policy/password_policy_character_constraint'); $this->drupalPostForm(NULL, ['character_type' => 'uppercase', 'character_count' => 5], 'Save'); - $this->assertSession()->pageTextContains('Password must contain 5 uppercase characters'); + $this->assertSession()->pageTextContains('Password must contain at least 5 unique uppercase characters'); $this->drupalGet('admin/config/system/password_policy/constraint/add/test_policy/password_policy_character_constraint'); $this->drupalPostForm(NULL, ['character_type' => 'special', 'character_count' => ''], 'Save');