Merge "Change test API: Allow to specify uploader for new patch sets"
diff --git a/java/com/google/gerrit/acceptance/testsuite/change/ChangeOperationsImpl.java b/java/com/google/gerrit/acceptance/testsuite/change/ChangeOperationsImpl.java
index c1029be..0966bbe 100644
--- a/java/com/google/gerrit/acceptance/testsuite/change/ChangeOperationsImpl.java
+++ b/java/com/google/gerrit/acceptance/testsuite/change/ChangeOperationsImpl.java
@@ -441,8 +441,10 @@
PatchSetInserter patchSetInserter =
getPatchSetInserter(changeNotes, newPatchsetCommit, patchsetId);
- IdentifiedUser changeOwner = userFactory.create(changeNotes.getChange().getOwner());
- try (BatchUpdate batchUpdate = batchUpdateFactory.create(project, changeOwner, now)) {
+ Account.Id uploaderId =
+ patchsetCreation.uploader().orElse(changeNotes.getChange().getOwner());
+ IdentifiedUser uploader = userFactory.create(uploaderId);
+ try (BatchUpdate batchUpdate = batchUpdateFactory.create(project, uploader, now)) {
batchUpdate.setRepository(repository, revWalk, objectInserter);
batchUpdate.addOp(changeId, patchSetInserter);
batchUpdate.execute();
diff --git a/java/com/google/gerrit/acceptance/testsuite/change/TestPatchsetCreation.java b/java/com/google/gerrit/acceptance/testsuite/change/TestPatchsetCreation.java
index 22a4da6..32731c1 100644
--- a/java/com/google/gerrit/acceptance/testsuite/change/TestPatchsetCreation.java
+++ b/java/com/google/gerrit/acceptance/testsuite/change/TestPatchsetCreation.java
@@ -17,6 +17,7 @@
import com.google.auto.value.AutoValue;
import com.google.common.collect.ImmutableList;
import com.google.gerrit.acceptance.testsuite.ThrowingFunction;
+import com.google.gerrit.entities.Account;
import com.google.gerrit.entities.PatchSet;
import com.google.gerrit.server.edit.tree.TreeModification;
import java.util.Optional;
@@ -25,6 +26,8 @@
@AutoValue
public abstract class TestPatchsetCreation {
+ public abstract Optional<Account.Id> uploader();
+
public abstract Optional<String> commitMessage();
public abstract ImmutableList<TreeModification> treeModifications();
@@ -40,6 +43,11 @@
@AutoValue.Builder
public abstract static class Builder {
+ /**
+ * The uploader for the new patch set. If not set the new patch set is uploaded by the change
+ * owner.
+ */
+ public abstract Builder uploader(Account.Id uploader);
public abstract Builder commitMessage(String commitMessage);
diff --git a/javatests/com/google/gerrit/acceptance/testsuite/change/ChangeOperationsImplTest.java b/javatests/com/google/gerrit/acceptance/testsuite/change/ChangeOperationsImplTest.java
index 6c629c9..fd5f6fc 100644
--- a/javatests/com/google/gerrit/acceptance/testsuite/change/ChangeOperationsImplTest.java
+++ b/javatests/com/google/gerrit/acceptance/testsuite/change/ChangeOperationsImplTest.java
@@ -795,6 +795,23 @@
}
@Test
+ public void newPatchsetCanHaveDifferentUploader() throws Exception {
+ Account.Id changeOwner = accountOperations.newAccount().create();
+ Change.Id changeId = changeOperations.newChange().owner(changeOwner).create();
+
+ ChangeInfo change = getChangeFromServer(changeId);
+ RevisionInfo currentPatchsetRevision = change.revisions.get(change.currentRevision);
+ assertThat(currentPatchsetRevision.uploader._accountId).isEqualTo(changeOwner.get());
+
+ Account.Id newUploader = accountOperations.newAccount().create();
+ changeOperations.change(changeId).newPatchset().uploader(newUploader).create();
+
+ change = getChangeFromServer(changeId);
+ currentPatchsetRevision = change.revisions.get(change.currentRevision);
+ assertThat(currentPatchsetRevision.uploader._accountId).isEqualTo(newUploader.get());
+ }
+
+ @Test
public void newPatchsetCanHaveUpdatedCommitMessage() throws Exception {
Change.Id changeId = changeOperations.newChange().commitMessage("Old message").create();