function UserValidationTest::testUsernames
Same name in other branches
- 9 core/modules/user/tests/src/Kernel/UserValidationTest.php \Drupal\Tests\user\Kernel\UserValidationTest::testUsernames()
- 8.9.x core/modules/user/tests/src/Kernel/UserValidationTest.php \Drupal\Tests\user\Kernel\UserValidationTest::testUsernames()
- 11.x core/modules/user/tests/src/Kernel/UserValidationTest.php \Drupal\Tests\user\Kernel\UserValidationTest::testUsernames()
Tests user name validation.
@group legacy
File
-
core/
modules/ user/ tests/ src/ Kernel/ UserValidationTest.php, line 44
Class
- UserValidationTest
- Verify that user validity checks behave as designed.
Namespace
Drupal\Tests\user\KernelCode
public function testUsernames() : void {
// cSpell:disable
$test_cases = [
// '<username>' => ['<description>', 'assert<testName>'].
'foo' => [
'Valid username',
'assertNull',
],
'FOO' => [
'Valid username',
'assertNull',
],
'Foo O\'Bar' => [
'Valid username',
'assertNull',
],
'foo@bar' => [
'Valid username',
'assertNull',
],
'foo@example.com' => [
'Valid username',
'assertNull',
],
// Invalid domains are allowed in usernames.
'foo@-example.com' => [
'Valid username',
'assertNull',
],
'þòøÇߪř€' => [
'Valid username',
'assertNull',
],
// '+' symbol is allowed.
'foo+bar' => [
'Valid username',
'assertNull',
],
// runes.
'ᚠᛇᚻ᛫ᛒᛦᚦ' => [
'Valid UTF8 username',
'assertNull',
],
' foo' => [
'Invalid username that starts with a space',
'assertNotNull',
],
'foo ' => [
'Invalid username that ends with a space',
'assertNotNull',
],
'foo bar' => [
'Invalid username that contains 2 spaces \' \'',
'assertNotNull',
],
'' => [
'Invalid empty username',
'assertNotNull',
],
'foo/' => [
'Invalid username containing invalid chars',
'assertNotNull',
],
// NULL.
'foo' . chr(0) . 'bar' => [
'Invalid username containing chr(0)',
'assertNotNull',
],
// CR.
'foo' . chr(13) . 'bar' => [
'Invalid username containing chr(13)',
'assertNotNull',
],
str_repeat('x', UserInterface::USERNAME_MAX_LENGTH + 1) => [
'Invalid excessively long username',
'assertNotNull',
],
];
$this->expectDeprecation('user_validate_name() is deprecated in drupal:10.3.0 and is removed from drupal:12.0.0. Use \\Drupal\\user\\UserNameValidator::validateName() instead. See https://www.drupal.org/node/3431205');
// cSpell:enable
foreach ($test_cases as $name => $test_case) {
[
$description,
$test,
] = $test_case;
$result = user_validate_name($name);
$this->{$test}($result, $description . ' (' . $name . ')');
}
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.