Confirm email: Return proper error when email is used by other account

So far trying to confirm an email address that is already in use by
another account was failing with 500 Internal Server Error.

Change-Id: I97830491cc198f582fa4192de1276a4af7d12ce2
Signed-off-by: Edwin Kempin <ekempin@google.com>
This commit is contained in:
Edwin Kempin
2016-08-09 15:01:32 +02:00
parent cd4b6ca2d2
commit f90f3b011c
2 changed files with 11 additions and 0 deletions

View File

@@ -62,4 +62,13 @@ public class ConfirmEmailIT extends AbstractDaemonTest {
.put("/config/server/email.confirm", in)
.assertUnprocessableEntity();
}
@Test
public void confirmAlreadyInUse_UnprocessableEntity() throws Exception {
ConfirmEmail.Input in = new ConfirmEmail.Input();
in.token = emailTokenVerifier.encode(admin.getId(), user.email);
adminRestSession
.put("/config/server/email.confirm", in)
.assertUnprocessableEntity();
}
}

View File

@@ -78,6 +78,8 @@ public class ConfirmEmail implements RestModifyView<ConfigResource, Input> {
throw new UnprocessableEntityException("invalid token");
} catch (EmailTokenVerifier.InvalidTokenException e) {
throw new UnprocessableEntityException("invalid token");
} catch (AccountException e) {
throw new UnprocessableEntityException(e.getMessage());
}
}
}