From fe67134eaa0c843cd131e988b8dae8a23183c463 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20S=CC=8Ckoda?= Date: Tue, 9 Oct 2012 23:04:51 +0200 Subject: [PATCH] MDL-35854 fix username generator This eliminates infinite loop and also fixes potentially invalid email derived from usernames created from unicode first/last name. --- lib/phpunit/classes/data_generator.php | 6 ++++-- lib/phpunit/tests/generator_test.php | 5 +++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/lib/phpunit/classes/data_generator.php b/lib/phpunit/classes/data_generator.php index 515f062ee24..bcc90fa19fd 100644 --- a/lib/phpunit/classes/data_generator.php +++ b/lib/phpunit/classes/data_generator.php @@ -157,9 +157,11 @@ EOD; } if (!isset($record['username'])) { - $record['username'] = textlib::strtolower($record['firstname']).textlib::strtolower($record['lastname']); + $record['username'] = 'username'.$i; + $j = 2; while ($DB->record_exists('user', array('username'=>$record['username'], 'mnethostid'=>$record['mnethostid']))) { - $record['username'] = $record['username'].'_'.$i; + $record['username'] = 'username'.$i.'_'.$j; + $j++; } } diff --git a/lib/phpunit/tests/generator_test.php b/lib/phpunit/tests/generator_test.php index 9c6f4f6bbae..1a3efc34aea 100644 --- a/lib/phpunit/tests/generator_test.php +++ b/lib/phpunit/tests/generator_test.php @@ -44,6 +44,11 @@ class core_phpunit_generator_testcase extends advanced_testcase { $count = $DB->count_records('user'); $user = $generator->create_user(); $this->assertEquals($count+1, $DB->count_records('user')); + $this->assertSame($user->username, clean_param($user->username, PARAM_USERNAME)); + $this->assertSame($user->email, clean_param($user->email, PARAM_EMAIL)); + $user = $generator->create_user(array('firstname'=>'Žluťoučký', 'lastname'=>'Koníček')); + $this->assertSame($user->username, clean_param($user->username, PARAM_USERNAME)); + $this->assertSame($user->email, clean_param($user->email, PARAM_EMAIL)); $count = $DB->count_records('course_categories'); $category = $generator->create_category();