Skip to content

Commit 1817a9f

Browse files
authored
move test functions (#360)
1 parent d7cada6 commit 1817a9f

File tree

2 files changed

+83
-81
lines changed

2 files changed

+83
-81
lines changed

test/functional/NewUserTest.php

Lines changed: 11 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -85,76 +85,6 @@ private function approveGroup($uid)
8585
]);
8686
}
8787

88-
// delete requests made by that user
89-
// delete user entry
90-
// delete user group entry
91-
// remove user from org group
92-
// remove user from "all users" group
93-
// does not remove user from PI groups
94-
private function ensureUserDoesNotExist()
95-
{
96-
global $USER, $SQL, $LDAP, $REDIS;
97-
$SQL->deleteRequestsByUser($USER->uid);
98-
if ($USER->exists()) {
99-
$org = $USER->getOrgGroup();
100-
if ($org->exists() and $org->inOrg($USER)) {
101-
$org->removeUser($USER);
102-
ensure(!$org->inOrg($USER));
103-
}
104-
$LDAP->getUserEntry($USER->uid)->delete();
105-
ensure(!$USER->exists());
106-
}
107-
if ($USER->getGroupEntry()->exists()) {
108-
$USER->getGroupEntry()->delete();
109-
ensure(!$USER->getGroupEntry()->exists());
110-
}
111-
$all_users_group = $LDAP->getQualifiedUserGroup();
112-
$all_member_uids = $all_users_group->getAttribute("memberuid");
113-
if (in_array($USER->uid, $all_member_uids)) {
114-
$all_users_group->setAttribute(
115-
"memberuid",
116-
// array_diff will break the contiguity of the array indexes
117-
// ldap_mod_replace requires contiguity, array_values restores contiguity
118-
array_values(array_diff($all_member_uids, [$USER->uid])),
119-
);
120-
$all_users_group->write();
121-
ensure(!in_array($USER->uid, $all_users_group->getAttribute("memberuid")));
122-
}
123-
$REDIS->removeCacheArray("sorted_qualified_users", "", $USER->uid);
124-
}
125-
126-
private function ensureOrgGroupDoesNotExist()
127-
{
128-
global $USER, $SSO, $LDAP, $SQL, $MAILER, $REDIS, $WEBHOOK;
129-
$org_group = $LDAP->getOrgGroupEntry($SSO["org"]);
130-
if ($org_group->exists()) {
131-
$org_group->delete();
132-
ensure(!$org_group->exists());
133-
}
134-
$REDIS->removeCacheArray("sorted_orgs", "", $SSO["org"]);
135-
}
136-
137-
private function ensureUserNotInPIGroup(UnityGroup $pi_group)
138-
{
139-
global $USER, $REDIS;
140-
if ($pi_group->memberExists($USER)) {
141-
$pi_group->removeUser($USER);
142-
ensure(!$pi_group->memberExists($USER));
143-
}
144-
$REDIS->removeCacheArray($pi_group->gid, "members", $USER->uid);
145-
}
146-
147-
private function ensurePIGroupDoesNotExist()
148-
{
149-
global $USER, $LDAP, $REDIS;
150-
$gid = $USER->getPIGroup()->gid;
151-
if ($USER->getPIGroup()->exists()) {
152-
$LDAP->getPIGroupEntry($gid)->delete();
153-
ensure(!$USER->getPIGroup()->exists());
154-
}
155-
$REDIS->removeCacheArray("sorted_groups", "", $gid);
156-
}
157-
15888
#[DataProvider("provider")]
15989
public function testCreateUserByJoinGoupByPI($user_to_create_args, $expected_uid_gid)
16090
{
@@ -222,9 +152,9 @@ public function testCreateUserByJoinGoupByPI($user_to_create_args, $expected_uid
222152
$this->assertTrue(!$pi_group->requestExists($USER));
223153
} finally {
224154
switchUser(...$user_to_create_args);
225-
$this->ensureOrgGroupDoesNotExist();
226-
$this->ensureUserNotInPIGroup($pi_group);
227-
$this->ensureUserDoesNotExist();
155+
ensureOrgGroupDoesNotExist();
156+
ensureUserNotInPIGroup($pi_group);
157+
ensureUserDoesNotExist();
228158
}
229159
}
230160

@@ -258,8 +188,8 @@ public function testCreateMultipleUsersByJoinGoupByPI()
258188
} finally {
259189
foreach ($users_to_create_args as $user_to_create_args) {
260190
switchUser(...$user_to_create_args);
261-
$this->ensureUserNotInPIGroup($pi_group);
262-
$this->ensureUserDoesNotExist();
191+
ensureUserNotInPIGroup($pi_group);
192+
ensureUserDoesNotExist();
263193
}
264194
}
265195
}
@@ -330,9 +260,9 @@ public function testCreateUserByJoinGoupByAdmin($user_to_create_args, $expected_
330260
$this->assertTrue(!$pi_group->requestExists($USER));
331261
} finally {
332262
switchUser(...$user_to_create_args);
333-
$this->ensureOrgGroupDoesNotExist();
334-
$this->ensureUserNotInPIGroup($pi_group);
335-
$this->ensureUserDoesNotExist();
263+
ensureOrgGroupDoesNotExist();
264+
ensureUserNotInPIGroup($pi_group);
265+
ensureUserDoesNotExist();
336266
}
337267
}
338268

