diff --git a/src/main/java/edu/harvard/iq/dataverse/api/BuiltinUsers.java b/src/main/java/edu/harvard/iq/dataverse/api/BuiltinUsers.java index 3e85c8e4c37..1460e11f6be 100644 --- a/src/main/java/edu/harvard/iq/dataverse/api/BuiltinUsers.java +++ b/src/main/java/edu/harvard/iq/dataverse/api/BuiltinUsers.java @@ -8,6 +8,7 @@ import edu.harvard.iq.dataverse.authorization.providers.builtin.PasswordEncryption; import edu.harvard.iq.dataverse.authorization.users.ApiToken; import edu.harvard.iq.dataverse.authorization.users.AuthenticatedUser; +import edu.harvard.iq.dataverse.util.json.JsonPrinter; import java.sql.Timestamp; import java.util.Calendar; import java.util.logging.Level; @@ -24,6 +25,7 @@ import javax.ws.rs.core.Response; import javax.ws.rs.core.Response.Status; import static edu.harvard.iq.dataverse.util.json.JsonPrinter.json; +import static edu.harvard.iq.dataverse.util.json.JsonPrinter.jsonForAuthUser; /** * REST API bean for managing {@link BuiltinUser}s. @@ -134,6 +136,7 @@ private Response internalSave(BuiltinUser user, String password, String key) { JsonObjectBuilder resp = Json.createObjectBuilder(); resp.add("user", json(user)); + resp.add("authenticatedUser", jsonForAuthUser(au)); resp.add("apiToken", token.getTokenString()); alr.setInfo("builtinUser:" + user.getUserName() + " authenticatedUser:" + au.getIdentifier() ); diff --git a/src/test/java/edu/harvard/iq/dataverse/api/AdminIT.java b/src/test/java/edu/harvard/iq/dataverse/api/AdminIT.java index e810e023fb7..fa47ef9c0ef 100644 --- a/src/test/java/edu/harvard/iq/dataverse/api/AdminIT.java +++ b/src/test/java/edu/harvard/iq/dataverse/api/AdminIT.java @@ -36,7 +36,7 @@ public static void setUp() { Response createUserToConvert = UtilIT.createRandomUser(); createUserToConvert.prettyPrint(); - idOfUserToConvert = createUserToConvert.body().jsonPath().getLong("data.user.id"); + idOfUserToConvert = createUserToConvert.body().jsonPath().getLong("data.authenticatedUser.id"); emailOfUserToConvert = createUserToConvert.body().jsonPath().getString("data.user.email"); usernameOfUserToConvert = UtilIT.getUsernameFromResponse(createUserToConvert); @@ -97,12 +97,6 @@ public void testConvertShibUserToBuiltin() throws Exception { Response infoOfUserToConvert = UtilIT.getAuthenticatedUser(usernameOfUserToConvert, superuserApiToken); infoOfUserToConvert.prettyPrint(); - /** - * https://github.com/IQSS/dataverse/issues/2418 is cropping up again in - * that if we try to reuse this ID below it's the wrong ID (off by one). - * Weird and troubling. - */ - idOfUserToConvert = infoOfUserToConvert.body().jsonPath().getLong("data.id"); String invalidEmailAddress = "invalidEmailAddress"; Response invalidEmailFail = UtilIT.migrateShibToBuiltin(idOfUserToConvert, invalidEmailAddress, superuserApiToken); diff --git a/src/test/java/edu/harvard/iq/dataverse/api/BuiltinUsersIT.java b/src/test/java/edu/harvard/iq/dataverse/api/BuiltinUsersIT.java index b0a65a7da26..ac294d7bfd6 100644 --- a/src/test/java/edu/harvard/iq/dataverse/api/BuiltinUsersIT.java +++ b/src/test/java/edu/harvard/iq/dataverse/api/BuiltinUsersIT.java @@ -28,7 +28,8 @@ public void testUserId() { assertEquals(200, createUserResponse.getStatusCode()); JsonPath createdUser = JsonPath.from(createUserResponse.body().asString()); - int userIdFromJsonCreateResponse = createdUser.getInt("data.user." + idKey); + int builtInUserIdFromJsonCreateResponse = createdUser.getInt("data.user." + idKey); + int authenticatedUserIdFromJsonCreateResponse = createdUser.getInt("data.authenticatedUser." + idKey); String username = createdUser.getString("data.user." + usernameKey); Response getUserResponse = getUserFromDatabase(username); @@ -43,14 +44,9 @@ public void testUserId() { deleteUserResponse.prettyPrint(); System.out.println(userIdFromDatabase + " was the id from the database"); - System.out.println(userIdFromJsonCreateResponse + " was the id from JSON response on create"); - /** - * This test is expected to pass on a clean, fresh database but for an - * unknown reason it fails when you load it up with a production - * database from dataverse.harvard.edu. Why? This is what - * https://github.com/IQSS/dataverse/issues/2418 is about. - */ - assertEquals(userIdFromDatabase, userIdFromJsonCreateResponse); + System.out.println(builtInUserIdFromJsonCreateResponse + " was the id of the BuiltinUser from JSON response on create"); + System.out.println(authenticatedUserIdFromJsonCreateResponse + " was the id of the AuthenticatedUser from JSON response on create"); + assertEquals(userIdFromDatabase, authenticatedUserIdFromJsonCreateResponse); } @Test