@Test
  @Transactional
  public void testRegisterDuplicateEmail() throws Exception {
    // Good
    UserDTO u =
        new UserDTO(
            "john", // login
            "password", // password
            "John", // firstName
            "Doe", // lastName
            "*****@*****.**", // e-mail
            true, // activated
            "en", // langKey
            new HashSet<>(Arrays.asList(AuthoritiesConstants.USER)));

    // Duplicate e-mail, different login
    UserDTO dup =
        new UserDTO(
            "johnjr",
            u.getPassword(),
            u.getLogin(),
            u.getLastName(),
            u.getEmail(),
            true,
            u.getLangKey(),
            u.getAuthorities());

    // Good user
    restMvc
        .perform(
            post("/api/register")
                .contentType(TestUtil.APPLICATION_JSON_UTF8)
                .content(TestUtil.convertObjectToJsonBytes(u)))
        .andExpect(status().isCreated());

    // Duplicate e-mail
    restMvc
        .perform(
            post("/api/register")
                .contentType(TestUtil.APPLICATION_JSON_UTF8)
                .content(TestUtil.convertObjectToJsonBytes(dup)))
        .andExpect(status().is4xxClientError());

    Optional<User> userDup = userRepository.findOneByLogin("johnjr");
    assertThat(userDup.isPresent()).isFalse();
  }