Update some code to respect some java best practices

This commit updates some code introduced by I977a77286f
to improve its readability and also honor some java best
practices, e.g.:
* explicitly prohibit inheritance if a class isn't
intended for that (Effective Java Item 19's advice:
design and document for inheritance or else prohibit it).
* Write unit tests in three sections, aka "arrange",
"act", "assert".

Change-Id: I8939370f16c2465c7ba102afd3877a31babd0c89
diff --git a/java/com/google/gerrit/server/permissions/PluginPermissionsUtil.java b/java/com/google/gerrit/server/permissions/PluginPermissionsUtil.java
index bb6153c..a837ed7 100644
--- a/java/com/google/gerrit/server/permissions/PluginPermissionsUtil.java
+++ b/java/com/google/gerrit/server/permissions/PluginPermissionsUtil.java
@@ -27,7 +27,7 @@
 
 /** Utilities for plugin permissions. */
 @Singleton
-public class PluginPermissionsUtil {
+public final class PluginPermissionsUtil {
   private static final FluentLogger logger = FluentLogger.forEnclosingClass();
 
   private static final String PLUGIN_NAME_PATTERN_STRING = "[a-zA-Z0-9-]+";
diff --git a/javatests/com/google/gerrit/acceptance/rest/project/PluginAccessIT.java b/javatests/com/google/gerrit/acceptance/rest/project/PluginAccessIT.java
index 617883f..e7663f7 100644
--- a/javatests/com/google/gerrit/acceptance/rest/project/PluginAccessIT.java
+++ b/javatests/com/google/gerrit/acceptance/rest/project/PluginAccessIT.java
@@ -32,9 +32,10 @@
 import com.google.inject.AbstractModule;
 import com.google.inject.Inject;
 import com.google.inject.Module;
+import java.util.Set;
 import org.junit.Test;
 
-public class PluginAccessIT extends AbstractDaemonTest {
+public final class PluginAccessIT extends AbstractDaemonTest {
   private static final String TEST_PLUGIN_NAME = "gerrit";
   private static final String TEST_PLUGIN_CAPABILITY = "aPluginCapability";
   private static final String TEST_PLUGIN_PROJECT_PERMISSION = "aPluginProjectPermission";
@@ -69,40 +70,47 @@
   }
 
   @Test
-  public void addPluginCapability() throws Exception {
-    addPluginPermission(AccessSection.GLOBAL_CAPABILITIES, TEST_PLUGIN_CAPABILITY);
+  public void setAccessAddPluginCapabilitySucceed() throws Exception {
+    String pluginCapability = TEST_PLUGIN_NAME + "-" + TEST_PLUGIN_CAPABILITY;
+    ProjectAccessInput accessInput =
+        createAccessInput(AccessSection.GLOBAL_CAPABILITIES, pluginCapability);
 
+    ProjectAccessInfo projectAccessInfo =
+        gApi.projects().name(allProjects.get()).access(accessInput);
+
+    Set<String> capabilities =
+        projectAccessInfo.local.get(AccessSection.GLOBAL_CAPABILITIES).permissions.keySet();
+    assertThat(capabilities).contains(pluginCapability);
     // Verifies the plugin defined capability could be listed.
-    assertThat(pluginPermissionsUtil.collectPluginCapabilities())
-        .containsKey(TEST_PLUGIN_NAME + "-" + TEST_PLUGIN_CAPABILITY);
+    assertThat(pluginPermissionsUtil.collectPluginCapabilities()).containsKey(pluginCapability);
   }
 
   @Test
-  public void addPluginProjectPermission() throws Exception {
-    addPluginPermission("refs/heads/plugin-permission", TEST_PLUGIN_PROJECT_PERMISSION);
+  public void setAccessAddPluginProjectPermissionSucceed() throws Exception {
+    String pluginProjectPermission =
+        "plugin-" + TEST_PLUGIN_NAME + "-" + TEST_PLUGIN_PROJECT_PERMISSION;
+    String accessSection = "refs/heads/plugin-permission";
+    ProjectAccessInput accessInput = createAccessInput(accessSection, pluginProjectPermission);
 
+    ProjectAccessInfo projectAccessInfo =
+        gApi.projects().name(allProjects.get()).access(accessInput);
+
+    Set<String> permissions = projectAccessInfo.local.get(accessSection).permissions.keySet();
+    assertThat(permissions).contains(pluginProjectPermission);
     // Verifies the plugin defined capability could be listed.
     assertThat(pluginPermissionsUtil.collectPluginProjectPermissions())
-        .containsKey("plugin-" + TEST_PLUGIN_NAME + "-" + TEST_PLUGIN_PROJECT_PERMISSION);
+        .containsKey(pluginProjectPermission);
   }
 
-  private void addPluginPermission(String accessSection, String permission) throws Exception {
+  private static ProjectAccessInput createAccessInput(String accessSection, String permissionName) {
     ProjectAccessInput accessInput = new ProjectAccessInput();
     PermissionRuleInfo ruleInfo = new PermissionRuleInfo(PermissionRuleInfo.Action.ALLOW, false);
     PermissionInfo email = new PermissionInfo(null, null);
     email.rules = ImmutableMap.of(SystemGroupBackend.REGISTERED_USERS.get(), ruleInfo);
-    String permissionConfigName = TEST_PLUGIN_NAME + "-" + permission;
-    if (!accessSection.equals(AccessSection.GLOBAL_CAPABILITIES)) {
-      permissionConfigName = "plugin-" + permissionConfigName;
-    }
     AccessSectionInfo accessSectionInfo = new AccessSectionInfo();
-    accessSectionInfo.permissions = ImmutableMap.of(permissionConfigName, email);
+    accessSectionInfo.permissions = ImmutableMap.of(permissionName, email);
     accessInput.add = ImmutableMap.of(accessSection, accessSectionInfo);
 
-    ProjectAccessInfo updatedAccessSectionInfo =
-        gApi.projects().name(allProjects.get()).access(accessInput);
-
-    assertThat(updatedAccessSectionInfo.local.get(accessSection).permissions.keySet())
-        .containsAllIn(accessSectionInfo.permissions.keySet());
+    return accessInput;
   }
 }
diff --git a/javatests/com/google/gerrit/server/permissions/PluginPermissionsUtilTest.java b/javatests/com/google/gerrit/server/permissions/PluginPermissionsUtilTest.java
index fd68da3..85d85fb 100644
--- a/javatests/com/google/gerrit/server/permissions/PluginPermissionsUtilTest.java
+++ b/javatests/com/google/gerrit/server/permissions/PluginPermissionsUtilTest.java
@@ -17,23 +17,40 @@
 import static com.google.common.truth.Truth.assertThat;
 import static com.google.gerrit.server.permissions.PluginPermissionsUtil.isPluginPermission;
 
+import com.google.common.collect.ImmutableList;
 import org.junit.Test;
 
 /** Small tests for {@link PluginPermissionsUtil}. */
-public class PluginPermissionsUtilTest {
+public final class PluginPermissionsUtilTest {
 
   @Test
-  public void pluginPermissionNameInConfigPattern() {
-    assertThat(isPluginPermission("create")).isFalse();
-    assertThat(isPluginPermission("label-Code-Review")).isFalse();
-    assertThat(isPluginPermission("plugin-foo")).isFalse();
-    assertThat(isPluginPermission("plugin-foo")).isFalse();
-
-    assertThat(isPluginPermission("plugin-foo-a")).isTrue();
+  public void isPluginPermissionReturnsTrueForValidName() {
     // "-" is allowed for a plugin name. Here "foo-a" should be the name of the plugin.
-    assertThat(isPluginPermission("plugin-foo-a-b")).isTrue();
+    ImmutableList<String> validPluginPermissions =
+        ImmutableList.of("plugin-foo-a", "plugin-foo-a-b");
 
-    assertThat(isPluginPermission("plugin-foo-a-")).isFalse();
-    assertThat(isPluginPermission("plugin-foo-a1")).isFalse();
+    for (String permission : validPluginPermissions) {
+      assertThat(isPluginPermission(permission))
+          .named("valid plugin permission: %s", permission)
+          .isTrue();
+    }
+  }
+
+  @Test
+  public void isPluginPermissionReturnsFalseForInvalidName() {
+    ImmutableList<String> inValidPluginPermissions =
+        ImmutableList.of(
+            "create",
+            "label-Code-Review",
+            "plugin-foo",
+            "plugin-foo",
+            "plugin-foo-a-",
+            "plugin-foo-a1");
+
+    for (String permission : inValidPluginPermissions) {
+      assertThat(isPluginPermission(permission))
+          .named("invalid plugin permission: %s", permission)
+          .isFalse();
+    }
   }
 }