Index: modules/user/user.module =================================================================== RCS file: /cvs/drupal/drupal/modules/user/user.module,v retrieving revision 1.909 diff -u -p -r1.909 user.module --- modules/user/user.module 26 May 2008 17:12:55 -0000 1.909 +++ modules/user/user.module 4 Jun 2008 08:36:32 -0000 @@ -360,7 +360,6 @@ function user_validate_name($name) { if (substr($name, 0, 1) == ' ') return t('The username cannot begin with a space.'); if (substr($name, -1) == ' ') return t('The username cannot end with a space.'); if (strpos($name, ' ') !== FALSE) return t('The username cannot contain multiple spaces in a row.'); - if (ereg("[^\x80-\xF7 [:alnum:]@_.-]", $name)) return t('The username contains an illegal character.'); if (preg_match('/[\x{80}-\x{A0}' . // Non-printable ISO-8859-1 + NBSP '\x{AD}' . // Soft-hyphen '\x{2000}-\x{200F}' . // Various space characters @@ -373,8 +372,12 @@ function user_validate_name($name) { $name)) { return t('The username contains an illegal character.'); } - if (strpos($name, '@') !== FALSE && !eregi('@([0-9a-z](-?[0-9a-z])*.)+[a-z]{2}([zmuvtg]|fo|me)?$', $name)) return t('The username is not a valid authentication ID.'); - if (strlen($name) > USERNAME_MAX_LENGTH) return t('The username %name is too long: it must be %max characters or less.', array('%name' => $name, '%max' => USERNAME_MAX_LENGTH)); + if (strpos($name, '@') !== FALSE && !eregi('@([0-9a-z](-?[0-9a-z])*.)+[a-z]{2}([zmuvtg]|fo|me)?$', $name)) { + return t('The username is not a valid authentication ID.'); + } + if (strlen($name) > USERNAME_MAX_LENGTH) { + return t('The username %name is too long: it must be %max characters or less.', array('%name' => $name, '%max' => USERNAME_MAX_LENGTH)); + } } function user_validate_mail($mail) { Index: modules/user/user.test =================================================================== RCS file: /cvs/drupal/drupal/modules/user/user.test,v retrieving revision 1.5 diff -u -p -r1.5 user.test --- modules/user/user.test 2 Jun 2008 17:42:58 -0000 1.5 +++ modules/user/user.test 4 Jun 2008 08:36:32 -0000 @@ -116,47 +116,30 @@ class UserValidationTestCase extends Dru } // Username validation. - function testMinLengthName() { - $name = ''; - $result = user_validate_name($name); - $this->assertNotNull($result, 'Excessively short username'); - } - - function testValidCharsName() { - $name = 'ab/'; - $result = user_validate_name($name); - $this->assertNotNull($result, 'Invalid chars in username'); - } - - function testMaxLengthName() { - $name = str_repeat('a', 61); - $result = user_validate_name($name); - $this->assertNotNull($result, 'Excessively long username'); - } - - function testValidName() { - $name = 'abc'; - $result = user_validate_name($name); - $this->assertNull($result, 'Valid username'); + function testUsernames() { + $test_values = array( + '' => 'Excessively short username', + 'foo/' => 'Invalid chars in username', + str_repeat('a', 61) => 'Excessively long username', + 'foo' => 'Valid username', + ); + foreach ($test_values as $name => $description) { + $result = user_validate_name($name); + $this->assertNotNull($result, $description); + } } // Mail validation. - function testMinLengthMail() { - $name = ''; - $result = user_validate_mail($name); - $this->assertNotNull($result, 'Empty mail'); - } - - function testInValidMail() { - $name = 'abc'; - $result = user_validate_mail($name); - $this->assertNotNull($result, 'Invalid mail'); - } - - function testValidMail() { - $name = 'absdsdsdc@dsdsde.com'; - $result = user_validate_mail($name); - $this->assertNull($result, 'Valid mail'); + function testMailAddresses() { + $test_values = array( + '' => 'Empty mail', + 'foo' => 'Invalid mail', + 'foo@example.com' => 'Valid mail', + ); + foreach ($test_values as $name => $description) { + $result = user_validate_mail($name); + $this->assertNotNull($result, $description); + } } }