Allow to create private/wip changes via CreateChange REST endpoint Change-Id: I01029fcde99b57681cda8056efd00182e2227621 Signed-off-by: Edwin Kempin <ekempin@google.com>
diff --git a/Documentation/rest-api-changes.txt b/Documentation/rest-api-changes.txt index 58389fd..47ed1b8 100644 --- a/Documentation/rest-api-changes.txt +++ b/Documentation/rest-api-changes.txt
@@ -5536,6 +5536,10 @@ |`topic` |optional|The topic to which this change belongs. |`status` |optional, default to `NEW`| The status of the change (only `NEW` and `DRAFT` accepted here). +|`is_private` |optional, default to `false`| +Whether the new change should be marked as private. +|`work_in_progress` |optional, default to `false`| +Whether the new change should be set to work in progress. |`base_change` |optional| A link:#change-id[\{change-id\}] that identifies the base change for a create change operation.
diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/change/CreateChangeIT.java b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/change/CreateChangeIT.java index 146b5ca..153e70b 100644 --- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/change/CreateChangeIT.java +++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/change/CreateChangeIT.java
@@ -156,6 +156,20 @@ } @Test + public void createNewPrivateChange() throws Exception { + ChangeInput input = newChangeInput(ChangeStatus.NEW); + input.isPrivate = true; + assertCreateSucceeds(input); + } + + @Test + public void createNewWorkInProgressChange() throws Exception { + ChangeInput input = newChangeInput(ChangeStatus.NEW); + input.workInProgress = true; + assertCreateSucceeds(input); + } + + @Test public void noteDbCommit() throws Exception { assume().that(notesMigration.readChanges()).isTrue(); @@ -376,6 +390,8 @@ assertThat(out.subject).isEqualTo(in.subject); assertThat(out.topic).isEqualTo(in.topic); assertThat(out.status).isEqualTo(in.status); + assertThat(out.isPrivate).isEqualTo(in.isPrivate); + assertThat(out.workInProgress).isEqualTo(in.workInProgress); assertThat(out.revisions).hasSize(1); assertThat(out.submitted).isNull(); Boolean draft = Iterables.getOnlyElement(out.revisions.values()).draft;
diff --git a/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/common/ChangeInput.java b/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/common/ChangeInput.java index b50bcf3..1552554 100644 --- a/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/common/ChangeInput.java +++ b/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/common/ChangeInput.java
@@ -27,6 +27,8 @@ public String topic; public ChangeStatus status; + public Boolean isPrivate; + public Boolean workInProgress; public String baseChange; public Boolean newBranch; public MergeInput merge;
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/CreateChange.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/CreateChange.java index e0cb2e1..cc3649c 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/CreateChange.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/CreateChange.java
@@ -260,6 +260,8 @@ } ins.setTopic(topic); ins.setDraft(input.status == ChangeStatus.DRAFT); + ins.setPrivate(input.isPrivate != null && input.isPrivate); + ins.setWorkInProgress(input.workInProgress != null && input.workInProgress); ins.setGroups(groups); ins.setNotify(input.notify); ins.setAccountsToNotify(notifyUtil.resolveAccounts(input.notifyDetails));