function it_should_change_user_password(CredentialsRepository $credentialsRepository, EncoderFactoryInterface $encoderFactory, EventDispatcherInterface $eventDispatcher, PasswordEncoderInterface $passwordEncoder, User $user, Credentials $oldCredentials, Credentials $newCredentials, ChangePasswordAction $action) { // Mocks $action->getUser()->willReturn($user); $action->getOldPassword()->willReturn('old_p4ssw0rd'); $action->getNewPassword()->willReturn('new_p4ssw0rd'); $encoderFactory->getEncoder($user)->willReturn($passwordEncoder); $passwordEncoder->encodePassword('new_p4ssw0rd', Argument::type('string'))->shouldBeCalled()->willReturn('encoded_password=='); // Old credentials should be remove $credentialsRepository->findOneByUser($user)->willReturn($oldCredentials); $credentialsRepository->remove($oldCredentials)->shouldBeCalled(); // New encoded password should be saved $credentialsRepository->createNew($user, 'encoded_password==', Argument::type('string'))->shouldBeCalled()->willReturn($newCredentials); $credentialsRepository->save($newCredentials)->shouldBeCalled(); $this->execute($action); }
function it_execute_action(UserRepository $userRepository, CredentialsRepository $credentialsRepository, EncoderFactoryInterface $encoderFactory, EventDispatcherInterface $eventDispatcher, PasswordEncoderInterface $passwordEncoder, User $user, Credentials $credentials, RegisterUserAction $action) { // Mocks $action->getUsername()->willReturn('mattketmo'); $action->getDisplayName()->willReturn('Matthieu Moquet'); $action->getEmail()->willReturn('*****@*****.**'); $action->getPassword()->willReturn('super_passw0rd'); $action->getPreferredLocale()->willReturn('fr_FR'); $encoderFactory->getEncoder($user)->willReturn($passwordEncoder); $passwordEncoder->encodePassword('super_passw0rd', Argument::type('string'))->willReturn('encoded_password=='); $userRepository->createNew(Argument::exact(new Username('mattketmo')))->willReturn($user); $credentialsRepository->createNew($user, 'encoded_password==', Argument::type('string'))->shouldBeCalled()->willReturn($credentials); $user->setName(Argument::exact(new Name('Matthieu Moquet')))->shouldBeCalled()->willReturn($user); $user->setEmail(Argument::exact(new Email('*****@*****.**')))->shouldBeCalled()->willReturn($user); $user->setPreferredLocale(Argument::exact(Locale::parse('fr_FR')))->shouldBeCalled()->willReturn($user); $userRepository->save($user)->shouldBeCalled(); $credentialsRepository->save($credentials)->shouldBeCalled(); $this->execute($action)->shouldReturn($user); }