DeleteActive: Return 409 Conflict when account is already inactive Instead of returning 404 Not Found, return 409 Conflict. Change-Id: I0f27ce3c6ec86549e67b5359401279029b2f9887
diff --git a/Documentation/rest-api-accounts.txt b/Documentation/rest-api-accounts.txt index 2b44855..22545e3 100644 --- a/Documentation/rest-api-accounts.txt +++ b/Documentation/rest-api-accounts.txt
@@ -396,7 +396,7 @@ HTTP/1.1 204 No Content ---- -If the account was already inactive the response is "`404 Not Found`". +If the account was already inactive the response is "`409 Conflict`". [[get-http-password]] === Get HTTP Password
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 214a3ea..ec77484 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
@@ -29,6 +29,7 @@ import static com.google.gerrit.server.group.SystemGroupBackend.ANONYMOUS_USERS; import static com.google.gerrit.server.group.SystemGroupBackend.REGISTERED_USERS; import static java.nio.charset.StandardCharsets.UTF_8; +import static org.junit.Assert.fail; import com.google.common.base.Function; import com.google.common.collect.FluentIterable; @@ -215,6 +216,20 @@ } @Test + public void deactivateNotActive() throws Exception { + assertThat(gApi.accounts().id("user").getActive()).isTrue(); + gApi.accounts().id("user").setActive(false); + assertThat(gApi.accounts().id("user").getActive()).isFalse(); + try { + gApi.accounts().id("user").setActive(false); + fail("Expected exception"); + } catch (ResourceConflictException e) { + assertThat(e.getMessage()).isEqualTo("account not active"); + } + gApi.accounts().id("user").setActive(true); + } + + @Test public void starUnstarChange() throws Exception { PushOneCommit.Result r = createChange(); String triplet = project.get() + "~master~" + r.getChangeId();
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/account/DeleteActive.java b/gerrit-server/src/main/java/com/google/gerrit/server/account/DeleteActive.java index df93ea6..94c099e 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/account/DeleteActive.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/account/DeleteActive.java
@@ -59,7 +59,7 @@ throw new ResourceNotFoundException("account not found"); } if (!a.isActive()) { - throw new ResourceNotFoundException(); + throw new ResourceConflictException("account not active"); } if (self.get() == rsrc.getUser()) { throw new ResourceConflictException("cannot deactivate own account");