@Before
  public void before() throws Exception {
    smtpPort = (new Random().nextInt(9999 - 1000) + 1000);
    //        smtpPort = 25;

    // create new user so conflicts don't occur with other tests
    User user = new User("token-test");
    user.setPassword("foobar");
    user.setFirstName("Token");
    user.setLastName("Test");
    user.setEmail("*****@*****.**");
    userManager.saveUser(user);
  }
  @Test
  public void testConsumeRecoveryToken() throws Exception {
    final User user = userManager.getUserByUsername("token-test");
    final Integer version = user.getVersion();

    final String token = passwordTokenManager.generateRecoveryToken(user);
    assertNotNull(token);
    assertTrue(passwordTokenManager.isRecoveryTokenValid(user, token));

    // start SMTP Server
    Wiser wiser = startWiser(smtpPort);

    User updated = userManager.updatePassword(user.getUsername(), null, token, "user", "");

    wiser.stop();
    assertTrue(wiser.getMessages().size() == 1);

    assertTrue(updated.getVersion() > version);
    assertFalse(passwordTokenManager.isRecoveryTokenValid(updated, token));
  }