diff --git a/lib/user.php b/lib/user.php index da774ff86f0..b5fd418acd6 100644 --- a/lib/user.php +++ b/lib/user.php @@ -419,7 +419,7 @@ class OC_User { $manager = self::getManager(); $username = $manager->checkPassword($uid, $password); if ($username !== false) { - return $manager->get($username)->getUID(); + return $username->getUID(); } return false; } diff --git a/tests/lib/user.php b/tests/lib/user.php new file mode 100644 index 00000000000..66c7f3f0d74 --- /dev/null +++ b/tests/lib/user.php @@ -0,0 +1,43 @@ + + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace Test; + +use OC\Hooks\PublicEmitter; + +class User extends \PHPUnit_Framework_TestCase { + + public function testCheckPassword() { + /** + * @var \OC_User_Backend | \PHPUnit_Framework_MockObject_MockObject $backend + */ + $backend = $this->getMock('\OC_User_Dummy'); + $backend->expects($this->once()) + ->method('checkPassword') + ->with($this->equalTo('foo'), $this->equalTo('bar')) + ->will($this->returnValue('foo')); + + $backend->expects($this->any()) + ->method('implementsActions') + ->will($this->returnCallback(function ($actions) { + if ($actions === \OC_USER_BACKEND_CHECK_PASSWORD) { + return true; + } else { + return false; + } + })); + + $manager = \OC_User::getManager(); + $manager->registerBackend($backend); + + $uid = \OC_User::checkPassword('foo', 'bar'); + $this->assertEquals($uid, 'foo'); + } + +} \ No newline at end of file