From e3ea3ed3c563fce2b5fe1addfe199e3aaec7abdb Mon Sep 17 00:00:00 2001
From: Robin Appelman <icewind@owncloud.com>
Date: Thu, 18 Jul 2013 12:15:34 +0200
Subject: [PATCH] group: only pass backends that hold that specific group to
 the group constructor

---
 lib/group/group.php         |  2 +-
 lib/group/manager.php       |  8 +++++++-
 tests/lib/group/group.php   |  4 ----
 tests/lib/group/manager.php | 10 +++++-----
 4 files changed, 13 insertions(+), 11 deletions(-)

diff --git a/lib/group/group.php b/lib/group/group.php
index d4036b4361..7a63931324 100644
--- a/lib/group/group.php
+++ b/lib/group/group.php
@@ -225,7 +225,7 @@ class Group {
 			$this->emitter->emit('\OC\Group', 'preDelete', array($this));
 		}
 		foreach ($this->backends as $backend) {
-			if ($backend->implementsActions(OC_GROUP_BACKEND_DELETE_GROUP) and $backend->groupExists($this->gid)) {
+			if ($backend->implementsActions(OC_GROUP_BACKEND_DELETE_GROUP)) {
 				$result = true;
 				$backend->deleteGroup($this->gid);
 			}
diff --git a/lib/group/manager.php b/lib/group/manager.php
index 7efcff0ade..bf469d51d1 100644
--- a/lib/group/manager.php
+++ b/lib/group/manager.php
@@ -85,7 +85,13 @@ class Manager extends PublicEmitter {
 	}
 
 	protected function getGroupObject($gid) {
-		$this->cachedGroups[$gid] = new Group($gid, $this->backends, $this->userManager, $this);
+		$backends = array();
+		foreach ($this->backends as $backend) {
+			if ($backend->groupExists($gid)) {
+				$backends[] = $backend;
+			}
+		}
+		$this->cachedGroups[$gid] = new Group($gid, $backends, $this->userManager, $this);
 		return $this->cachedGroups[$gid];
 	}
 
diff --git a/tests/lib/group/group.php b/tests/lib/group/group.php
index 116aefda81..75e975d9e6 100644
--- a/tests/lib/group/group.php
+++ b/tests/lib/group/group.php
@@ -307,10 +307,6 @@ class Group extends \PHPUnit_Framework_TestCase {
 		$backend->expects($this->once())
 			->method('deleteGroup')
 			->with('group1');
-		$backend->expects($this->once())
-			->method('groupExists')
-			->with('group1')
-			->will($this->returnValue(true));
 		$backend->expects($this->any())
 			->method('implementsActions')
 			->will($this->returnValue(true));
diff --git a/tests/lib/group/manager.php b/tests/lib/group/manager.php
index 2ecaefc140..9d3adf51a0 100644
--- a/tests/lib/group/manager.php
+++ b/tests/lib/group/manager.php
@@ -17,7 +17,7 @@ class Manager extends \PHPUnit_Framework_TestCase {
 		 * @var \PHPUnit_Framework_MockObject_MockObject | \OC_Group_Backend $backend
 		 */
 		$backend = $this->getMock('\OC_Group_Database');
-		$backend->expects($this->once())
+		$backend->expects($this->any())
 			->method('groupExists')
 			->with('group1')
 			->will($this->returnValue(true));
@@ -85,7 +85,7 @@ class Manager extends \PHPUnit_Framework_TestCase {
 		 * @var \PHPUnit_Framework_MockObject_MockObject | \OC_Group_Backend $backend1
 		 */
 		$backend1 = $this->getMock('\OC_Group_Database');
-		$backend1->expects($this->once())
+		$backend1->expects($this->any())
 			->method('groupExists')
 			->with('group1')
 			->will($this->returnValue(false));
@@ -94,7 +94,7 @@ class Manager extends \PHPUnit_Framework_TestCase {
 		 * @var \PHPUnit_Framework_MockObject_MockObject | \OC_Group_Backend $backend2
 		 */
 		$backend2 = $this->getMock('\OC_Group_Database');
-		$backend2->expects($this->once())
+		$backend2->expects($this->any())
 			->method('groupExists')
 			->with('group1')
 			->will($this->returnValue(true));
@@ -117,7 +117,7 @@ class Manager extends \PHPUnit_Framework_TestCase {
 		 * @var \PHPUnit_Framework_MockObject_MockObject | \OC_Group_Backend $backend
 		 */
 		$backend = $this->getMock('\OC_Group_Database');
-		$backend->expects($this->once())
+		$backend->expects($this->any())
 			->method('groupExists')
 			->with('group1')
 			->will($this->returnValue(false));
@@ -143,7 +143,7 @@ class Manager extends \PHPUnit_Framework_TestCase {
 		 * @var \PHPUnit_Framework_MockObject_MockObject | \OC_Group_Backend $backend
 		 */
 		$backend = $this->getMock('\OC_Group_Database');
-		$backend->expects($this->once())
+		$backend->expects($this->any())
 			->method('groupExists')
 			->with('group1')
 			->will($this->returnValue(true));
-- 
GitLab