summaryrefslogtreecommitdiffstats
path: root/gerrit-server/src/test/java/com/google/gerrit/server/git/LabelNormalizerTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'gerrit-server/src/test/java/com/google/gerrit/server/git/LabelNormalizerTest.java')
-rw-r--r--gerrit-server/src/test/java/com/google/gerrit/server/git/LabelNormalizerTest.java227
1 files changed, 0 insertions, 227 deletions
diff --git a/gerrit-server/src/test/java/com/google/gerrit/server/git/LabelNormalizerTest.java b/gerrit-server/src/test/java/com/google/gerrit/server/git/LabelNormalizerTest.java
deleted file mode 100644
index 5453fade36..0000000000
--- a/gerrit-server/src/test/java/com/google/gerrit/server/git/LabelNormalizerTest.java
+++ /dev/null
@@ -1,227 +0,0 @@
-// Copyright (C) 2014 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.google.gerrit.server.git;
-
-import static com.google.gerrit.common.data.Permission.forLabel;
-import static com.google.gerrit.server.group.SystemGroupBackend.REGISTERED_USERS;
-import static com.google.gerrit.server.project.Util.allow;
-import static com.google.gerrit.server.project.Util.category;
-import static com.google.gerrit.server.project.Util.value;
-import static org.junit.Assert.assertEquals;
-
-import com.google.common.collect.ImmutableList;
-import com.google.gerrit.common.TimeUtil;
-import com.google.gerrit.common.data.AccessSection;
-import com.google.gerrit.common.data.LabelType;
-import com.google.gerrit.lifecycle.LifecycleManager;
-import com.google.gerrit.reviewdb.client.Account;
-import com.google.gerrit.reviewdb.client.Branch;
-import com.google.gerrit.reviewdb.client.Change;
-import com.google.gerrit.reviewdb.client.LabelId;
-import com.google.gerrit.reviewdb.client.PatchSet;
-import com.google.gerrit.reviewdb.client.PatchSetApproval;
-import com.google.gerrit.reviewdb.client.PatchSetInfo;
-import com.google.gerrit.reviewdb.server.ReviewDb;
-import com.google.gerrit.server.CurrentUser;
-import com.google.gerrit.server.IdentifiedUser;
-import com.google.gerrit.server.account.AccountManager;
-import com.google.gerrit.server.account.AuthRequest;
-import com.google.gerrit.server.config.AllProjectsName;
-import com.google.gerrit.server.git.LabelNormalizer.Result;
-import com.google.gerrit.server.notedb.ChangeNotes;
-import com.google.gerrit.server.project.ProjectCache;
-import com.google.gerrit.server.schema.SchemaCreator;
-import com.google.gerrit.server.util.RequestContext;
-import com.google.gerrit.server.util.ThreadLocalRequestContext;
-import com.google.gerrit.testutil.InMemoryDatabase;
-import com.google.gerrit.testutil.InMemoryModule;
-import com.google.inject.Guice;
-import com.google.inject.Inject;
-import com.google.inject.Injector;
-import com.google.inject.Provider;
-import com.google.inject.util.Providers;
-import java.util.List;
-import org.eclipse.jgit.lib.Repository;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-/** Unit tests for {@link LabelNormalizer}. */
-public class LabelNormalizerTest {
- @Inject private AccountManager accountManager;
- @Inject private AllProjectsName allProjects;
- @Inject private GitRepositoryManager repoManager;
- @Inject private IdentifiedUser.GenericFactory userFactory;
- @Inject private InMemoryDatabase schemaFactory;
- @Inject private LabelNormalizer norm;
- @Inject private MetaDataUpdate.User metaDataUpdateFactory;
- @Inject private ProjectCache projectCache;
- @Inject private SchemaCreator schemaCreator;
- @Inject protected ThreadLocalRequestContext requestContext;
- @Inject private ChangeNotes.Factory changeNotesFactory;
-
- private LifecycleManager lifecycle;
- private ReviewDb db;
- private Account.Id userId;
- private IdentifiedUser user;
- private Change change;
- private ChangeNotes notes;
-
- @Before
- public void setUpInjector() throws Exception {
- Injector injector = Guice.createInjector(new InMemoryModule());
- injector.injectMembers(this);
- lifecycle = new LifecycleManager();
- lifecycle.add(injector);
- lifecycle.start();
-
- db = schemaFactory.open();
- schemaCreator.create(db);
- userId = accountManager.authenticate(AuthRequest.forUser("user")).getAccountId();
- user = userFactory.create(userId);
-
- requestContext.setContext(
- new RequestContext() {
- @Override
- public CurrentUser getUser() {
- return user;
- }
-
- @Override
- public Provider<ReviewDb> getReviewDbProvider() {
- return Providers.of(db);
- }
- });
-
- configureProject();
- setUpChange();
- }
-
- private void configureProject() throws Exception {
- ProjectConfig pc = loadAllProjects();
- for (AccessSection sec : pc.getAccessSections()) {
- for (String label : pc.getLabelSections().keySet()) {
- sec.removePermission(forLabel(label));
- }
- }
- LabelType lt =
- category("Verified", value(1, "Verified"), value(0, "No score"), value(-1, "Fails"));
- pc.getLabelSections().put(lt.getName(), lt);
- save(pc);
- }
-
- private void setUpChange() throws Exception {
- change =
- new Change(
- new Change.Key("Iabcd1234abcd1234abcd1234abcd1234abcd1234"),
- new Change.Id(1),
- userId,
- new Branch.NameKey(allProjects, "refs/heads/master"),
- TimeUtil.nowTs());
- PatchSetInfo ps = new PatchSetInfo(new PatchSet.Id(change.getId(), 1));
- ps.setSubject("Test change");
- change.setCurrentPatchSet(ps);
- db.changes().insert(ImmutableList.of(change));
- notes = changeNotesFactory.createChecked(db, change);
- }
-
- @After
- public void tearDown() {
- if (lifecycle != null) {
- lifecycle.stop();
- }
- requestContext.setContext(null);
- if (db != null) {
- db.close();
- }
- InMemoryDatabase.drop(schemaFactory);
- }
-
- @Test
- public void noNormalizeByPermission() throws Exception {
- ProjectConfig pc = loadAllProjects();
- allow(pc, forLabel("Code-Review"), -1, 1, REGISTERED_USERS, "refs/heads/*");
- allow(pc, forLabel("Verified"), -1, 1, REGISTERED_USERS, "refs/heads/*");
- save(pc);
-
- PatchSetApproval cr = psa(userId, "Code-Review", 2);
- PatchSetApproval v = psa(userId, "Verified", 1);
- assertEquals(Result.create(list(cr, v), list(), list()), norm.normalize(notes, list(cr, v)));
- }
-
- @Test
- public void normalizeByType() throws Exception {
- ProjectConfig pc = loadAllProjects();
- allow(pc, forLabel("Code-Review"), -5, 5, REGISTERED_USERS, "refs/heads/*");
- allow(pc, forLabel("Verified"), -5, 5, REGISTERED_USERS, "refs/heads/*");
- save(pc);
-
- PatchSetApproval cr = psa(userId, "Code-Review", 5);
- PatchSetApproval v = psa(userId, "Verified", 5);
- assertEquals(
- Result.create(list(), list(copy(cr, 2), copy(v, 1)), list()),
- norm.normalize(notes, list(cr, v)));
- }
-
- @Test
- public void emptyPermissionRangeKeepsResult() throws Exception {
- PatchSetApproval cr = psa(userId, "Code-Review", 1);
- PatchSetApproval v = psa(userId, "Verified", 1);
- assertEquals(Result.create(list(cr, v), list(), list()), norm.normalize(notes, list(cr, v)));
- }
-
- @Test
- public void explicitZeroVoteOnNonEmptyRangeIsPresent() throws Exception {
- ProjectConfig pc = loadAllProjects();
- allow(pc, forLabel("Code-Review"), -1, 1, REGISTERED_USERS, "refs/heads/*");
- save(pc);
-
- PatchSetApproval cr = psa(userId, "Code-Review", 0);
- PatchSetApproval v = psa(userId, "Verified", 0);
- assertEquals(Result.create(list(cr, v), list(), list()), norm.normalize(notes, list(cr, v)));
- }
-
- private ProjectConfig loadAllProjects() throws Exception {
- try (Repository repo = repoManager.openRepository(allProjects)) {
- ProjectConfig pc = new ProjectConfig(allProjects);
- pc.load(repo);
- return pc;
- }
- }
-
- private void save(ProjectConfig pc) throws Exception {
- try (MetaDataUpdate md = metaDataUpdateFactory.create(pc.getProject().getNameKey(), user)) {
- pc.commit(md);
- projectCache.evict(pc.getProject().getNameKey());
- }
- }
-
- private PatchSetApproval psa(Account.Id accountId, String label, int value) {
- return new PatchSetApproval(
- new PatchSetApproval.Key(change.currentPatchSetId(), accountId, new LabelId(label)),
- (short) value,
- TimeUtil.nowTs());
- }
-
- private PatchSetApproval copy(PatchSetApproval src, int newValue) {
- PatchSetApproval result = new PatchSetApproval(src.getKey().getParentKey(), src);
- result.setValue((short) newValue);
- return result;
- }
-
- private static List<PatchSetApproval> list(PatchSetApproval... psas) {
- return ImmutableList.<PatchSetApproval>copyOf(psas);
- }
-}