AccountApi: Add method to set account name
Change-Id: Ice3756a71b877adc461ca6ec296e407051e5cd0e
diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/accounts/AccountIT.java b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/accounts/AccountIT.java
index 31c0ecf..e5b7cfc 100644
--- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/accounts/AccountIT.java
+++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/accounts/AccountIT.java
@@ -809,6 +809,33 @@
}
@Test
+ public void setName() throws Exception {
+ gApi.accounts().self().setName("Admin McAdminface");
+ assertThat(gApi.accounts().self().get().name).isEqualTo("Admin McAdminface");
+ }
+
+ @Test
+ public void adminCanSetNameOfOtherUser() throws Exception {
+ gApi.accounts().id(user.username).setName("User McUserface");
+ assertThat(gApi.accounts().id(user.username).get().name).isEqualTo("User McUserface");
+ }
+
+ @Test
+ public void userCannotSetNameOfOtherUser() throws Exception {
+ setApiUser(user);
+ exception.expect(AuthException.class);
+ gApi.accounts().id(admin.username).setName("Admin McAdminface");
+ }
+
+ @Test
+ @Sandboxed
+ public void userCanSetNameOfOtherUserWithModifyAccountPermission() throws Exception {
+ allowGlobalCapabilities(REGISTERED_USERS, GlobalCapability.MODIFY_ACCOUNT);
+ gApi.accounts().id(admin.username).setName("Admin McAdminface");
+ assertThat(gApi.accounts().id(admin.username).get().name).isEqualTo("Admin McAdminface");
+ }
+
+ @Test
@Sandboxed
public void fetchUserBranch() throws Exception {
setApiUser(user);
diff --git a/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/api/accounts/AccountApi.java b/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/api/accounts/AccountApi.java
index 912ad64..1526cc6 100644
--- a/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/api/accounts/AccountApi.java
+++ b/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/api/accounts/AccountApi.java
@@ -102,6 +102,8 @@
void deleteExternalIds(List<String> externalIds) throws RestApiException;
+ void setName(String name) throws RestApiException;
+
/**
* A default implementation which allows source compatibility when adding new methods to the
* interface.
@@ -279,5 +281,10 @@
public void deleteExternalIds(List<String> externalIds) throws RestApiException {
throw new NotImplementedException();
}
+
+ @Override
+ public void setName(String name) throws RestApiException {
+ throw new NotImplementedException();
+ }
}
}
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/api/accounts/AccountApiImpl.java b/gerrit-server/src/main/java/com/google/gerrit/server/api/accounts/AccountApiImpl.java
index f8539d9..3b09e79 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/api/accounts/AccountApiImpl.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/api/accounts/AccountApiImpl.java
@@ -63,6 +63,7 @@
import com.google.gerrit.server.account.PostWatchedProjects;
import com.google.gerrit.server.account.PutActive;
import com.google.gerrit.server.account.PutAgreement;
+import com.google.gerrit.server.account.PutName;
import com.google.gerrit.server.account.PutStatus;
import com.google.gerrit.server.account.SetDiffPreferences;
import com.google.gerrit.server.account.SetEditPreferences;
@@ -120,6 +121,7 @@
private final DeleteExternalIds deleteExternalIds;
private final PutStatus putStatus;
private final GetGroups getGroups;
+ private final PutName putName;
@Inject
AccountApiImpl(
@@ -158,6 +160,7 @@
DeleteExternalIds deleteExternalIds,
PutStatus putStatus,
GetGroups getGroups,
+ PutName putName,
@Assisted AccountResource account) {
this.account = account;
this.accountLoaderFactory = ailf;
@@ -195,6 +198,7 @@
this.deleteExternalIds = deleteExternalIds;
this.putStatus = putStatus;
this.getGroups = getGroups;
+ this.putName = putName;
}
@Override
@@ -513,4 +517,15 @@
throw asRestApiException("Cannot delete external IDs", e);
}
}
+
+ @Override
+ public void setName(String name) throws RestApiException {
+ PutName.Input input = new PutName.Input();
+ input.name = name;
+ try {
+ putName.apply(account, input);
+ } catch (Exception e) {
+ throw asRestApiException("Cannot set account name", e);
+ }
+ }
}