Merge changes from topic 'refs-users-self'
* changes: RefPatternMatcher: Pass in CurrentUser instead of username Support push to refs/users/self in All-Users repository Support fetch of refs/users/self from All-Users repository
This commit is contained in:
@@ -17,6 +17,7 @@ package com.google.gerrit.acceptance.api.accounts;
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
import static com.google.common.truth.Truth.assert_;
|
||||
import static com.google.gerrit.acceptance.GitUtil.fetch;
|
||||
import static com.google.gerrit.gpg.PublicKeyStore.REFS_GPG_KEYS;
|
||||
import static com.google.gerrit.gpg.PublicKeyStore.keyToString;
|
||||
import static com.google.gerrit.gpg.testutil.TestKeys.allValidKeys;
|
||||
@@ -36,9 +37,11 @@ import com.google.gerrit.acceptance.AbstractDaemonTest;
|
||||
import com.google.gerrit.acceptance.AccountCreator;
|
||||
import com.google.gerrit.acceptance.PushOneCommit;
|
||||
import com.google.gerrit.acceptance.TestAccount;
|
||||
import com.google.gerrit.common.data.Permission;
|
||||
import com.google.gerrit.extensions.api.accounts.EmailInput;
|
||||
import com.google.gerrit.extensions.api.changes.AddReviewerInput;
|
||||
import com.google.gerrit.extensions.api.changes.StarsInput;
|
||||
import com.google.gerrit.extensions.client.GeneralPreferencesInfo;
|
||||
import com.google.gerrit.extensions.common.AccountInfo;
|
||||
import com.google.gerrit.extensions.common.ChangeInfo;
|
||||
import com.google.gerrit.extensions.common.GpgKeyInfo;
|
||||
@@ -53,7 +56,10 @@ import com.google.gerrit.gpg.server.GpgKeys;
|
||||
import com.google.gerrit.gpg.testutil.TestKey;
|
||||
import com.google.gerrit.reviewdb.client.Account;
|
||||
import com.google.gerrit.reviewdb.client.AccountExternalId;
|
||||
import com.google.gerrit.reviewdb.client.RefNames;
|
||||
import com.google.gerrit.server.config.AllUsersName;
|
||||
import com.google.gerrit.server.git.ProjectConfig;
|
||||
import com.google.gerrit.server.util.MagicBranch;
|
||||
import com.google.gerrit.testutil.ConfigSuite;
|
||||
import com.google.gerrit.testutil.FakeEmailSender.Message;
|
||||
import com.google.inject.Inject;
|
||||
@@ -62,6 +68,8 @@ import com.google.inject.Provider;
|
||||
import org.bouncycastle.bcpg.ArmoredOutputStream;
|
||||
import org.bouncycastle.openpgp.PGPPublicKey;
|
||||
import org.bouncycastle.openpgp.PGPPublicKeyRing;
|
||||
import org.eclipse.jgit.internal.storage.dfs.InMemoryRepository;
|
||||
import org.eclipse.jgit.junit.TestRepository;
|
||||
import org.eclipse.jgit.lib.Config;
|
||||
import org.eclipse.jgit.lib.Ref;
|
||||
import org.eclipse.jgit.lib.RefUpdate;
|
||||
@@ -354,6 +362,84 @@ public class AccountIT extends AbstractDaemonTest {
|
||||
gApi.accounts().self().addEmail(input);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void fetchUserBranch() throws Exception {
|
||||
// change something in the user preferences to ensure that the user branch
|
||||
// is created
|
||||
GeneralPreferencesInfo input = new GeneralPreferencesInfo();
|
||||
input.changesPerPage =
|
||||
GeneralPreferencesInfo.defaults().changesPerPage + 10;
|
||||
gApi.accounts().self().setPreferences(input);
|
||||
|
||||
TestRepository<InMemoryRepository> allUsersRepo = cloneProject(allUsers);
|
||||
fetch(allUsersRepo, RefNames.refsUsers(admin.id) + ":userRef");
|
||||
Ref userRef = allUsersRepo.getRepository().exactRef("userRef");
|
||||
assertThat(userRef).isNotNull();
|
||||
|
||||
fetch(allUsersRepo, RefNames.REFS_USERS_SELF + ":userSelfRef");
|
||||
Ref userSelfRef =
|
||||
allUsersRepo.getRepository().getRefDatabase().exactRef("userSelfRef");
|
||||
assertThat(userSelfRef).isNotNull();
|
||||
assertThat(userSelfRef.getObjectId()).isEqualTo(userRef.getObjectId());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void pushToUserBranch() throws Exception {
|
||||
// change something in the user preferences to ensure that the user branch
|
||||
// is created
|
||||
GeneralPreferencesInfo input = new GeneralPreferencesInfo();
|
||||
input.changesPerPage =
|
||||
GeneralPreferencesInfo.defaults().changesPerPage + 10;
|
||||
gApi.accounts().self().setPreferences(input);
|
||||
|
||||
removeExclusiveReadPermissionOnAllUsers();
|
||||
String userRefName = RefNames.refsUsers(admin.id);
|
||||
grant(Permission.PUSH, allUsers, userRefName);
|
||||
|
||||
TestRepository<InMemoryRepository> allUsersRepo = cloneProject(allUsers);
|
||||
fetch(allUsersRepo, RefNames.refsUsers(admin.id) + ":userRef");
|
||||
allUsersRepo.reset("userRef");
|
||||
PushOneCommit push = pushFactory.create(db, admin.getIdent(), allUsersRepo);
|
||||
push.to(userRefName).assertOkStatus();
|
||||
|
||||
push = pushFactory.create(db, admin.getIdent(), allUsersRepo);
|
||||
push.to(RefNames.REFS_USERS_SELF).assertOkStatus();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void pushToUserBranchForReview() throws Exception {
|
||||
// change something in the user preferences to ensure that the user branch
|
||||
// is created
|
||||
GeneralPreferencesInfo input = new GeneralPreferencesInfo();
|
||||
input.changesPerPage =
|
||||
GeneralPreferencesInfo.defaults().changesPerPage + 10;
|
||||
gApi.accounts().self().setPreferences(input);
|
||||
|
||||
removeExclusiveReadPermissionOnAllUsers();
|
||||
String userRefName = RefNames.refsUsers(admin.id);
|
||||
grant(Permission.PUSH, allUsers, MagicBranch.NEW_CHANGE + userRefName);
|
||||
|
||||
TestRepository<InMemoryRepository> allUsersRepo = cloneProject(allUsers);
|
||||
fetch(allUsersRepo, RefNames.refsUsers(admin.id) + ":userRef");
|
||||
allUsersRepo.reset("userRef");
|
||||
PushOneCommit push = pushFactory.create(db, admin.getIdent(), allUsersRepo);
|
||||
PushOneCommit.Result r = push.to(MagicBranch.NEW_CHANGE + userRefName);
|
||||
r.assertOkStatus();
|
||||
assertThat(r.getChange().change().getDest().get()).isEqualTo(userRefName);
|
||||
|
||||
push = pushFactory.create(db, admin.getIdent(), allUsersRepo);
|
||||
r = push.to(MagicBranch.NEW_CHANGE + RefNames.REFS_USERS_SELF);
|
||||
r.assertOkStatus();
|
||||
assertThat(r.getChange().change().getDest().get()).isEqualTo(userRefName);
|
||||
}
|
||||
|
||||
private void removeExclusiveReadPermissionOnAllUsers() throws Exception {
|
||||
ProjectConfig cfg = projectCache.checkedGet(allUsers).getConfig();
|
||||
cfg.getAccessSection(RefNames.REFS_USERS + "*", true)
|
||||
.remove(new Permission(Permission.READ));
|
||||
saveProjectConfig(allUsers, cfg);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void addGpgKey() throws Exception {
|
||||
TestKey key = validKeyWithoutExpiration();
|
||||
|
||||
Reference in New Issue
Block a user