PageRenderTime 43ms CodeModel.GetById 20ms RepoModel.GetById 1ms app.codeStats 0ms

/tests/lib/group.php

https://github.com/jlgg/simple_trash
PHP | 182 lines | 112 code | 46 blank | 24 comment | 0 complexity | df0bf1d11e5913730b3942874332cf1e MD5 | raw file
Possible License(s): AGPL-3.0, AGPL-1.0, MPL-2.0-no-copyleft-exception
  1. <?php
  2. /**
  3. * ownCloud
  4. *
  5. * @author Robin Appelman
  6. * @author Bernhard Posselt
  7. * @copyright 2012 Robin Appelman icewind@owncloud.com
  8. * @copyright 2012 Bernhard Posselt nukeawhale@gmail.com
  9. *
  10. * This library is free software; you can redistribute it and/or
  11. * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
  12. * License as published by the Free Software Foundation; either
  13. * version 3 of the License, or any later version.
  14. *
  15. * This library is distributed in the hope that it will be useful,
  16. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  17. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  18. * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
  19. *
  20. * You should have received a copy of the GNU Affero General Public
  21. * License along with this library. If not, see <http://www.gnu.org/licenses/>.
  22. *
  23. */
  24. class Test_Group extends UnitTestCase {
  25. function setUp() {
  26. OC_Group::clearBackends();
  27. }
  28. function testSingleBackend() {
  29. OC_Group::useBackend(new OC_Group_Dummy());
  30. $group1=uniqid();
  31. $group2=uniqid();
  32. OC_Group::createGroup($group1);
  33. OC_Group::createGroup($group2);
  34. $user1=uniqid();
  35. $user2=uniqid();
  36. $this->assertFalse(OC_Group::inGroup($user1, $group1));
  37. $this->assertFalse(OC_Group::inGroup($user2, $group1));
  38. $this->assertFalse(OC_Group::inGroup($user1, $group2));
  39. $this->assertFalse(OC_Group::inGroup($user2, $group2));
  40. $this->assertTrue(OC_Group::addToGroup($user1, $group1));
  41. $this->assertTrue(OC_Group::inGroup($user1, $group1));
  42. $this->assertFalse(OC_Group::inGroup($user2, $group1));
  43. $this->assertFalse(OC_Group::inGroup($user1, $group2));
  44. $this->assertFalse(OC_Group::inGroup($user2, $group2));
  45. $this->assertFalse(OC_Group::addToGroup($user1, $group1));
  46. $this->assertEqual(array($user1), OC_Group::usersInGroup($group1));
  47. $this->assertEqual(array(), OC_Group::usersInGroup($group2));
  48. $this->assertEqual(array($group1), OC_Group::getUserGroups($user1));
  49. $this->assertEqual(array(), OC_Group::getUserGroups($user2));
  50. OC_Group::deleteGroup($group1);
  51. $this->assertEqual(array(), OC_Group::getUserGroups($user1));
  52. $this->assertEqual(array(), OC_Group::usersInGroup($group1));
  53. $this->assertFalse(OC_Group::inGroup($user1, $group1));
  54. }
  55. public function testNoEmptyGIDs(){
  56. OC_Group::useBackend(new OC_Group_Dummy());
  57. $emptyGroup = null;
  58. $this->assertEqual(false, OC_Group::createGroup($emptyGroup));
  59. }
  60. public function testNoGroupsTwice(){
  61. OC_Group::useBackend(new OC_Group_Dummy());
  62. $group = uniqid();
  63. OC_Group::createGroup($group);
  64. $groupCopy = $group;
  65. $this->assertEqual(false, OC_Group::createGroup($groupCopy));
  66. $this->assertEqual(array($group), OC_Group::getGroups());
  67. }
  68. public function testDontDeleteAdminGroup(){
  69. OC_Group::useBackend(new OC_Group_Dummy());
  70. $adminGroup = 'admin';
  71. OC_Group::createGroup($adminGroup);
  72. $this->assertEqual(false, OC_Group::deleteGroup($adminGroup));
  73. $this->assertEqual(array($adminGroup), OC_Group::getGroups());
  74. }
  75. public function testDontAddUserToNonexistentGroup(){
  76. OC_Group::useBackend(new OC_Group_Dummy());
  77. $groupNonExistent = 'notExistent';
  78. $user = uniqid();
  79. $this->assertEqual(false, OC_Group::addToGroup($user, $groupNonExistent));
  80. $this->assertEqual(array(), OC_Group::getGroups());
  81. }
  82. public function testUsersInGroup(){
  83. OC_Group::useBackend(new OC_Group_Dummy());
  84. $group1 = uniqid();
  85. $group2 = uniqid();
  86. $group3 = uniqid();
  87. $user1 = uniqid();
  88. $user2 = uniqid();
  89. $user3 = uniqid();
  90. OC_Group::createGroup($group1);
  91. OC_Group::createGroup($group2);
  92. OC_Group::createGroup($group3);
  93. OC_Group::addToGroup($user1, $group1);
  94. OC_Group::addToGroup($user2, $group1);
  95. OC_Group::addToGroup($user3, $group1);
  96. OC_Group::addToGroup($user3, $group2);
  97. $this->assertEqual(array($user1, $user2, $user3),
  98. OC_Group::usersInGroups(array($group1, $group2, $group3)));
  99. // FIXME: needs more parameter variation
  100. }
  101. function testMultiBackend() {
  102. $backend1=new OC_Group_Dummy();
  103. $backend2=new OC_Group_Dummy();
  104. OC_Group::useBackend($backend1);
  105. OC_Group::useBackend($backend2);
  106. $group1=uniqid();
  107. $group2=uniqid();
  108. OC_Group::createGroup($group1);
  109. //groups should be added to the first registered backend
  110. $this->assertEqual(array($group1), $backend1->getGroups());
  111. $this->assertEqual(array(), $backend2->getGroups());
  112. $this->assertEqual(array($group1), OC_Group::getGroups());
  113. $this->assertTrue(OC_Group::groupExists($group1));
  114. $this->assertFalse(OC_Group::groupExists($group2));
  115. $backend1->createGroup($group2);
  116. $this->assertEqual(array($group1, $group2), OC_Group::getGroups());
  117. $this->assertTrue(OC_Group::groupExists($group1));
  118. $this->assertTrue(OC_Group::groupExists($group2));
  119. $user1=uniqid();
  120. $user2=uniqid();
  121. $this->assertFalse(OC_Group::inGroup($user1, $group1));
  122. $this->assertFalse(OC_Group::inGroup($user2, $group1));
  123. $this->assertTrue(OC_Group::addToGroup($user1, $group1));
  124. $this->assertTrue(OC_Group::inGroup($user1, $group1));
  125. $this->assertFalse(OC_Group::inGroup($user2, $group1));
  126. $this->assertFalse($backend2->inGroup($user1, $group1));
  127. $this->assertFalse(OC_Group::addToGroup($user1, $group1));
  128. $this->assertEqual(array($user1), OC_Group::usersInGroup($group1));
  129. $this->assertEqual(array($group1), OC_Group::getUserGroups($user1));
  130. $this->assertEqual(array(), OC_Group::getUserGroups($user2));
  131. OC_Group::deleteGroup($group1);
  132. $this->assertEqual(array(), OC_Group::getUserGroups($user1));
  133. $this->assertEqual(array(), OC_Group::usersInGroup($group1));
  134. $this->assertFalse(OC_Group::inGroup($user1, $group1));
  135. }
  136. }