summaryrefslogtreecommitdiffstats
path: root/java/com/google/gerrit/server/project/testing/Util.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/com/google/gerrit/server/project/testing/Util.java')
-rw-r--r--java/com/google/gerrit/server/project/testing/Util.java227
1 files changed, 227 insertions, 0 deletions
diff --git a/java/com/google/gerrit/server/project/testing/Util.java b/java/com/google/gerrit/server/project/testing/Util.java
new file mode 100644
index 0000000000..abfd2bd624
--- /dev/null
+++ b/java/com/google/gerrit/server/project/testing/Util.java
@@ -0,0 +1,227 @@
+// Copyright (C) 2013 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.project.testing;
+
+import com.google.gerrit.common.data.AccessSection;
+import com.google.gerrit.common.data.GlobalCapability;
+import com.google.gerrit.common.data.GroupReference;
+import com.google.gerrit.common.data.LabelFunction;
+import com.google.gerrit.common.data.LabelType;
+import com.google.gerrit.common.data.LabelValue;
+import com.google.gerrit.common.data.Permission;
+import com.google.gerrit.common.data.PermissionRange;
+import com.google.gerrit.common.data.PermissionRule;
+import com.google.gerrit.reviewdb.client.AccountGroup;
+import com.google.gerrit.server.project.ProjectConfig;
+import java.util.Arrays;
+
+public class Util {
+ public static final AccountGroup.UUID ADMIN = new AccountGroup.UUID("test.admin");
+ public static final AccountGroup.UUID DEVS = new AccountGroup.UUID("test.devs");
+
+ public static final LabelType codeReview() {
+ return category(
+ "Code-Review",
+ value(2, "Looks good to me, approved"),
+ value(1, "Looks good to me, but someone else must approve"),
+ value(0, "No score"),
+ value(-1, "I would prefer this is not merged as is"),
+ value(-2, "This shall not be merged"));
+ }
+
+ public static final LabelType verified() {
+ return category("Verified", value(1, "Verified"), value(0, "No score"), value(-1, "Fails"));
+ }
+
+ public static final LabelType patchSetLock() {
+ LabelType label =
+ category("Patch-Set-Lock", value(1, "Patch Set Locked"), value(0, "Patch Set Unlocked"));
+ label.setFunction(LabelFunction.PATCH_SET_LOCK);
+ return label;
+ }
+
+ public static LabelValue value(int value, String text) {
+ return new LabelValue((short) value, text);
+ }
+
+ public static LabelType category(String name, LabelValue... values) {
+ return new LabelType(name, Arrays.asList(values));
+ }
+
+ public static PermissionRule newRule(ProjectConfig project, AccountGroup.UUID groupUUID) {
+ GroupReference group = new GroupReference(groupUUID, groupUUID.get());
+ group = project.resolve(group);
+
+ return new PermissionRule(group);
+ }
+
+ public static PermissionRule allow(
+ ProjectConfig project,
+ String permissionName,
+ int min,
+ int max,
+ AccountGroup.UUID group,
+ String ref) {
+ PermissionRule rule = newRule(project, group);
+ rule.setMin(min);
+ rule.setMax(max);
+ return grant(project, permissionName, rule, ref);
+ }
+
+ public static PermissionRule allowExclusive(
+ ProjectConfig project,
+ String permissionName,
+ int min,
+ int max,
+ AccountGroup.UUID group,
+ String ref) {
+ PermissionRule rule = newRule(project, group);
+ rule.setMin(min);
+ rule.setMax(max);
+ return grant(project, permissionName, rule, ref, true);
+ }
+
+ public static PermissionRule block(
+ ProjectConfig project,
+ String permissionName,
+ int min,
+ int max,
+ AccountGroup.UUID group,
+ String ref) {
+ PermissionRule rule = newRule(project, group);
+ rule.setMin(min);
+ rule.setMax(max);
+ PermissionRule r = grant(project, permissionName, rule, ref);
+ r.setBlock();
+ return r;
+ }
+
+ public static PermissionRule allow(
+ ProjectConfig project, String permissionName, AccountGroup.UUID group, String ref) {
+ return grant(project, permissionName, newRule(project, group), ref);
+ }
+
+ public static PermissionRule allow(
+ ProjectConfig project,
+ String permissionName,
+ AccountGroup.UUID group,
+ String ref,
+ boolean exclusive) {
+ return grant(project, permissionName, newRule(project, group), ref, exclusive);
+ }
+
+ public static PermissionRule allow(
+ ProjectConfig project, String capabilityName, AccountGroup.UUID group) {
+ PermissionRule rule = newRule(project, group);
+ project
+ .getAccessSection(AccessSection.GLOBAL_CAPABILITIES, true)
+ .getPermission(capabilityName, true)
+ .add(rule);
+ if (GlobalCapability.hasRange(capabilityName)) {
+ PermissionRange.WithDefaults range = GlobalCapability.getRange(capabilityName);
+ if (range != null) {
+ rule.setRange(range.getDefaultMin(), range.getDefaultMax());
+ }
+ }
+ return rule;
+ }
+
+ public static PermissionRule remove(
+ ProjectConfig project, String capabilityName, AccountGroup.UUID group) {
+ PermissionRule rule = newRule(project, group);
+ project
+ .getAccessSection(AccessSection.GLOBAL_CAPABILITIES, true)
+ .getPermission(capabilityName, true)
+ .remove(rule);
+ return rule;
+ }
+
+ public static PermissionRule remove(
+ ProjectConfig project, String permissionName, AccountGroup.UUID group, String ref) {
+ PermissionRule rule = newRule(project, group);
+ project.getAccessSection(ref, true).getPermission(permissionName, true).remove(rule);
+ return rule;
+ }
+
+ public static PermissionRule block(
+ ProjectConfig project, String capabilityName, AccountGroup.UUID group) {
+ PermissionRule rule = newRule(project, group);
+ project
+ .getAccessSection(AccessSection.GLOBAL_CAPABILITIES, true)
+ .getPermission(capabilityName, true)
+ .add(rule);
+ return rule;
+ }
+
+ public static PermissionRule block(
+ ProjectConfig project, String permissionName, AccountGroup.UUID group, String ref) {
+ PermissionRule r = grant(project, permissionName, newRule(project, group), ref);
+ r.setBlock();
+ return r;
+ }
+
+ public static PermissionRule blockLabel(
+ ProjectConfig project, String labelName, AccountGroup.UUID group, String ref) {
+ return blockLabel(project, labelName, -1, 1, group, ref);
+ }
+
+ public static PermissionRule blockLabel(
+ ProjectConfig project,
+ String labelName,
+ int min,
+ int max,
+ AccountGroup.UUID group,
+ String ref) {
+ PermissionRule r = grant(project, Permission.LABEL + labelName, newRule(project, group), ref);
+ r.setBlock();
+ r.setRange(min, max);
+ return r;
+ }
+
+ public static PermissionRule deny(
+ ProjectConfig project, String permissionName, AccountGroup.UUID group, String ref) {
+ PermissionRule r = grant(project, permissionName, newRule(project, group), ref);
+ r.setDeny();
+ return r;
+ }
+
+ public static void doNotInherit(ProjectConfig project, String permissionName, String ref) {
+ project
+ .getAccessSection(ref, true) //
+ .getPermission(permissionName, true) //
+ .setExclusiveGroup(true);
+ }
+
+ private static PermissionRule grant(
+ ProjectConfig project, String permissionName, PermissionRule rule, String ref) {
+ return grant(project, permissionName, rule, ref, false);
+ }
+
+ private static PermissionRule grant(
+ ProjectConfig project,
+ String permissionName,
+ PermissionRule rule,
+ String ref,
+ boolean exclusive) {
+ Permission permission = project.getAccessSection(ref, true).getPermission(permissionName, true);
+ if (exclusive) {
+ permission.setExclusiveGroup(exclusive);
+ }
+ permission.add(rule);
+ return rule;
+ }
+
+ private Util() {}
+}