Skip to content

Commit df4cf1a

Browse files
authored
cancel other requests when user requests account deletion (#375)
1 parent 8cecc8c commit df4cf1a

File tree

3 files changed

+41
-0
lines changed

3 files changed

+41
-0
lines changed

resources/lib/UnityUser.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -372,6 +372,7 @@ public function getPIGroupGIDs(): array
372372
*/
373373
public function requestAccountDeletion(): void
374374
{
375+
$this->SQL->deleteRequestsByUser($this->uid);
375376
$this->SQL->addAccountDeletionRequest($this->uid);
376377
$this->MAILER->sendMail("admin", "account_deletion_request_admin", [
377378
"user" => $this->uid,

test/functional/AccountDeletionRequestTest.php

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,4 +40,33 @@ public function testRequestAccountDeletionUserHasGroup()
4040
$this->assertNumberAccountDeletionRequests(0);
4141
}
4242
}
43+
44+
/* when you request account deletion, any other requests should be deleted */
45+
public function testRequestAccountDeletionUserHasRequest()
46+
{
47+
global $USER, $SQL;
48+
$pi_args = getUserIsPIHasNoMembersNoMemberRequests();
49+
switchUser(...$pi_args);
50+
$pi = $USER;
51+
$pi_group = $USER->getPIGroup();
52+
$this->assertEqualsCanonicalizing([$pi->uid], $pi_group->getGroupMemberUIDs());
53+
$user_args = getBlankUser();
54+
switchUser(...$user_args);
55+
$this->assertEmpty($USER->getPIGroupGIDs());
56+
$this->assertNumberAccountDeletionRequests(0);
57+
$this->assertNumberRequests(0);
58+
try {
59+
$pi_group->newUserRequest($USER);
60+
$this->assertNumberRequests(1);
61+
http_post(__DIR__ . "/../../webroot/panel/account.php", [
62+
"form_type" => "account_deletion_request",
63+
]);
64+
$this->assertNumberAccountDeletionRequests(1);
65+
$this->assertNumberRequests(0);
66+
} finally {
67+
$SQL->deleteAccountDeletionRequest($USER->uid);
68+
$this->assertNumberAccountDeletionRequests(0);
69+
ensureUserNotInPIGroup($pi_group);
70+
}
71+
}
4372
}

test/phpunit-bootstrap.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -425,4 +425,15 @@ public function assertNumberPiBecomeRequests(int $x)
425425
}
426426
$this->assertEquals($x, $this->getNumberPiBecomeRequests());
427427
}
428+
429+
public function getNumberRequests()
430+
{
431+
global $USER, $SQL;
432+
return count($SQL->getRequestsByUser($USER->uid));
433+
}
434+
435+
public function assertNumberRequests(int $x)
436+
{
437+
$this->assertEquals($x, $this->getNumberRequests());
438+
}
428439
}

0 commit comments

Comments
 (0)