This is an automated email from the ASF dual-hosted git repository.

collado pushed a commit to branch mcollado-catalog-admin-revoke
in repository https://gitbox.apache.org/repos/asf/polaris.git


The following commit(s) were added to refs/heads/mcollado-catalog-admin-revoke 
by this push:
     new b75d424802 Fixed name collisions in integration test
b75d424802 is described below

commit b75d424802349347c5a788f3e40efafd8c7c2f20
Author: Michael Collado <[email protected]>
AuthorDate: Mon Mar 9 16:02:30 2026 -0700

    Fixed name collisions in integration test
---
 .../PolarisManagementServiceIntegrationTest.java   | 35 ++++++++++++----------
 1 file changed, 19 insertions(+), 16 deletions(-)

diff --git 
a/integration-tests/src/main/java/org/apache/polaris/service/it/test/PolarisManagementServiceIntegrationTest.java
 
b/integration-tests/src/main/java/org/apache/polaris/service/it/test/PolarisManagementServiceIntegrationTest.java
index 532f7b6838..822fd5c04d 100644
--- 
a/integration-tests/src/main/java/org/apache/polaris/service/it/test/PolarisManagementServiceIntegrationTest.java
+++ 
b/integration-tests/src/main/java/org/apache/polaris/service/it/test/PolarisManagementServiceIntegrationTest.java
@@ -1752,12 +1752,12 @@ public class PolarisManagementServiceIntegrationTest {
 
     // Create a second principal role. Use the catalog admin principal to list 
principal roles and
     // grant a catalog role to the new principal role
-    String principalRoleName2 = "mypr2";
+    String principalRoleName2 = 
client.newEntityName("mypr2_catalog_admin_grant_revoke");
     PrincipalRole principalRole2 = new PrincipalRole(principalRoleName2);
     managementApi.createPrincipalRole(principalRole2);
 
     // create a catalog role and grant it manage_content privilege
-    String catalogRoleName = "mycr1";
+    String catalogRoleName = 
client.newEntityName("mycr1_catalog_admin_grant_revoke");
     client.managementApi(catalogAdminToken).createCatalogRole(catalogName, 
catalogRoleName);
 
     CatalogPrivilege privilege = CatalogPrivilege.CATALOG_MANAGE_CONTENT;
@@ -1861,7 +1861,7 @@ public class PolarisManagementServiceIntegrationTest {
 
     String catalogAdminToken = client.obtainToken(catalogAdminPrincipal);
 
-    // service_admin revokes the catalog_admin privilege from its principal 
role
+    // service_admin revokes the catalog_admin privilege from its own 
principal role
     try {
       try (Response response =
           managementApi
@@ -1874,10 +1874,11 @@ public class PolarisManagementServiceIntegrationTest {
             .returns(Response.Status.NO_CONTENT.getStatusCode(), 
Response::getStatus);
       }
 
-      // the service_admin can not revoke the catalog_admin privilege from the 
new principal role
+      // After revoking its own catalog_admin, service_admin can no longer 
revoke the
+      // catalog_admin privilege from the new principal role because it no 
longer has
+      // CATALOG_ROLE_MANAGE_GRANTS_ON_SECURABLE (which comes from having 
catalog_admin)
       try (Response response =
-          client
-              .managementApi(catalogAdminToken)
+          managementApi
               .request(
                   "v1/principal-roles/"
                       + principalRoleName
@@ -1929,7 +1930,7 @@ public class PolarisManagementServiceIntegrationTest {
     managementApi.createCatalog(catalog2);
 
     // create a catalog role *in the second catalog* and grant it 
manage_content privilege
-    String catalogRoleName = "mycr1";
+    String catalogRoleName = client.newEntityName("mycr1_wrong_catalog");
     managementApi.createCatalogRole(catalogName2, catalogRoleName);
 
     // Get the catalog admin role from the *first* catalog and grant that role 
to the principal role
@@ -1981,7 +1982,8 @@ public class PolarisManagementServiceIntegrationTest {
     managementApi.createCatalog(catalog);
 
     // create a valid target CatalogRole in this catalog
-    managementApi.createCatalogRole(catalogName, "target_catalog_role");
+    String targetCatalogRoleName = client.newEntityName("target_catalog_role");
+    managementApi.createCatalogRole(catalogName, targetCatalogRoleName);
 
     // create a second catalog
     String catalogName2 = client.newEntityName("anothertablemanagecatalog");
@@ -1995,17 +1997,18 @@ public class PolarisManagementServiceIntegrationTest {
     managementApi.createCatalog(catalog2);
 
     // create an *invalid* target CatalogRole in second catalog
-    managementApi.createCatalogRole(catalogName2, 
"invalid_target_catalog_role");
+    String invalidTargetCatalogRoleName = 
client.newEntityName("invalid_target_catalog_role");
+    managementApi.createCatalogRole(catalogName2, 
invalidTargetCatalogRoleName);
 
     // create the namespace "c" in *both* namespaces
-    String namespaceName = "c";
+    String namespaceName = client.newEntityName("c");
     catalogApi.createNamespace(catalogName, namespaceName);
     catalogApi.createNamespace(catalogName2, namespaceName);
 
     // create a catalog role *in the first catalog* and grant it 
manage_content privilege at the
     // namespace level
     // grant that role to the PrincipalRole
-    String catalogRoleName = "ns_manage_access_role";
+    String catalogRoleName = client.newEntityName("ns_manage_access_role");
     managementApi.createCatalogRole(catalogName, catalogRoleName);
     managementApi.addGrant(
         catalogName,
@@ -2034,7 +2037,7 @@ public class PolarisManagementServiceIntegrationTest {
         .managementApi(manageAccessUserToken)
         .addGrant(
             catalogName,
-            "target_catalog_role",
+            targetCatalogRoleName,
             new NamespaceGrant(
                 List.of(namespaceName),
                 NamespacePrivilege.TABLE_CREATE,
@@ -2050,7 +2053,7 @@ public class PolarisManagementServiceIntegrationTest {
             .managementApi(manageAccessUserToken)
             .request("v1/principal-roles/" + principalRoleName + 
"/catalog-roles/" + catalogName)
             .put(
-                Entity.json(new GrantCatalogRoleRequest(new 
CatalogRole("target_catalog_role"))))) {
+                Entity.json(new GrantCatalogRoleRequest(new 
CatalogRole(targetCatalogRoleName))))) {
       assertThat(response).returns(FORBIDDEN.getStatusCode(), 
Response::getStatus);
     }
 
@@ -2060,7 +2063,7 @@ public class PolarisManagementServiceIntegrationTest {
             .managementApi(manageAccessUserToken)
             .request(
                 "v1/catalogs/{cat}/catalog-roles/{role}/grants",
-                Map.of("cat", catalogName, "role", "target_catalog_role"))
+                Map.of("cat", catalogName, "role", targetCatalogRoleName))
             .put(
                 Entity.json(
                     new CatalogGrant(
@@ -2076,7 +2079,7 @@ public class PolarisManagementServiceIntegrationTest {
             .managementApi(manageAccessUserToken)
             .request(
                 "v1/catalogs/{cat}/catalog-roles/{role}/grants",
-                Map.of("cat", catalogName2, "role", 
"invalid_target_catalog_role"))
+                Map.of("cat", catalogName2, "role", 
invalidTargetCatalogRoleName))
             .put(
                 Entity.json(
                     new NamespaceGrant(
@@ -2092,7 +2095,7 @@ public class PolarisManagementServiceIntegrationTest {
             .managementApi(manageAccessUserToken)
             .request(
                 "v1/catalogs/{cat}/catalog-roles/{role}/grants",
-                Map.of("cat", catalogName2, "role", 
"invalid_target_catalog_role"))
+                Map.of("cat", catalogName2, "role", 
invalidTargetCatalogRoleName))
             .put(
                 Entity.json(
                     new CatalogGrant(

Reply via email to