Skip to content

Commit

Permalink
OXDEV-8407 Add test for multiple users password change
Browse files Browse the repository at this point in the history
  • Loading branch information
TitaKoleva committed Oct 9, 2024
1 parent de11a31 commit 4f762bc
Showing 1 changed file with 41 additions and 10 deletions.
51 changes: 41 additions & 10 deletions tests/Unit/Event/Subscriber/PasswordChangeSubscriberTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -54,10 +54,6 @@ public function testSubscriberWithUserModelPwdChange(): void
$userModelService = $this->createPartialMock(UserModelService::class, ['isPasswordChanged']);
$userModelService->method('isPasswordChanged')->with($userId = uniqid())->willReturn(true);

$userModelStub = $this->createStub(User::class);
$userModelStub->method('getId')
->willReturn($userId);

$refreshTokenRepository = $this->createMock(RefreshTokenRepositoryInterface::class);
$refreshTokenRepository->expects($this->once())
->method('invalidateUserTokens');
Expand All @@ -66,6 +62,7 @@ public function testSubscriberWithUserModelPwdChange(): void
$tokenInfrastructure->expects($this->once())
->method('invalidateUserTokens');

$userModelStub = $this->getUserModel($userId);
$beforeUpdateStub = $this->getBeforeUpdateEvent($userModelStub);
$afterUpdateStub = $this->getAfterUpdateEvent($userModelStub);

Expand All @@ -74,6 +71,34 @@ public function testSubscriberWithUserModelPwdChange(): void
$sut->handleAfterUpdate($afterUpdateStub);
}

public function testSubscriberWithMultipleUserModelsPwdChange(): void
{
$userModelService = $this->createPartialMock(UserModelService::class, ['isPasswordChanged']);
$userModelService->method('isPasswordChanged')->willReturn(true);

$userModel1 = $this->getUserModel(uniqid());
$userModel2 = $this->getUserModel(uniqid());

$refreshTokenRepository = $this->createMock(RefreshTokenRepositoryInterface::class);
$refreshTokenRepository->expects($this->exactly(2))
->method('invalidateUserTokens');

$tokenInfrastructure = $this->createMock(Token::class);
$tokenInfrastructure->expects($this->exactly(2))
->method('invalidateUserTokens');

$beforeUpdateStub1 = $this->getBeforeUpdateEvent($userModel1);
$beforeUpdateStub2 = $this->getBeforeUpdateEvent($userModel2);
$afterUpdateStub1 = $this->getAfterUpdateEvent($userModel1);
$afterUpdateStub2 = $this->getAfterUpdateEvent($userModel2);

$sut = $this->getSut($userModelService, $refreshTokenRepository, $tokenInfrastructure);
$sut->handleBeforeUpdate($beforeUpdateStub1);
$sut->handleBeforeUpdate($beforeUpdateStub2);
$sut->handleAfterUpdate($afterUpdateStub1);
$sut->handleAfterUpdate($afterUpdateStub2);
}

public function testSubscriberWithNoUserModel(): void
{
$userModelService = $this->createPartialMock(UserModelService::class, ['isPasswordChanged']);
Expand Down Expand Up @@ -101,10 +126,6 @@ public function testSubscriberWithUserModelNoPwdChanged(): void
$userModelService = $this->createPartialMock(UserModelService::class, ['isPasswordChanged']);
$userModelService->method('isPasswordChanged')->with($userId = uniqid())->willReturn(false);

$userModelStub = $this->createStub(User::class);
$userModelStub->method('getId')
->willReturn($userId);

$refreshTokenRepository = $this->createMock(RefreshTokenRepositoryInterface::class);
$refreshTokenRepository->expects($this->never())
->method('invalidateUserTokens');
Expand All @@ -113,6 +134,7 @@ public function testSubscriberWithUserModelNoPwdChanged(): void
$tokenInfrastructure->expects($this->never())
->method('invalidateUserTokens');

$userModelStub = $this->getUserModel($userId);
$beforeUpdateStub = $this->getBeforeUpdateEvent($userModelStub);
$afterUpdateStub = $this->getAfterUpdateEvent($userModelStub);

Expand All @@ -121,7 +143,7 @@ public function testSubscriberWithUserModelNoPwdChanged(): void
$sut->handleAfterUpdate($afterUpdateStub);
}

protected function getBeforeUpdateEvent(BaseModel $model)
protected function getBeforeUpdateEvent(BaseModel $model): BeforeModelUpdateEvent
{
$beforeUpdateStub = $this->createStub(BeforeModelUpdateEvent::class);
$beforeUpdateStub->method('getModel')
Expand All @@ -130,7 +152,7 @@ protected function getBeforeUpdateEvent(BaseModel $model)
return $beforeUpdateStub;
}

protected function getAfterUpdateEvent(BaseModel $model)
protected function getAfterUpdateEvent(BaseModel $model): AfterModelUpdateEvent
{
$afterUpdateStub = $this->createStub(AfterModelUpdateEvent::class);
$afterUpdateStub->method('getModel')
Expand All @@ -139,6 +161,15 @@ protected function getAfterUpdateEvent(BaseModel $model)
return $afterUpdateStub;
}

protected function getUserModel(string $userId): User
{
$userModelStub = $this->createStub(User::class);
$userModelStub->method('getId')
->willReturn($userId);

return $userModelStub;
}

protected function getSut(
UserModelService $userModelService = null,
RefreshTokenRepositoryInterface $refreshTokenRepository = null,
Expand Down

0 comments on commit 4f762bc

Please sign in to comment.