Add test for adding a reviewer with run-as header
Google-Bug-Id: b/446827309
Release-Notes: skip
Change-Id: Iace72d26294db0dca3859ae2987af53fbdd7944c
diff --git a/javatests/com/google/gerrit/acceptance/rest/account/ImpersonationIT.java b/javatests/com/google/gerrit/acceptance/rest/account/ImpersonationIT.java
index 50ab587..844b3e4 100644
--- a/javatests/com/google/gerrit/acceptance/rest/account/ImpersonationIT.java
+++ b/javatests/com/google/gerrit/acceptance/rest/account/ImpersonationIT.java
@@ -884,6 +884,36 @@
assertThat(reviewerUpdate.realUpdatedBy._accountId).isEqualTo(realUser.id().get());
}
+ @Test
+ public void addReviewerWithRunAs() throws Exception {
+ allowRunAs();
+ TestAccount realUser = admin;
+ TestAccount impersonatedUser = user;
+ TestAccount reviewer = admin2;
+ PushOneCommit.Result r = createChange();
+ assertThat(gApi.changes().id(r.getChangeId()).get(MESSAGES).messages).hasSize(1);
+
+ ReviewerInput in = new ReviewerInput();
+ in.reviewer = reviewer.email();
+
+ RestResponse res =
+ adminRestSession.postWithHeaders(
+ "/changes/" + r.getChangeId() + "/reviewers", in, runAsHeader(impersonatedUser.id()));
+ res.assertOK();
+ ReviewerResult result = newGson().fromJson(res.getEntityContent(), ReviewerResult.class);
+
+ assertThat(result.reviewers).hasSize(1);
+ assertThat(result.reviewers.get(0)._accountId).isEqualTo(reviewer.id().get());
+
+ Collection<ReviewerUpdateInfo> reviewerUpdates =
+ gApi.changes().id(r.getChangeId()).get().reviewerUpdates;
+ assertThat(reviewerUpdates).hasSize(1);
+ ReviewerUpdateInfo reviewerUpdate = reviewerUpdates.iterator().next();
+ assertThat(reviewerUpdate.updatedBy._accountId).isEqualTo(impersonatedUser.id().get());
+ assertThat(reviewerUpdate.reviewer._accountId).isEqualTo(reviewer.id().get());
+ assertThat(reviewerUpdate.realUpdatedBy._accountId).isEqualTo(realUser.id().get());
+ }
+
private void assertLastChangeMessage(
ChangeData changeData,
String expectedMessage,