diff --git a/app/code/core/Mage/Admin/Model/User.php b/app/code/core/Mage/Admin/Model/User.php index 5d5107adb3575..69394d7769940 100644 --- a/app/code/core/Mage/Admin/Model/User.php +++ b/app/code/core/Mage/Admin/Model/User.php @@ -384,7 +384,11 @@ public function reload() */ public function loadByUsername($username) { - $this->setData($this->getResource()->loadByUsername($username)); + $user = $this->getResource()->loadByUsername($username); + if ($user) { + $this->setData($user); + } + return $this; } diff --git a/dev/tests/integration/testsuite/Mage/Admin/Model/UserTest.php b/dev/tests/integration/testsuite/Mage/Admin/Model/UserTest.php new file mode 100644 index 0000000000000..f8fdb303d8a0d --- /dev/null +++ b/dev/tests/integration/testsuite/Mage/Admin/Model/UserTest.php @@ -0,0 +1,56 @@ +_model = new Mage_Admin_Model_User; + } + + /** + * Ensure that an exception is not thrown if the user does not exist + */ + public function testloadByUsername() { + $this->_model->loadByUsername('non_exiting_user'); + $this->assertNull($this->_model->getId(), 'The admin user has an unexpected ID'); + $this->_model->loadByUsername('adminuser'); + $this->assertTrue(!is_null($this->_model->getId()), 'The admin user should have been loaded'); + } +} diff --git a/dev/tests/integration/testsuite/Mage/Admin/_files/user.php b/dev/tests/integration/testsuite/Mage/Admin/_files/user.php new file mode 100644 index 0000000000000..363ab0871a5d3 --- /dev/null +++ b/dev/tests/integration/testsuite/Mage/Admin/_files/user.php @@ -0,0 +1,35 @@ +setFirstname('Admin') + ->setLastname('User') + ->setEmail('test@magento.com') + ->setUsername('adminuser') + ->setPassword('1234567890') + ->setIsActive(1) + ->save();