Skip to content

Commit d935553

Browse files
authored
use getGroupMemberUIDs inside getGroupMembers (#236)
* use getGroupMemberUIDs inside getGroupMembers * copy paste error * no more cache_arr * ignore order of list
1 parent e33062d commit d935553

File tree

4 files changed

+54
-31
lines changed

4 files changed

+54
-31
lines changed

resources/lib/UnityGroup.php

Lines changed: 18 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -460,22 +460,8 @@ public function getRequests()
460460

461461
public function getGroupMembers($ignorecache = false)
462462
{
463-
if (!$ignorecache) {
464-
$cached_val = $this->REDIS->getCache($this->getPIUID(), "members");
465-
if (!is_null($cached_val)) {
466-
$members = $cached_val;
467-
}
468-
}
469-
470-
$updatecache = false;
471-
if (!isset($members)) {
472-
$pi_group = $this->getLDAPPiGroup();
473-
$members = $pi_group->getAttribute("memberuid");
474-
$updatecache = true;
475-
}
476-
463+
$members = $this->getGroupMemberUIDs($ignorecache);
477464
$out = array();
478-
$cache_arr = array();
479465
$owner_uid = $this->getOwner()->getUID();
480466
foreach ($members as $member) {
481467
$user_obj = new UnityUser(
@@ -487,22 +473,28 @@ public function getGroupMembers($ignorecache = false)
487473
$this->WEBHOOK
488474
);
489475
array_push($out, $user_obj);
490-
array_push($cache_arr, $user_obj->getUID());
491-
}
492-
493-
if (!$ignorecache && $updatecache) {
494-
sort($cache_arr);
495-
$this->REDIS->setCache($this->getPIUID(), "members", $cache_arr);
496476
}
497-
498477
return $out;
499478
}
500479

501-
public function getGroupMemberUIDs()
480+
public function getGroupMemberUIDs($ignorecache = false)
502481
{
503-
$pi_group = $this->getLDAPPiGroup();
504-
$members = $pi_group->getAttribute("memberuid");
505-
482+
if (!$ignorecache) {
483+
$cached_val = $this->REDIS->getCache($this->getPIUID(), "members");
484+
if (!is_null($cached_val)) {
485+
$members = $cached_val;
486+
}
487+
}
488+
$updatecache = false;
489+
if (!isset($members)) {
490+
$pi_group = $this->getLDAPPiGroup();
491+
$members = $pi_group->getAttribute("memberuid");
492+
$updatecache = true;
493+
}
494+
if (!$ignorecache && $updatecache) {
495+
sort($members);
496+
$this->REDIS->setCache($this->getPIUID(), "members", $members);
497+
}
506498
return $members;
507499
}
508500

test/functional/PiMemberApproveTest.php

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,12 @@ public function testApproveRequest()
3131
$pi = $USER;
3232
$piGroup = $USER->getPIGroup();
3333
$this->assertTrue($piGroup->exists());
34-
$this->assertEquals([$pi->getUID()], $piGroup->getGroupMemberUIDs());
34+
$this->assertTrue(
35+
arraysAreEqualUnOrdered(
36+
[$pi->getUID()],
37+
$piGroup->getGroupMemberUIDs()
38+
)
39+
);
3540
$this->assertEmpty($piGroup->getRequests());
3641
$requestedUser = new UnityUser(self::$requestUid, $LDAP, $SQL, $MAILER, $REDIS, $WEBHOOK);
3742
try {
@@ -41,7 +46,12 @@ public function testApproveRequest()
4146
$piGroup->approveUser($requestedUser);
4247
$this->assertEmpty($piGroup->getRequests());
4348

44-
$this->assertEquals([$pi->getUID(), self::$requestUid], $piGroup->getGroupMemberUIDs());
49+
$this->assertTrue(
50+
arraysAreEqualUnOrdered(
51+
[$pi->getUID(), self::$requestUid],
52+
$piGroup->getGroupMemberUIDs()
53+
)
54+
);
4555
$this->assertTrue($piGroup->userExists($requestedUser));
4656
} finally {
4757
$piGroup->removeUser($requestedUser);
@@ -56,7 +66,12 @@ public function testApproveNonexistentRequest()
5666
$pi = $USER;
5767
$piGroup = $USER->getPIGroup();
5868
$this->assertTrue($piGroup->exists());
59-
$this->assertEquals([$pi->getUID()], $piGroup->getGroupMemberUIDs());
69+
$this->assertTrue(
70+
arraysAreEqualUnOrdered(
71+
[$pi->getUID()],
72+
$piGroup->getGroupMemberUIDs()
73+
)
74+
);
6075
$this->assertEmpty($piGroup->getRequests());
6176

6277
$notRequestedUser = new UnityUser(self::$noRequestUid, $LDAP, $SQL, $MAILER, $REDIS, $WEBHOOK);

test/functional/PiMemberDenyTest.php

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,12 @@ public function testDenyRequest()
2828
$pi = $USER;
2929
$piGroup = $USER->getPIGroup();
3030
$this->assertTrue($piGroup->exists());
31-
$this->assertEquals([$pi->getUID()], $piGroup->getGroupMemberUIDs());
31+
$this->assertTrue(
32+
arraysAreEqualUnOrdered(
33+
[$pi->getUID()],
34+
$piGroup->getGroupMemberUIDs()
35+
)
36+
);
3237
$this->assertEmpty($piGroup->getRequests());
3338
$requestedUser = new UnityUser(self::$requestUid, $LDAP, $SQL, $MAILER, $REDIS, $WEBHOOK);
3439
try {
@@ -37,7 +42,12 @@ public function testDenyRequest()
3742

3843
$piGroup->denyUser($requestedUser);
3944
$this->assertEmpty($piGroup->getRequests());
40-
$this->assertEquals([$pi->getUID()], $piGroup->getGroupMemberUIDs());
45+
$this->assertTrue(
46+
arraysAreEqualUnOrdered(
47+
[$pi->getUID()],
48+
$piGroup->getGroupMemberUIDs()
49+
)
50+
);
4151
$this->assertFalse($piGroup->userExists($requestedUser));
4252
} finally {
4353
$SQL->removeRequest(self::$requestUid, $piGroup->getPIUID());

test/phpunit-bootstrap.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,12 @@
4949
mb_convert_encoding("Hello, World!", "UTF-16")
5050
];
5151

52+
function arraysAreEqualUnOrdered(array $a, array $b): bool
53+
{
54+
return (array_diff($a, $b) == [] && array_diff($b, $a) == []);
55+
}
56+
57+
5258
function switchUser(
5359
string $eppn,
5460
string $given_name,

0 commit comments

Comments
 (0)