Skip to content

Commit

Permalink
Mock what you own in encoder listener spec
Browse files Browse the repository at this point in the history
  • Loading branch information
pamil committed Jan 11, 2019
1 parent d02581b commit 62eb4ab
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 46 deletions.
Expand Up @@ -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;
Expand Down Expand Up @@ -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();
Expand All @@ -57,145 +57,145 @@ 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);

$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', '');

$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');

$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');

$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');
}
}
2 changes: 1 addition & 1 deletion src/Sylius/Bundle/UserBundle/spec/Fixture/FixtureUser.php
Expand Up @@ -15,6 +15,6 @@

use Sylius\Component\User\Model\User;

final class FixtureUser extends User implements FixtureUserInterface
class FixtureUser extends User implements FixtureUserInterface
{
}

0 comments on commit 62eb4ab

Please sign in to comment.