@Test
  public void creerAppelNotification() throws UtilisateurInvalideException {
    /** Etant donné un utilsateur à créer. */
    Utilisateur utilisateur = Utilisateur.builder().login(RandomStringUtils.random(10)).build();

    /** Lorsqu'on appelle le service de création. */
    services.creer(utilisateur);

    /** Alors le service de notification est appelé. */
    Mockito.verify(notificationsServices).notifier(Mockito.anyString());
  }
  @Test
  public void creerAppelValidationUtilisateur() throws UtilisateurInvalideException {
    /** Etant donné un utilsateur à créer. */
    Utilisateur utilisateur = new Utilisateur();

    /** Lorsqu'on appelle le service de création. */
    services.creer(utilisateur);

    /** Alors le service de validation est appelé. */
    Mockito.verify(validationServices).validerUtilisateur(utilisateur);
  }
  @Test
  public void creerVerificationExistanceUtilisateur() throws UtilisateurInvalideException {
    /** Etant donné un utilsateur à créer. */
    Utilisateur utilisateur = Utilisateur.builder().login(RandomStringUtils.random(10)).build();
    /* Et que l'utilisateur existe sur le système */
    UtilisateursServices spy = Mockito.spy(services);
    Mockito.when(spy.rechercherParLogin(utilisateur.getLogin())).thenReturn(utilisateur);

    try {
      /** Lorsqu'on appelle le service de création. */
      spy.creer(utilisateur);

      fail("Une exception devrait être levée.");
    } catch (UtilisateurInvalideException e) {
      /** Alors le service de vérification de l'existance de l'utilsiateur est appelé. */
      Mockito.verify(spy).rechercherParLogin(utilisateur.getLogin());

      /* Et une exception est levée. */
      Assert.assertEquals(
          UtilisateurInvalideException.ErreurUtilisateur.UTILISATEUR_EXISTANT, e.getErreur());
    }
  }
  @Test
  public void creerUtilisateurNul() {
    try {
      /** When: Lorsqu'on appel le service de création */
      services.creer(null);

      fail("Une exception devrait être levée.");
    } catch (UtilisateurInvalideException e) {
      /** Then: Alors une exception est levée. */
      Assert.assertEquals(
          UtilisateurInvalideException.ErreurUtilisateur.UTILISATEUR_OBLIGATOIRE, e.getErreur());
    }
  }
  @Test
  public void creerAppelValidationUtilisateurEnErreur() throws UtilisateurInvalideException {
    /** Etant donné un utilsateur à créer. */
    Utilisateur utilisateur = new Utilisateur();
    /* Et un utilisateur invalide */
    Mockito.when(validationServices.validerUtilisateur(utilisateur))
        .thenThrow(new UtilisateurInvalideException(ErreurUtilisateur.MDP_OBLIGATOIRE));

    try {
      /** Lorsqu'on appelle le service de création. */
      services.creer(utilisateur);

      fail("Une exception est attendue.");
    } catch (UtilisateurInvalideException e) {
      /** Alors le service de validation est appelé et l'exception est propagée. */
      Mockito.verify(validationServices).validerUtilisateur(utilisateur);

      Assert.assertEquals(ErreurUtilisateur.MDP_OBLIGATOIRE, e.getErreur());
    }
  }