/**
  * @param User $user
  * @param ContactInterface $contact
  */
 protected function archiveEmail(User $user, ContactInterface $contact)
 {
     if ($contact->getMainEmail() !== $user->getEmail()) {
         if ($contact->getMainEmail()) {
             $hasEmail = false;
             /** @var Email $email */
             foreach ($contact->getEmails() as $email) {
                 if ($email->getEmail() === $contact->getMainEmail()) {
                     $hasEmail = true;
                 }
             }
             if (!$hasEmail) {
                 $email = new Email();
                 $email->setEmail($contact->getMainEmail());
                 /** @var EmailType $emailType */
                 $emailType = $this->entityManager->getRepository(EmailType::class)->find(1);
                 if ($emailType) {
                     $email->setEmailType($emailType);
                     $contact->addEmail($email);
                 }
             }
         }
         $contact->setMainEmail($user->getEmail());
     }
 }
 public function testSendEmailActionMultipleTimes()
 {
     $client = $this->createAuthenticatedClient();
     $client->enableProfiler();
     $client->request('GET', '/security/reset/email', ['user' => $this->user1->getUsername()]);
     $response = json_decode($client->getResponse()->getContent());
     // asserting response
     $this->assertEquals(200, $client->getResponse()->getStatusCode());
     $this->assertEquals($this->user1->getEmail(), $response->email);
     // second request should be blocked
     $client->request('GET', '/security/reset/email', ['user' => $this->user1->getUsername()]);
     $response = json_decode($client->getResponse()->getContent());
     $mailCollector = $client->getProfile()->getCollector('swiftmailer');
     // asserting response
     $this->assertEquals(400, $client->getResponse()->getStatusCode());
     $this->assertEquals(1003, $response->code);
     $this->assertEquals(0, $mailCollector->getMessageCount());
 }