summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Pursehouse <dpursehouse@collab.net>2018-12-14 11:40:26 +0900
committerDavid Pursehouse <dpursehouse@collab.net>2018-12-14 21:05:48 +0900
commit2c2bd89cb66f36e9661e0e1a576fdb511a897dec (patch)
tree2b545756f7cd24ec6072f6dd516ec9fdcc9cceb1
parent11cfda8dff467c01ccc6ed1b77f1b9edfba08924 (diff)
AccountApi: Add method to set account name
-rw-r--r--gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/accounts/AccountIT.java27
-rw-r--r--gerrit-extension-api/src/main/java/com/google/gerrit/extensions/api/accounts/AccountApi.java7
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/api/accounts/AccountApiImpl.java15
3 files changed, 49 insertions, 0 deletions
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 31c0ecfbe8..e5b7cfc44f 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 @@ public class AccountIT extends AbstractDaemonTest {
}
@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 912ad648a6..1526cc6e8c 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 @@ public interface AccountApi {
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 interface AccountApi {
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 f8539d9d6a..3b09e79d8d 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.Index;
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 @@ public class AccountApiImpl implements AccountApi {
private final DeleteExternalIds deleteExternalIds;
private final PutStatus putStatus;
private final GetGroups getGroups;
+ private final PutName putName;
@Inject
AccountApiImpl(
@@ -158,6 +160,7 @@ public class AccountApiImpl implements AccountApi {
DeleteExternalIds deleteExternalIds,
PutStatus putStatus,
GetGroups getGroups,
+ PutName putName,
@Assisted AccountResource account) {
this.account = account;
this.accountLoaderFactory = ailf;
@@ -195,6 +198,7 @@ public class AccountApiImpl implements AccountApi {
this.deleteExternalIds = deleteExternalIds;
this.putStatus = putStatus;
this.getGroups = getGroups;
+ this.putName = putName;
}
@Override
@@ -513,4 +517,15 @@ public class AccountApiImpl implements AccountApi {
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);
+ }
+ }
}