ctubbsii commented on code in PR #5900:
URL: https://github.com/apache/accumulo/pull/5900#discussion_r2364554332


##########
core/src/test/java/org/apache/accumulo/core/security/NamespacePermissionsTest.java:
##########
@@ -31,18 +32,30 @@ public void testEnsureEquivalencies() {
     EnumSet<NamespacePermission> set = 
EnumSet.allOf(NamespacePermission.class);
 
     for (TablePermission permission : TablePermission.values()) {
-      set.remove(NamespacePermission.getEquivalent(permission));
+      var equivalent = NamespacePermission.getEquivalent(permission);
+      if (equivalent != null) {
+        assertTrue(set.remove(equivalent));
+        assertEquals(permission.name(), equivalent.name());
+      }
     }
+    assertEquals(EnumSet.of(NamespacePermission.ALTER_NAMESPACE, 
NamespacePermission.DROP_NAMESPACE,

Review Comment:
   A comment to explain that these do not have an equivalent would be good.



##########
core/src/test/java/org/apache/accumulo/core/security/NamespacePermissionsTest.java:
##########
@@ -31,18 +32,30 @@ public void testEnsureEquivalencies() {
     EnumSet<NamespacePermission> set = 
EnumSet.allOf(NamespacePermission.class);
 
     for (TablePermission permission : TablePermission.values()) {
-      set.remove(NamespacePermission.getEquivalent(permission));
+      var equivalent = NamespacePermission.getEquivalent(permission);
+      if (equivalent != null) {
+        assertTrue(set.remove(equivalent));
+        assertEquals(permission.name(), equivalent.name());
+      }
     }
+    assertEquals(EnumSet.of(NamespacePermission.ALTER_NAMESPACE, 
NamespacePermission.DROP_NAMESPACE,
+        NamespacePermission.CREATE_TABLE), set);
+
+    set = EnumSet.allOf(NamespacePermission.class);
     for (SystemPermission permission : SystemPermission.values()) {
       if (permission == SystemPermission.GRANT) {
         assertThrows(IllegalArgumentException.class,
             () -> NamespacePermission.getEquivalent(permission), "GRANT has no 
equivalent");
       } else {
-        set.remove(NamespacePermission.getEquivalent(permission));
+        var equivalent = NamespacePermission.getEquivalent(permission);
+        if (equivalent != null) {
+          assertTrue(set.remove(equivalent));
+          assertEquals(permission.name(), equivalent.name());
+        }
+
       }
     }
-
-    assertTrue(set.isEmpty(),
-        "All namespace permissions should have equivalent table or system 
permissions.");
+    assertEquals(EnumSet.of(NamespacePermission.READ, 
NamespacePermission.WRITE,

Review Comment:
   A comment to explain that these do not have an equivalent would be good.



##########
core/src/test/java/org/apache/accumulo/core/security/NamespacePermissionsTest.java:
##########
@@ -31,18 +32,30 @@ public void testEnsureEquivalencies() {
     EnumSet<NamespacePermission> set = 
EnumSet.allOf(NamespacePermission.class);
 
     for (TablePermission permission : TablePermission.values()) {
-      set.remove(NamespacePermission.getEquivalent(permission));
+      var equivalent = NamespacePermission.getEquivalent(permission);
+      if (equivalent != null) {
+        assertTrue(set.remove(equivalent));
+        assertEquals(permission.name(), equivalent.name());

Review Comment:
   This might hold coincidentally, but I don't think it's necessarily true. 
Part of the reason for this method was that there may not actually be a direct 
equivalent for something with the same name. For example, consider "ALTER"... 
the ability to alter the nature of a namespace is not the same as being able to 
alter the tables within that namespace, although one might imply the other. 
More likely, though, `NamespacePermission.WRITE` could hypothetically be used 
to imply `TablePermission.ALTER`. In this case, though, we explicitly have 
`ALTER_NAMESPACE` and `ALTER_TABLE` to distinguish between these. So, my 
example isn't perfect.
   
   I think this is probably okay to assert here, but it raises the question of 
why we're bothering to look up the equivalency, rather than just use the other 
permission type directly. I suppose that question can be answered in the 
future, with additional improvements. This is fine for now.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscr...@accumulo.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to