From 88cc52c408c82c1eb8a416358fb6f87f60b22da7 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Thomas=20M=C3=BCller?= Date: Tue, 14 Apr 2015 11:00:20 +0200 Subject: [PATCH] Avoid php message "Invalid argument supplied for foreach()" - refs #15590 --- lib/private/group/manager.php | 6 ++++-- tests/lib/group/manager.php | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/lib/private/group/manager.php b/lib/private/group/manager.php index 774a76a3063..12136a1bd25 100644 --- a/lib/private/group/manager.php +++ b/lib/private/group/manager.php @@ -205,8 +205,10 @@ class Manager extends PublicEmitter implements IGroupManager { $groups = array(); foreach ($this->backends as $backend) { $groupIds = $backend->getUserGroups($uid); - foreach ($groupIds as $groupId) { - $groups[$groupId] = $this->get($groupId); + if (is_array($groupIds)) { + foreach ($groupIds as $groupId) { + $groups[$groupId] = $this->get($groupId); + } } } $this->cachedUserGroups[$uid] = $groups; diff --git a/tests/lib/group/manager.php b/tests/lib/group/manager.php index 76996a2b9bb..0f3573f96e1 100644 --- a/tests/lib/group/manager.php +++ b/tests/lib/group/manager.php @@ -846,4 +846,39 @@ class Manager extends \Test\TestCase { $groups = $manager->getUserGroups($user1); $this->assertEquals(array(), $groups); } + + public function testGetUserIdGroups() { + /** + * @var \PHPUnit_Framework_MockObject_MockObject | \OC_Group_Backend $backend + */ + $backend = $this->getMock('\OC_Group_Database'); + $backend->expects($this->any()) + ->method('getUserGroups') + ->with('user1') + ->will($this->returnValue(null)); +// $backend->expects($this->any()) +// ->method('groupExists') +// ->with('group1') +// ->will($this->returnValue(true)); +// $backend->expects($this->once()) +// ->method('implementsActions') +// ->will($this->returnValue(true)); +// $backend->expects($this->once()) +// ->method('inGroup') +// ->will($this->returnValue(true)); +// $backend->expects($this->once()) +// ->method('removeFromGroup') +// ->will($this->returnValue(true)); + + /** + * @var \OC\User\Manager $userManager + */ + $userManager = $this->getMock('\OC\User\Manager'); + $manager = new \OC\Group\Manager($userManager); + $manager->addBackend($backend); + + $groups = $manager->getUserIdGroups('user1'); + $this->assertEquals([], $groups); + } + } -- 2.39.5