function it_cannot_send_token_when_email_was_not_valid(ConfirmationSubjectInterface $subject, TokenProviderInterface $tokenProvider) { $tokenProvider->generateUniqueToken()->shouldBeCalled()->willReturn('foobar'); $subject->setConfirmationType('email')->shouldBeCalled(); $subject->confirmationRequest('foobar')->shouldBeCalled(); $subject->getConfirmationChannel('customer.email')->shouldBeCalled()->willReturn('a_invalid_email'); $this->shouldThrow('DoS\\UserBundle\\Confirmation\\Exception\\NotFoundChannelException')->duringSend($subject); }
/** * {@inheritdoc} */ public function send(ConfirmationSubjectInterface $subject) { $subject->confirmationDisableAccess(); $subject->setConfirmationType($this->getType()); $subject->confirmationRequest($token = $this->tokenProvider->generateUniqueToken()); $this->sendToken($subject, $token); if (!$this->isValid) { return; } $this->manager->persist($subject); $this->manager->flush(); $this->storage->setData(self::STORE_KEY, $subject->getConfirmationToken()); }