@@ -395,9 +325,9 @@ public function testCreateUserByCreateGroup($user_to_create_args, $expected_uid_
395325
$this->assertRequestedPIGroup(false);
396326
} finally {
397327
switchUser(...$user_to_create_args);
398-
$this->ensureOrgGroupDoesNotExist();
399-
$this->ensurePIGroupDoesNotExist();
400-
$this->ensureUserDoesNotExist();
328+
ensureOrgGroupDoesNotExist();
329+
ensurePIGroupDoesNotExist();
330+
ensureUserDoesNotExist();
401331
}
402332
}
403333
}

test/phpunit-bootstrap.php

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
require_once __DIR__ . "/../resources/lib/exceptions/EncodingUnknownException.php";
2525
require_once __DIR__ . "/../resources/lib/exceptions/EncodingConversionException.php";
2626

27+
use UnityWebPortal\lib\UnityGroup;
28+
2729
$_SERVER["HTTP_HOST"] = "phpunit"; // used for config override
2830
require_once __DIR__ . "/../resources/config.php";
2931

@@ -161,6 +163,76 @@ function http_get(string $phpfile, array $get_data = []): void
161163
}
162164
}
163165

166+
// delete requests made by that user
167+
// delete user entry
168+
// delete user group entry
169+
// remove user from org group
170+
// remove user from "all users" group
171+
// does not remove user from PI groups
172+
function ensureUserDoesNotExist()
173+
{
174+
global $USER, $SQL, $LDAP, $REDIS;
175+
$SQL->deleteRequestsByUser($USER->uid);
176+
if ($USER->exists()) {
177+
$org = $USER->getOrgGroup();
178+
if ($org->exists() and $org->inOrg($USER)) {
179+
$org->removeUser($USER);
180+
ensure(!$org->inOrg($USER));
181+
}
182+
$LDAP->getUserEntry($USER->uid)->delete();
183+
ensure(!$USER->exists());
184+
}
185+
if ($USER->getGroupEntry()->exists()) {
186+
$USER->getGroupEntry()->delete();
187+
ensure(!$USER->getGroupEntry()->exists());
188+
}
189+
$all_users_group = $LDAP->getQualifiedUserGroup();
190+
$all_member_uids = $all_users_group->getAttribute("memberuid");
191+
if (in_array($USER->uid, $all_member_uids)) {
192+
$all_users_group->setAttribute(
193+
"memberuid",
194+
// array_diff will break the contiguity of the array indexes
195+
// ldap_mod_replace requires contiguity, array_values restores contiguity
196+
array_values(array_diff($all_member_uids, [$USER->uid])),
197+
);
198+
$all_users_group->write();
199+
ensure(!in_array($USER->uid, $all_users_group->getAttribute("memberuid")));
200+
}
201+
$REDIS->removeCacheArray("sorted_qualified_users", "", $USER->uid);
202+
}
203+
204+
function ensureOrgGroupDoesNotExist()
205+
{
206+
global $USER, $SSO, $LDAP, $SQL, $MAILER, $REDIS, $WEBHOOK;
207+
$org_group = $LDAP->getOrgGroupEntry($SSO["org"]);
208+
if ($org_group->exists()) {
209+
$org_group->delete();
210+
ensure(!$org_group->exists());
211+
}
212+
$REDIS->removeCacheArray("sorted_orgs", "", $SSO["org"]);
213+
}
214+
215+
function ensureUserNotInPIGroup(UnityGroup $pi_group)
216+
{
217+
global $USER, $REDIS;
218+
if ($pi_group->memberExists($USER)) {
219+
$pi_group->removeUser($USER);
220+
ensure(!$pi_group->memberExists($USER));
221+
}
222+
$REDIS->removeCacheArray($pi_group->gid, "members", $USER->uid);
223+
}
224+
225+
function ensurePIGroupDoesNotExist()
226+
{
227+
global $USER, $LDAP, $REDIS;
228+
$gid = $USER->getPIGroup()->gid;
229+
if ($USER->getPIGroup()->exists()) {
230+
$LDAP->getPIGroupEntry($gid)->delete();
231+
ensure(!$USER->getPIGroup()->exists());
232+
}
233+
$REDIS->removeCacheArray("sorted_groups", "", $gid);
234+
}
235+
164236
function getNormalUser()
165237
{
166238
return ["[email protected]", "foo", "bar", "[email protected]"];

0 commit comments

Comments
 (0)