diff options
author | Lukas Reschke <lukas@statuscode.ch> | 2017-08-17 12:08:40 +0200 |
---|---|---|
committer | Lukas Reschke <lukas@statuscode.ch> | 2017-08-17 12:08:40 +0200 |
commit | ed8a98eaa1e44d172b838c5c9caa74261ac27eb1 (patch) | |
tree | 3b9a54794fdc298c8583b23c2e45cf7b9a90aed9 /tests | |
parent | a53aa40b4ddf4c9f868ad03df7131ceee417f2c9 (diff) | |
download | nextcloud-server-ed8a98eaa1e44d172b838c5c9caa74261ac27eb1.tar.gz nextcloud-server-ed8a98eaa1e44d172b838c5c9caa74261ac27eb1.zip |
Prevent SQL error message in case of error
`\OC\User\Database::createUser` can throw a PHP exception in case the UID is longer than
permitted in the database. This is against it's PHPDocs and we should cast this to `false`,
so that the regular error handling triggers in.
The easiest way to reproduce is on MySQL:
1. Create user `aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa` in admin panel
2. Create user `aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa` in admin panel again
3. See SQL exception as error message
Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/lib/User/ManagerTest.php | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/tests/lib/User/ManagerTest.php b/tests/lib/User/ManagerTest.php index cf725aae671..9520cd640fd 100644 --- a/tests/lib/User/ManagerTest.php +++ b/tests/lib/User/ManagerTest.php @@ -9,6 +9,7 @@ namespace Test\User; use OC\User\Database; +use OC\User\Manager; use OCP\IConfig; use OCP\IUser; use Test\TestCase; @@ -304,7 +305,6 @@ class ManagerTest extends TestCase { $this->setExpectedException(\InvalidArgumentException::class, $exception); $manager->createUser($uid, $password); - } public function testCreateUserSingleBackendNotExists() { @@ -386,6 +386,25 @@ class ManagerTest extends TestCase { } /** + * @expectedException \InvalidArgumentException + * @expectedExceptionMessage Could not create user + */ + public function testCreateUserFromBackendWithBackendError() { + /** @var IConfig|\PHPUnit_Framework_MockObject_MockObject $config */ + $config = $this->createMock(IConfig::class); + /** @var \Test\Util\User\Dummy|\PHPUnit_Framework_MockObject_MockObject $backend */ + $backend = $this->createMock(\Test\Util\User\Dummy::class); + $backend + ->expects($this->once()) + ->method('createUser') + ->with('MyUid', 'MyPassword') + ->willReturn(false); + + $manager = new Manager($config); + $manager->createUserFromBackend('MyUid', 'MyPassword', $backend); + } + + /** * @expectedException \Exception */ public function testCreateUserTwoBackendExists() { |