Skip to content

Commit 0fe9751

Browse files
committed
add tests for approving, denying PI membership requests
1 parent 5a92fdb commit 0fe9751

File tree

4 files changed

+136
-1
lines changed

4 files changed

+136
-1
lines changed
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
<?php
2+
3+
use PHPUnit\Framework\TestCase;
4+
use PHPUnit\Framework\Attributes\DataProvider;
5+
use UnityWebPortal\lib\UnityUser;
6+
7+
class PiMemberApproveTest extends TestCase {
8+
static $requestUid;
9+
static $noRequestUid;
10+
11+
public static function setUpBeforeClass(): void{
12+
global $USER;
13+
switchUser(...getNormalUser());
14+
self::$requestUid = $USER->getUID();
15+
switchUser(...getNormalUser2());
16+
self::$noRequestUid = $USER->getUID();
17+
}
18+
19+
private function approveUser(string $uid)
20+
{
21+
post(
22+
__DIR__ . "/../../webroot/panel/pi.php",
23+
["form_type" => "userReq", "action" => "approve", "uid" => $uid]
24+
);
25+
}
26+
27+
public function testApproveRequest()
28+
{
29+
global $USER, $LDAP, $SQL, $MAILER, $REDIS, $WEBHOOK;
30+
switchUser(...getUserIsPIHasNoMembersNoMemberRequests());
31+
$pi = $USER;
32+
$piGroup = $USER->getPIGroup();
33+
$this->assertTrue($piGroup->exists());
34+
$this->assertEquals([$pi], $piGroup->getGroupMembers());
35+
$this->assertEmpty($piGroup->getRequests());
36+
$requestedUser = new UnityUser(self::$requestUid, $LDAP, $SQL, $MAILER, $REDIS, $WEBHOOK);
37+
try {
38+
$piGroup->newUserRequest($requestedUser);
39+
$this->assertFalse($piGroup->userExists($requestedUser));
40+
41+
$piGroup->approveUser($requestedUser);
42+
$this->assertEmpty($piGroup->getRequests());
43+
44+
$this->assertEquals([$requestedUser, $pi], $piGroup->getGroupMembers());
45+
$this->assertTrue($piGroup->userExists($requestedUser));
46+
} finally {
47+
$piGroup->removeUser($requestedUser);
48+
$SQL->removeRequest(self::$requestUid, $piGroup->getPIUID());
49+
}
50+
}
51+
52+
public function testApproveNonexistentRequest()
53+
{
54+
global $USER, $LDAP, $SQL, $MAILER, $REDIS, $WEBHOOK;
55+
switchUser(...getUserIsPIHasNoMembersNoMemberRequests());
56+
$pi = $USER;
57+
$piGroup = $USER->getPIGroup();
58+
$this->assertTrue($piGroup->exists());
59+
$this->assertEquals([$pi], $piGroup->getGroupMembers());
60+
$this->assertEmpty($piGroup->getRequests());
61+
62+
$notRequestedUser = new UnityUser(self::$noRequestUid, $LDAP, $SQL, $MAILER, $REDIS, $WEBHOOK);
63+
$this->assertFalse($piGroup->userExists($notRequestedUser));
64+
$this->assertEmpty($piGroup->getRequests());
65+
66+
try {
67+
$piGroup->approveUser($notRequestedUser);
68+
$this->assertEquals([$pi], $piGroup->getGroupMembers());
69+
$this->assertFalse($piGroup->userExists($notRequestedUser));
70+
} finally {
71+
$piGroup->removeUser($notRequestedUser);
72+
}
73+
}
74+
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
<?php
2+
3+
use PHPUnit\Framework\TestCase;
4+
use PHPUnit\Framework\Attributes\DataProvider;
5+
use UnityWebPortal\lib\UnityUser;
6+
7+
class PiMemberDenyTest extends TestCase {
8+
static $requestUid;
9+
10+
public static function setUpBeforeClass(): void{
11+
global $USER;
12+
switchUser(...getNormalUser());
13+
self::$requestUid = $USER->getUID();
14+
}
15+
16+
private function denyUser(string $uid)
17+
{
18+
post(
19+
__DIR__ . "/../../webroot/panel/pi.php",
20+
["form_type" => "userReq", "action" => "approve", "uid" => $uid]
21+
);
22+
}
23+
24+
public function testDenyRequest()
25+
{
26+
global $USER, $LDAP, $SQL, $MAILER, $REDIS, $WEBHOOK;
27+
switchUser(...getUserIsPIHasNoMembersNoMemberRequests());
28+
$pi = $USER;
29+
$piGroup = $USER->getPIGroup();
30+
$this->assertTrue($piGroup->exists());
31+
$this->assertEquals([$pi], $piGroup->getGroupMembers());
32+
$this->assertEmpty($piGroup->getRequests());
33+
$requestedUser = new UnityUser(self::$requestUid, $LDAP, $SQL, $MAILER, $REDIS, $WEBHOOK);
34+
try {
35+
$piGroup->newUserRequest($requestedUser);
36+
$this->assertFalse($piGroup->userExists($requestedUser));
37+
38+
$piGroup->denyUser($requestedUser);
39+
$this->assertEmpty($piGroup->getRequests());
40+
$this->assertEquals([$pi], $piGroup->getGroupMembers());
41+
$this->assertFalse($piGroup->userExists($requestedUser));
42+
} finally {
43+
$SQL->removeRequest(self::$requestUid, $piGroup->getPIUID());
44+
}
45+
}
46+
}

test/phpunit-bootstrap.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,11 @@ function getNormalUser()
8080
return ["[email protected]", "foo", "bar", "[email protected]"];
8181
}
8282

83+
function getNormalUser2()
84+
{
85+
return ["[email protected]", "foo", "bar", "[email protected]"];
86+
}
87+
8388
function getUserHasNotRequestedAccountDeletionHasGroup()
8489
{
8590
return ["[email protected]", "foo", "bar", "[email protected]"];
@@ -109,3 +114,8 @@ function getUserWithOneKey()
109114
{
110115
return ["[email protected]", "foo", "bar", "[email protected]"];
111116
}
117+
118+
function getUserIsPIHasNoMembersNoMemberRequests()
119+
{
120+
return ["[email protected]", "foo", "bar", "[email protected]"];
121+
}
Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,6 @@
1-
INSERT INTO `account_deletion_requests` (`id`, `timestamp`, `uid`) VALUES (1, '1970-01-01 00:00:01', 'user4_org1_test');
1+
INSERT INTO `account_deletion_requests` (`id`, `timestamp`, `uid`) VALUES
2+
(1, '1970-01-01 00:00:01', 'user4_org1_test');
3+
4+
-- INSERT INTO `requests` (`id`, `request_for`, `uid`, `timestamp`) VALUES
5+
-- (1, 'pi_user1_org1_test', 'user6_org1_test', '1970-01-01 00:00:01'),
6+
-- (2, 'pi_user1_org1_test', 'user7_org1_test', '1970-01-01 00:00:01');

0 commit comments

Comments
 (0)