X-Git-Url: http://git.heureux-cyclage.org/?a=blobdiff_plain;f=tests%2Fphpunit%2Fincludes%2FTestUser.php;h=754568d0b23fc5dc75dca41445d72bbc978d776a;hb=0a9ee5d9bf0047ec65c29ee35321d96191ecbff5;hp=7a61cfd1aaf5a726b91bd9e84f17dee687586256;hpb=5caaa6b9ed8232b14c0d15699fa6687006470575;p=lhc%2Fweb%2Fwiklou.git diff --git a/tests/phpunit/includes/TestUser.php b/tests/phpunit/includes/TestUser.php index 7a61cfd1aa..754568d0b2 100644 --- a/tests/phpunit/includes/TestUser.php +++ b/tests/phpunit/includes/TestUser.php @@ -28,7 +28,7 @@ class TestUser { private function assertNotReal() { global $wgDBprefix; - if( $wgDBprefix !== MediaWikiTestCase::DB_PREFIX && $wgDBprefix !== MediaWikiTestCase::ORA_DB_PREFIX ) { + if ( $wgDBprefix !== MediaWikiTestCase::DB_PREFIX && $wgDBprefix !== MediaWikiTestCase::ORA_DB_PREFIX ) { throw new MWException( "Can't create user on real database" ); } } @@ -63,9 +63,9 @@ class TestUser { } // Update the user to use the password and other details - $this->user->setPassword( $this->password ); - $this->user->setEmail( $email ); - $this->user->setRealName( $realname ); + $change = $this->setPassword( $this->password ) || + $this->setEmail( $email ) || + $this->setRealName( $realname ); // Adjust groups by adding any missing ones and removing any extras $currentGroups = $this->user->getGroups(); @@ -75,7 +75,59 @@ class TestUser { foreach ( array_diff( $currentGroups, $groups ) as $group ) { $this->user->removeGroup( $group ); } - $this->user->saveSettings(); + if ( $change ) { + $this->user->saveSettings(); + } + } + + /** + * @param string $realname + * @return bool + */ + private function setRealName( $realname ) { + if ( $this->user->getRealName() !== $realname ) { + $this->user->setRealName( $realname ); + return true; + } + + return false; + } + + /** + * @param string $email + * @return bool + */ + private function setEmail( $email ) { + if ( $this->user->getEmail() !== $email ) { + $this->user->setEmail( $email ); + return true; + } + + return false; + } + + /** + * @param string $password + * @return bool + */ + private function setPassword( $password ) { + $passwordFactory = $this->user->getPasswordFactory(); + $oldDefaultType = $passwordFactory->getDefaultType(); + + // A is unsalted MD5 (thus fast) ... we don't care about security here, this is test only + $passwordFactory->setDefaultType( 'A' ); + $newPassword = $passwordFactory->newFromPlaintext( $password, $this->user->getPassword() ); + + $change = false; + if ( !$this->user->getPassword()->equals( $newPassword ) ) { + // Password changed + $this->user->setPassword( $password ); + $change = true; + } + + $passwordFactory->setDefaultType( $oldDefaultType ); + + return $change; } /**