diff --git a/src/main/java/edu/harvard/iq/dataverse/api/Admin.java b/src/main/java/edu/harvard/iq/dataverse/api/Admin.java index dfa3f64ad6f..50f3b439645 100644 --- a/src/main/java/edu/harvard/iq/dataverse/api/Admin.java +++ b/src/main/java/edu/harvard/iq/dataverse/api/Admin.java @@ -35,6 +35,8 @@ import static edu.harvard.iq.dataverse.util.json.NullSafeJsonBuilder.jsonObjectBuilder; import static edu.harvard.iq.dataverse.util.json.JsonPrinter.*; +import java.sql.Timestamp; +import java.util.Date; import java.util.Map; import java.util.logging.Level; import java.util.logging.Logger; @@ -523,10 +525,12 @@ public Response validate() { return okResponse(msg); } + //should the path for this method refer instead to the auth user ID? @Path("confirmEmail/{token}") @GET public Response getConfirmEmailToken(@PathParam("token") String token) { - + ConfirmEmailExecResponse confirmEmailExecResponse = confirmEmailSvc.processToken(token); + ConfirmEmailData confirmEmailData = confirmEmailExecResponse.getConfirmEmailData(); return null; } @@ -541,7 +545,10 @@ public Response confirmTheEmail(@PathParam("token") String token) { if (confirmEmailData == null) { return errorResponse(Status.NOT_FOUND, "Invalid token: " + token); } + long nowInMilliseconds = new Date().getTime(); + Timestamp emailConfirmed = new Timestamp(nowInMilliseconds); AuthenticatedUser authenticatedUser = confirmEmailData.getAuthenticatedUser(); + authenticatedUser.setEmailConfirmed(emailConfirmed); return okResponse(jsonForAuthUser(authenticatedUser)); // return okResponse("found user " +authenticatedUser.getId()); } diff --git a/src/test/java/edu/harvard/iq/dataverse/api/ConfirmEmailIT.java b/src/test/java/edu/harvard/iq/dataverse/api/ConfirmEmailIT.java index d4d1e9fe5ae..f38e3eb38e3 100644 --- a/src/test/java/edu/harvard/iq/dataverse/api/ConfirmEmailIT.java +++ b/src/test/java/edu/harvard/iq/dataverse/api/ConfirmEmailIT.java @@ -42,9 +42,7 @@ public static void setUp() { @Test public void testConfirm() { // Can't seem to get timestamp to appear in authenticated user Json output - /** - * - */ + String email = null; Response createUserToConfirm = createUser(getRandomUsername(), "firstName", "lastName", email); @@ -54,7 +52,7 @@ public void testConfirm() { createUserToConfirm.then().assertThat() .statusCode(200); - //redundant? + //redundant? long userIdToConfirm = JsonPath.from(createUserToConfirm.body().asString()).getLong("data.authenticatedUser.id"); String userToConfirmApiToken = JsonPath.from(createUserToConfirm.body().asString()).getString("data.apiToken"); String usernameToConfirm = JsonPath.from(createUserToConfirm.body().asString()).getString("data.user.userName"); @@ -68,13 +66,16 @@ public void testConfirm() { * (primary key). This can answer questions the superuser may have, such * as, "Did the user's token expire?" */ -// Response getConfirmEmailData = given() -// .get("/api/admin/confirmEmail/" + 42); + + Response getConfirmEmailData = given() + .get("/api/admin/confirmEmail/" + 42); Response noSuchToken = given() .post("/api/admin/confirmEmail/" + token); noSuchToken.prettyPrint(); - // todo assert "Invalid token: noSuchToken" and 404 + noSuchToken.then().assertThat() + .statusCode(404); + // [X] todo assert "Invalid token: noSuchToken" and 404 /** * * User will call a second method within admin API to POST token to new