Verified Commit df7e4792 authored by Lee Rowlands's avatar Lee Rowlands
Browse files

Issue #3490639 by dcam, seanb: Checking for duplicate emails in...

Issue #3490639 by dcam, seanb: Checking for duplicate emails in user_requirements() does not take langcode into account

(cherry picked from commit 95d3d95f)
parent 7fe4ff33
Loading
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -49,6 +49,7 @@ public function runtime(): array {
    $query->addExpression('LOWER(mail)', 'lower_mail');
    $query->isNotNull('mail');
    $query->groupBy('lower_mail');
    $query->groupBy('langcode');
    $query->having('COUNT(uid) > :matches', [':matches' => 1]);
    $conflicts = $query->countQuery()->execute()->fetchField();

+18 −0
Original line number Diff line number Diff line
@@ -5,6 +5,7 @@
namespace Drupal\Tests\user\Kernel;

use Drupal\KernelTests\KernelTestBase;
use Drupal\language\Entity\ConfigurableLanguage;
use Drupal\Tests\user\Traits\UserCreationTrait;

/**
@@ -70,4 +71,21 @@ public function testBlankUserEmails(): void {
    $this->assertArrayNotHasKey('conflicting emails', $output);
  }

  /**
   * Tests that the requirements check does not flag user translations.
   */
  public function testTranslatedUserEmail(): void {
    \Drupal::service('module_installer')->install(['language']);
    ConfigurableLanguage::createFromLangcode('is')->save();

    $output = $this->moduleHandler->invoke('user', 'runtime_requirements');
    $this->assertArrayNotHasKey('conflicting emails', $output);

    $user = $this->createUser([], 'User A', FALSE, ['mail' => 'unique@example.com']);
    $user->addTranslation('is')->save();

    $output = $this->moduleHandler->invoke('user', 'runtime_requirements');
    $this->assertArrayNotHasKey('conflicting emails', $output);
  }

}