AccountIT: Use ExtensionRegistry for GitReferenceUpdatedListener
Add the necessary support in ExtensionRegistry and update the
tests to use it.
Change-Id: Id7c1cab6e43309171b9f0729962d4ca743dbf0d6
diff --git a/java/com/google/gerrit/acceptance/ExtensionRegistry.java b/java/com/google/gerrit/acceptance/ExtensionRegistry.java
index 433bc72..9b7e455 100644
--- a/java/com/google/gerrit/acceptance/ExtensionRegistry.java
+++ b/java/com/google/gerrit/acceptance/ExtensionRegistry.java
@@ -19,6 +19,7 @@
import com.google.gerrit.extensions.events.AccountIndexedListener;
import com.google.gerrit.extensions.events.ChangeIndexedListener;
import com.google.gerrit.extensions.events.CommentAddedListener;
+import com.google.gerrit.extensions.events.GitReferenceUpdatedListener;
import com.google.gerrit.extensions.events.GroupIndexedListener;
import com.google.gerrit.extensions.events.ProjectIndexedListener;
import com.google.gerrit.extensions.registration.DynamicMap;
@@ -54,6 +55,7 @@
private final DynamicMap<DownloadScheme> downloadSchemes;
private final DynamicSet<RefOperationValidationListener> refOperationValidationListeners;
private final DynamicSet<CommentAddedListener> commentAddedListeners;
+ private final DynamicSet<GitReferenceUpdatedListener> refUpdatedListeners;
@Inject
ExtensionRegistry(
@@ -71,7 +73,8 @@
DynamicSet<ActionVisitor> actionVisitors,
DynamicMap<DownloadScheme> downloadSchemes,
DynamicSet<RefOperationValidationListener> refOperationValidationListeners,
- DynamicSet<CommentAddedListener> commentAddedListeners) {
+ DynamicSet<CommentAddedListener> commentAddedListeners,
+ DynamicSet<GitReferenceUpdatedListener> refUpdatedListeners) {
this.accountIndexedListeners = accountIndexedListeners;
this.changeIndexedListeners = changeIndexedListeners;
this.groupIndexedListeners = groupIndexedListeners;
@@ -87,6 +90,7 @@
this.downloadSchemes = downloadSchemes;
this.refOperationValidationListeners = refOperationValidationListeners;
this.commentAddedListeners = commentAddedListeners;
+ this.refUpdatedListeners = refUpdatedListeners;
}
public Registration newRegistration() {
@@ -157,6 +161,10 @@
return add(commentAddedListeners, commentAddedListener);
}
+ public Registration add(GitReferenceUpdatedListener refUpdatedListener) {
+ return add(refUpdatedListeners, refUpdatedListener);
+ }
+
private <T> Registration add(DynamicSet<T> dynamicSet, T extension) {
RegistrationHandle registrationHandle = dynamicSet.add("gerrit", extension);
registrationHandles.add(registrationHandle);
diff --git a/javatests/com/google/gerrit/acceptance/api/accounts/AccountIT.java b/javatests/com/google/gerrit/acceptance/api/accounts/AccountIT.java
index 24e9adf..1fdf3d6 100644
--- a/javatests/com/google/gerrit/acceptance/api/accounts/AccountIT.java
+++ b/javatests/com/google/gerrit/acceptance/api/accounts/AccountIT.java
@@ -191,7 +191,6 @@
import org.eclipse.jgit.transport.RemoteRefUpdate;
import org.eclipse.jgit.treewalk.TreeWalk;
import org.junit.After;
-import org.junit.Before;
import org.junit.Test;
public class AccountIT extends AbstractDaemonTest {
@@ -209,7 +208,6 @@
@Inject private @ServerInitiated Provider<AccountsUpdate> accountsUpdateProvider;
@Inject private AccountIndexer accountIndexer;
- @Inject private DynamicSet<GitReferenceUpdatedListener> refUpdateListeners;
@Inject private ExternalIdNotes.Factory extIdNotesFactory;
@Inject private ExternalIds externalIds;
@Inject private GitReferenceUpdated gitReferenceUpdated;
@@ -238,22 +236,6 @@
@Inject protected GroupOperations groupOperations;
- private RefUpdateCounter refUpdateCounter;
- private RegistrationHandle refUpdateCounterHandle;
-
- @Before
- public void addRefUpdateCounter() {
- refUpdateCounter = new RefUpdateCounter();
- refUpdateCounterHandle = refUpdateListeners.add("gerrit", refUpdateCounter);
- }
-
- @After
- public void removeRefUpdateCounter() {
- if (refUpdateCounterHandle != null) {
- refUpdateCounterHandle.remove();
- }
- }
-
@After
public void clearPublicKeyStore() throws Exception {
try (Repository repo = repoManager.openRepository(allUsers)) {
@@ -302,11 +284,14 @@
@Test
public void createByAccountCreator() throws Exception {
- Account.Id accountId = createByAccountCreator(1);
- refUpdateCounter.assertRefUpdateFor(
- RefUpdateCounter.projectRef(allUsers, RefNames.refsUsers(accountId)),
- RefUpdateCounter.projectRef(allUsers, RefNames.REFS_EXTERNAL_IDS),
- RefUpdateCounter.projectRef(allUsers, RefNames.REFS_SEQUENCES + Sequences.NAME_ACCOUNTS));
+ RefUpdateCounter refUpdateCounter = new RefUpdateCounter();
+ try (Registration registration = extensionRegistry.newRegistration().add(refUpdateCounter)) {
+ Account.Id accountId = createByAccountCreator(1);
+ refUpdateCounter.assertRefUpdateFor(
+ RefUpdateCounter.projectRef(allUsers, RefNames.refsUsers(accountId)),
+ RefUpdateCounter.projectRef(allUsers, RefNames.REFS_EXTERNAL_IDS),
+ RefUpdateCounter.projectRef(allUsers, RefNames.REFS_SEQUENCES + Sequences.NAME_ACCOUNTS));
+ }
}
@Test
@@ -712,8 +697,9 @@
@Test
public void starUnstarChange() throws Exception {
AccountIndexedCounter accountIndexedCounter = new AccountIndexedCounter();
+ RefUpdateCounter refUpdateCounter = new RefUpdateCounter();
try (Registration registration =
- extensionRegistry.newRegistration().add(accountIndexedCounter)) {
+ extensionRegistry.newRegistration().add(accountIndexedCounter).add(refUpdateCounter)) {
PushOneCommit.Result r = createChange();
String triplet = project.get() + "~master~" + r.getChangeId();
refUpdateCounter.clear();
@@ -740,35 +726,36 @@
@Test
public void starUnstarChangeWithLabels() throws Exception {
- PushOneCommit.Result r = createChange();
- String triplet = project.get() + "~master~" + r.getChangeId();
- refUpdateCounter.clear();
-
- assertThat(gApi.accounts().self().getStars(triplet)).isEmpty();
- assertThat(gApi.accounts().self().getStarredChanges()).isEmpty();
-
- gApi.accounts()
- .self()
- .setStars(triplet, new StarsInput(ImmutableSet.of(DEFAULT_LABEL, "red", "blue")));
- ChangeInfo change = info(triplet);
- assertThat(change.starred).isTrue();
- assertThat(change.stars).containsExactly("blue", "red", DEFAULT_LABEL).inOrder();
- assertThat(gApi.accounts().self().getStars(triplet))
- .containsExactly("blue", "red", DEFAULT_LABEL)
- .inOrder();
- List<ChangeInfo> starredChanges = gApi.accounts().self().getStarredChanges();
- assertThat(starredChanges).hasSize(1);
- ChangeInfo starredChange = starredChanges.get(0);
- assertThat(starredChange._number).isEqualTo(r.getChange().getId().get());
- assertThat(starredChange.starred).isTrue();
- assertThat(starredChange.stars).containsExactly("blue", "red", DEFAULT_LABEL).inOrder();
- refUpdateCounter.assertRefUpdateFor(
- RefUpdateCounter.projectRef(
- allUsers, RefNames.refsStarredChanges(Change.id(change._number), admin.id())));
-
AccountIndexedCounter accountIndexedCounter = new AccountIndexedCounter();
+ RefUpdateCounter refUpdateCounter = new RefUpdateCounter();
try (Registration registration =
- extensionRegistry.newRegistration().add(accountIndexedCounter)) {
+ extensionRegistry.newRegistration().add(accountIndexedCounter).add(refUpdateCounter)) {
+ PushOneCommit.Result r = createChange();
+ String triplet = project.get() + "~master~" + r.getChangeId();
+ refUpdateCounter.clear();
+
+ assertThat(gApi.accounts().self().getStars(triplet)).isEmpty();
+ assertThat(gApi.accounts().self().getStarredChanges()).isEmpty();
+
+ gApi.accounts()
+ .self()
+ .setStars(triplet, new StarsInput(ImmutableSet.of(DEFAULT_LABEL, "red", "blue")));
+ ChangeInfo change = info(triplet);
+ assertThat(change.starred).isTrue();
+ assertThat(change.stars).containsExactly("blue", "red", DEFAULT_LABEL).inOrder();
+ assertThat(gApi.accounts().self().getStars(triplet))
+ .containsExactly("blue", "red", DEFAULT_LABEL)
+ .inOrder();
+ List<ChangeInfo> starredChanges = gApi.accounts().self().getStarredChanges();
+ assertThat(starredChanges).hasSize(1);
+ ChangeInfo starredChange = starredChanges.get(0);
+ assertThat(starredChange._number).isEqualTo(r.getChange().getId().get());
+ assertThat(starredChange.starred).isTrue();
+ assertThat(starredChange.stars).containsExactly("blue", "red", DEFAULT_LABEL).inOrder();
+ refUpdateCounter.assertRefUpdateFor(
+ RefUpdateCounter.projectRef(
+ allUsers, RefNames.refsStarredChanges(Change.id(change._number), admin.id())));
+
gApi.accounts()
.self()
.setStars(
@@ -791,14 +778,14 @@
allUsers, RefNames.refsStarredChanges(Change.id(change._number), admin.id())));
accountIndexedCounter.assertNoReindex();
- }
- requestScopeOperations.setApiUser(user.id());
- AuthException thrown =
- assertThrows(
- AuthException.class,
- () -> gApi.accounts().id(Integer.toString((admin.id().get()))).getStars(triplet));
- assertThat(thrown).hasMessageThat().contains("not allowed to get stars of another account");
+ requestScopeOperations.setApiUser(user.id());
+ AuthException thrown =
+ assertThrows(
+ AuthException.class,
+ () -> gApi.accounts().id(Integer.toString((admin.id().get()))).getStars(triplet));
+ assertThat(thrown).hasMessageThat().contains("not allowed to get stars of another account");
+ }
}
@Test