From 62eb4ab273988863b01f65c1b2792ddd8d90bcb8 Mon Sep 17 00:00:00 2001 From: Kamil Kokot Date: Fri, 11 Jan 2019 15:34:53 +0100 Subject: [PATCH] Mock what you own in encoder listener spec --- .../UpdateUserEncoderListenerSpec.php | 90 +++++++++---------- .../UserBundle/spec/Fixture/FixtureUser.php | 2 +- 2 files changed, 46 insertions(+), 46 deletions(-) diff --git a/src/Sylius/Bundle/UserBundle/spec/EventListener/UpdateUserEncoderListenerSpec.php b/src/Sylius/Bundle/UserBundle/spec/EventListener/UpdateUserEncoderListenerSpec.php index cf08bd8a9c2..77ddf540cc7 100644 --- a/src/Sylius/Bundle/UserBundle/spec/EventListener/UpdateUserEncoderListenerSpec.php +++ b/src/Sylius/Bundle/UserBundle/spec/EventListener/UpdateUserEncoderListenerSpec.php @@ -6,6 +6,7 @@ use Doctrine\Common\Persistence\ObjectManager; use PhpSpec\ObjectBehavior; +use Prophecy\Argument; use Sylius\Bundle\UserBundle\spec\Fixture\FixtureUser; use Sylius\Bundle\UserBundle\spec\Fixture\FixtureUserInterface; use Sylius\Component\User\Model\User; @@ -40,12 +41,11 @@ function it_does_nothing_if_user_does_not_implement_user_interface( function it_does_nothing_if_user_does_not_implement_specified_class_or_interface( ObjectManager $objectManager, InteractiveLoginEvent $event, - TokenInterface $token + TokenInterface $token, + User $user ): void { $event->getAuthenticationToken()->willReturn($token); - $user = new User(); - $token->getUser()->willReturn($user); $objectManager->persist($user)->shouldNotBeCalled(); @@ -57,52 +57,53 @@ function it_does_nothing_if_user_does_not_implement_specified_class_or_interface function it_does_nothing_if_user_uses_the_recommended_encoder( ObjectManager $objectManager, InteractiveLoginEvent $event, - TokenInterface $token + TokenInterface $token, + FixtureUser $user ): void { $event->getAuthenticationToken()->willReturn($token); - $user = new FixtureUser(); - $user->setEncoderName('newalgo'); - $token->getUser()->willReturn($user); + $user->getEncoderName()->willReturn('newalgo'); + + $user->setEncoderName(Argument::any())->shouldNotBeCalled(); + $user->setPlainPassword(Argument::any())->shouldNotBeCalled(); + $objectManager->persist($user)->shouldNotBeCalled(); $objectManager->flush()->shouldNotBeCalled(); $this->onSecurityInteractiveLogin($event); - - assert($user->getEncoderName() === 'newalgo'); - assert($user->getPlainPassword() === null); } function it_does_nothing_if_plain_password_could_not_be_resolved( ObjectManager $objectManager, InteractiveLoginEvent $event, - TokenInterface $token + TokenInterface $token, + FixtureUser $user ): void { $request = new Request(); $event->getAuthenticationToken()->willReturn($token); $event->getRequest()->willReturn($request); - $user = new FixtureUser(); - $user->setEncoderName('oldalgo'); - $token->getUser()->willReturn($user); + $user->getEncoderName()->willReturn('oldalgo'); + + $user->setEncoderName(Argument::any())->shouldNotBeCalled(); + $user->setPlainPassword(Argument::any())->shouldNotBeCalled(); + $objectManager->persist($user)->shouldNotBeCalled(); $objectManager->flush()->shouldNotBeCalled(); $this->onSecurityInteractiveLogin($event); - - assert($user->getEncoderName() === 'oldalgo'); - assert($user->getPlainPassword() === null); } function it_does_nothing_if_resolved_plain_password_is_null( ObjectManager $objectManager, InteractiveLoginEvent $event, - TokenInterface $token + TokenInterface $token, + FixtureUser $user ): void { $request = new Request(); $request->request->set('_password', null); @@ -110,24 +111,24 @@ function it_does_nothing_if_resolved_plain_password_is_null( $event->getAuthenticationToken()->willReturn($token); $event->getRequest()->willReturn($request); - $user = new FixtureUser(); - $user->setEncoderName('oldalgo'); - $token->getUser()->willReturn($user); + $user->getEncoderName()->willReturn('oldalgo'); + + $user->setEncoderName(Argument::any())->shouldNotBeCalled(); + $user->setPlainPassword(Argument::any())->shouldNotBeCalled(); + $objectManager->persist($user)->shouldNotBeCalled(); $objectManager->flush()->shouldNotBeCalled(); $this->onSecurityInteractiveLogin($event); - - assert($user->getEncoderName() === 'oldalgo'); - assert($user->getPlainPassword() === null); } function it_does_nothing_if_resolved_plain_password_is_empty( ObjectManager $objectManager, InteractiveLoginEvent $event, - TokenInterface $token + TokenInterface $token, + FixtureUser $user ): void { $request = new Request(); $request->request->set('_password', ''); @@ -135,24 +136,24 @@ function it_does_nothing_if_resolved_plain_password_is_empty( $event->getAuthenticationToken()->willReturn($token); $event->getRequest()->willReturn($request); - $user = new FixtureUser(); - $user->setEncoderName('oldalgo'); - $token->getUser()->willReturn($user); + $user->getEncoderName()->willReturn('oldalgo'); + + $user->setEncoderName(Argument::any())->shouldNotBeCalled(); + $user->setPlainPassword(Argument::any())->shouldNotBeCalled(); + $objectManager->persist($user)->shouldNotBeCalled(); $objectManager->flush()->shouldNotBeCalled(); $this->onSecurityInteractiveLogin($event); - - assert($user->getEncoderName() === 'oldalgo'); - assert($user->getPlainPassword() === null); } function it_updates_the_encoder_and_plain_password_if_using_old_encoder_and_plain_password_could_be_resolved( ObjectManager $objectManager, InteractiveLoginEvent $event, - TokenInterface $token + TokenInterface $token, + FixtureUser $user ): void { $request = new Request(); $request->request->set('_password', 'plainpassword'); @@ -160,24 +161,24 @@ function it_updates_the_encoder_and_plain_password_if_using_old_encoder_and_plai $event->getAuthenticationToken()->willReturn($token); $event->getRequest()->willReturn($request); - $user = new FixtureUser(); - $user->setEncoderName('oldalgo'); - $token->getUser()->willReturn($user); + $user->getEncoderName()->willReturn('oldalgo'); + + $user->setEncoderName('newalgo')->shouldBeCalled(); + $user->setPlainPassword('plainpassword')->shouldBeCalled(); + $objectManager->persist($user)->shouldBeCalled(); $objectManager->flush()->shouldBeCalled(); $this->onSecurityInteractiveLogin($event); - - assert($user->getEncoderName() === 'newalgo'); - assert($user->getPlainPassword() === 'plainpassword'); } function it_updates_the_encoder_and_plain_password_if_using_default_null_encoder_and_plain_password_could_be_resolved( ObjectManager $objectManager, InteractiveLoginEvent $event, - TokenInterface $token + TokenInterface $token, + FixtureUser $user ): void { $request = new Request(); $request->request->set('_password', 'plainpassword'); @@ -185,17 +186,16 @@ function it_updates_the_encoder_and_plain_password_if_using_default_null_encoder $event->getAuthenticationToken()->willReturn($token); $event->getRequest()->willReturn($request); - $user = new FixtureUser(); - $user->setEncoderName(null); - $token->getUser()->willReturn($user); + $user->getEncoderName()->willReturn(null); + + $user->setEncoderName('newalgo')->shouldBeCalled(); + $user->setPlainPassword('plainpassword')->shouldBeCalled(); + $objectManager->persist($user)->shouldBeCalled(); $objectManager->flush()->shouldBeCalled(); $this->onSecurityInteractiveLogin($event); - - assert($user->getEncoderName() === 'newalgo'); - assert($user->getPlainPassword() === 'plainpassword'); } } diff --git a/src/Sylius/Bundle/UserBundle/spec/Fixture/FixtureUser.php b/src/Sylius/Bundle/UserBundle/spec/Fixture/FixtureUser.php index 1cf08fde199..0e16ea79a15 100644 --- a/src/Sylius/Bundle/UserBundle/spec/Fixture/FixtureUser.php +++ b/src/Sylius/Bundle/UserBundle/spec/Fixture/FixtureUser.php @@ -15,6 +15,6 @@ use Sylius\Component\User\Model\User; -final class FixtureUser extends User implements FixtureUserInterface +class FixtureUser extends User implements FixtureUserInterface { }