feat: demotion of user accounts via crm
This commit is contained in:
@@ -213,6 +213,58 @@ class UserDataHandlerTest extends TestCase
|
||||
];
|
||||
}
|
||||
|
||||
public function testDisableForRevokedCrmRolesBlocksTheUserAndDropsThePendingMarkers(): void
|
||||
{
|
||||
$user = (new User())
|
||||
->setFirstName('First')
|
||||
->setLastName('Last')
|
||||
->setEmail('[email protected]')
|
||||
->setRoles(['ROLE_ADMIN', User::PENDING_ROLES['ROLE_MANAGER']])
|
||||
;
|
||||
|
||||
$this->entityManager
|
||||
->expects($this->once())
|
||||
->method('flush');
|
||||
|
||||
$handler = new UserDataHandler($this->entityManager, $this->logger);
|
||||
$handler->disableForRevokedCrmRoles($user);
|
||||
|
||||
$this->assertTrue($user->isDisabled());
|
||||
$this->assertNotNull($user->getDisabledAt());
|
||||
$this->assertSame('Für deinen Account liegt in BusPro keine Berechtigung mehr vor.', $user->getDisabledReason());
|
||||
$this->assertSame('Automatisch gesperrt: keine Rollen in BusPro.', $user->getDisabledReasonInternal());
|
||||
|
||||
// the granted role is kept so the user stays reviewable, the marker is not
|
||||
$this->assertSame(['ROLE_ADMIN'], $user->getAssignedRoles());
|
||||
$this->assertSame([], $user->getPendingRoles());
|
||||
}
|
||||
|
||||
public function testDisableForRevokedCrmRolesLeavesAnExistingBlockUntouched(): void
|
||||
{
|
||||
$disabledAt = new \DateTimeImmutable('2026-01-01 08:00:00');
|
||||
|
||||
$user = (new User())
|
||||
->setFirstName('First')
|
||||
->setLastName('Last')
|
||||
->setEmail('[email protected]')
|
||||
->setRoles(['ROLE_ADMIN'])
|
||||
->setDisabledAt($disabledAt)
|
||||
->setDisabledReason('Wegen Fehlverhaltens gesperrt.')
|
||||
->setDisabledReasonInternal('Siehe Vorgang 4711.')
|
||||
;
|
||||
|
||||
$this->entityManager
|
||||
->expects($this->never())
|
||||
->method('flush');
|
||||
|
||||
$handler = new UserDataHandler($this->entityManager, $this->logger);
|
||||
$handler->disableForRevokedCrmRoles($user);
|
||||
|
||||
$this->assertSame($disabledAt, $user->getDisabledAt());
|
||||
$this->assertSame('Wegen Fehlverhaltens gesperrt.', $user->getDisabledReason());
|
||||
$this->assertSame('Siehe Vorgang 4711.', $user->getDisabledReasonInternal());
|
||||
}
|
||||
|
||||
public function testFindLocalUserFallsBackToUniqueEmailAndRefreshesBusProIds(): void
|
||||
{
|
||||
$user = (new User())
|
||||
|
||||
Reference in New Issue
Block a user