diff options
author | David Pursehouse <dpursehouse@collab.net> | 2018-12-14 11:40:26 +0900 |
---|---|---|
committer | David Pursehouse <dpursehouse@collab.net> | 2018-12-14 21:05:48 +0900 |
commit | 2c2bd89cb66f36e9661e0e1a576fdb511a897dec (patch) | |
tree | 2b545756f7cd24ec6072f6dd516ec9fdcc9cceb1 | |
parent | 11cfda8dff467c01ccc6ed1b77f1b9edfba08924 (diff) |
AccountApi: Add method to set account name
Change-Id: Ice3756a71b877adc461ca6ec296e407051e5cd0e
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); + } + } } |