Release 2.57 (#5929)

This commit is contained in:
Kevin Papst
2026-05-21 22:14:10 +02:00
committed by GitHub
parent f0ce1c7bd6
commit 976d38e8a4
101 changed files with 4226 additions and 1119 deletions

View File

@@ -807,6 +807,164 @@ class RolePermissionManagerTest extends TestCase
self::assertFalse($sut->checkTeamAccessTimesheet($timesheet, $requester));
}
public function testCheckUserAccessGrantsAccessForSameUserId(): void
{
$sut = $this->createSut();
$subject = self::userWithId(42);
$subject->setEnabled(false);
$subject->setSystemAccount(true);
$requester = self::userWithId(42);
self::assertTrue($sut->checkUserAccess($subject, $requester));
}
public function testCheckUserAccessGrantsAccessForSuperAdmin(): void
{
$sut = $this->createSut();
$subject = self::userWithId(1);
$subject->setEnabled(true);
$requester = self::userWithId(2);
$requester->setSuperAdmin(true);
self::assertTrue($sut->checkUserAccess($subject, $requester));
}
public function testCheckUserAccessGrantsAccessForCanSeeAllData(): void
{
$sut = $this->createSut();
$subject = self::userWithId(1);
$subject->setEnabled(true);
$requester = self::userWithId(2);
$requester->initCanSeeAllData(true);
self::assertTrue($sut->checkUserAccess($subject, $requester));
}
public function testCheckUserAccessDeniesDisabledSubject(): void
{
$sut = $this->createSut();
$subject = self::userWithId(1);
$subject->setEnabled(false);
$requester = self::userWithId(2);
$requester->setRoles([User::ROLE_TEAMLEAD]);
self::assertFalse($sut->checkUserAccess($subject, $requester));
}
public function testCheckUserAccessDeniesSystemAccountForNonSystemRequester(): void
{
$sut = $this->createSut();
$subject = self::userWithId(1);
$subject->setEnabled(true);
$subject->setSystemAccount(true);
$requester = self::userWithId(2);
$requester->setRoles([User::ROLE_TEAMLEAD]);
self::assertFalse($sut->checkUserAccess($subject, $requester));
}
public function testCheckUserAccessGrantsTeamleadOfUser(): void
{
$sut = $this->createSut();
$subject = self::userWithId(1);
$subject->setEnabled(true);
$requester = self::userWithId(2);
$team = new Team('Support');
$team->addUser($subject);
$team->addTeamlead($requester);
self::assertTrue($requester->isTeamleadOfUser($subject));
self::assertTrue($sut->checkUserAccess($subject, $requester));
}
public function testCheckUserAccessGrantsAdminFallbackForRegularUserWithoutTeam(): void
{
$sut = $this->createSut();
$subject = self::userWithId(1);
$subject->setEnabled(true);
$requester = self::userWithId(2);
$requester->setRoles([User::ROLE_ADMIN]);
self::assertTrue($subject->isRegularUserOnly());
self::assertSame([], $subject->getTeams());
self::assertTrue($sut->checkUserAccess($subject, $requester));
}
public function testCheckUserAccessGrantsTeamleadFallbackForRegularUserWithoutTeam(): void
{
$sut = $this->createSut();
$subject = self::userWithId(1);
$subject->setEnabled(true);
$requester = self::userWithId(2);
$requester->setRoles([User::ROLE_TEAMLEAD]);
self::assertTrue($subject->isRegularUserOnly());
self::assertSame([], $subject->getTeams());
self::assertTrue($sut->checkUserAccess($subject, $requester));
}
public function testCheckUserAccessDeniesFallbackForRegularUserWithTeam(): void
{
$sut = $this->createSut();
$subject = self::userWithId(1);
$subject->setEnabled(true);
(new Team('Support'))->addUser($subject);
$requester = self::userWithId(2);
$requester->setRoles([User::ROLE_ADMIN]);
self::assertTrue($subject->isRegularUserOnly());
self::assertNotSame([], $subject->getTeams());
self::assertFalse($sut->checkUserAccess($subject, $requester));
}
public function testCheckUserAccessDeniesFallbackForNonRegularUserWithoutTeam(): void
{
$sut = $this->createSut();
$subject = self::userWithId(1);
$subject->setEnabled(true);
$subject->addRole(User::ROLE_TEAMLEAD);
$requester = self::userWithId(2);
$requester->setRoles([User::ROLE_ADMIN]);
self::assertFalse($subject->isRegularUserOnly());
self::assertSame([], $subject->getTeams());
self::assertFalse($sut->checkUserAccess($subject, $requester));
}
public function testCheckUserAccessDeniesSystemRequesterWithoutMatchingAccessPath(): void
{
$sut = $this->createSut();
$subject = self::userWithId(1);
$subject->setEnabled(true);
$subject->setSystemAccount(true);
$requester = self::userWithId(2);
$requester->setSystemAccount(true);
self::assertFalse($sut->checkUserAccess($subject, $requester));
}
private static function userWithId(int $id): User
{
$user = new User();