adutra commented on code in PR #590:
URL: https://github.com/apache/polaris/pull/590#discussion_r1910233150


##########
integration-tests/src/main/java/org/apache/polaris/service/it/test/PolarisManagementServiceIntegrationTest.java:
##########
@@ -76,184 +65,86 @@
 import org.apache.polaris.core.admin.model.PrincipalRole;
 import org.apache.polaris.core.admin.model.PrincipalRoles;
 import org.apache.polaris.core.admin.model.PrincipalWithCredentials;
-import org.apache.polaris.core.admin.model.PrincipalWithCredentialsCredentials;
 import org.apache.polaris.core.admin.model.Principals;
 import org.apache.polaris.core.admin.model.StorageConfigInfo;
 import org.apache.polaris.core.admin.model.UpdateCatalogRequest;
 import org.apache.polaris.core.admin.model.UpdateCatalogRoleRequest;
 import org.apache.polaris.core.admin.model.UpdatePrincipalRequest;
 import org.apache.polaris.core.admin.model.UpdatePrincipalRoleRequest;
 import org.apache.polaris.core.entity.PolarisEntityConstants;
-import org.apache.polaris.core.entity.PolarisPrincipalSecrets;
-import org.apache.polaris.service.auth.BasePolarisAuthenticator;
-import org.apache.polaris.service.dropwizard.PolarisApplication;
-import org.apache.polaris.service.dropwizard.auth.TokenUtils;
-import org.apache.polaris.service.dropwizard.config.PolarisApplicationConfig;
-import org.apache.polaris.service.dropwizard.test.PolarisConnectionExtension;
-import org.apache.polaris.service.dropwizard.test.PolarisRealm;
-import org.apache.polaris.service.dropwizard.test.TestEnvironmentExtension;
+import org.apache.polaris.service.it.env.CatalogApi;
+import org.apache.polaris.service.it.env.ClientCredentials;
+import org.apache.polaris.service.it.env.ManagementApi;
+import org.apache.polaris.service.it.env.PolarisApiEndpoints;
+import org.apache.polaris.service.it.env.PolarisClient;
+import org.apache.polaris.service.it.ext.PolarisIntegrationTestExtension;
 import org.assertj.core.api.InstanceOfAssertFactories;
+import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
-import org.slf4j.LoggerFactory;
 import org.testcontainers.shaded.org.awaitility.Awaitility;
 
-@ExtendWith({
-  DropwizardExtensionsSupport.class,
-  TestEnvironmentExtension.class,
-  PolarisConnectionExtension.class
-})
-public class PolarisServiceImplIntegrationTest {
+@ExtendWith(PolarisIntegrationTestExtension.class)
+public class PolarisManagementServiceIntegrationTest {
   private static final int MAX_IDENTIFIER_LENGTH = 256;
   private static final String ISSUER_KEY = "polaris";
   private static final String CLAIM_KEY_ACTIVE = "active";
   private static final String CLAIM_KEY_CLIENT_ID = "client_id";
   private static final String CLAIM_KEY_PRINCIPAL_ID = "principalId";
   private static final String CLAIM_KEY_SCOPE = "scope";
 
-  // TODO: Add a test-only hook that fully clobbers all persistence state so 
we can have a fresh
-  // slate on every test case; otherwise, leftover state from one test from 
failures will interfere
-  // with other test cases.
-  private static final DropwizardAppExtension<PolarisApplicationConfig> EXT =
-      new DropwizardAppExtension<>(
-          PolarisApplication.class,
-          
ResourceHelpers.resourceFilePath("polaris-server-integrationtest.yml"),
-          ConfigOverride.config(
-              "server.applicationConnectors[0].port",
-              "0"), // Bind to random port to support parallelism
-          ConfigOverride.config("server.adminConnectors[0].port", "0"),
-          ConfigOverride.config("gcp_credentials.access_token", "abc"),
-          ConfigOverride.config("gcp_credentials.expires_in", "12345"));
-  private static String userToken;
-  private static String realm;
-  private static String clientId;
+  private static PolarisClient client;
+  private static ManagementApi managementApi;
+  private static CatalogApi catalogApi;
+  private static ClientCredentials rootCredentials;
 
   @BeforeAll
-  public static void setup(
-      PolarisConnectionExtension.PolarisToken adminToken,
-      PolarisPrincipalSecrets adminSecrets,
-      @PolarisRealm String polarisRealm)
-      throws IOException {
-    userToken = adminToken.token();
-    realm = polarisRealm;
-    clientId = adminSecrets.getPrincipalClientId();
-    // Set up test location
-    PolarisConnectionExtension.createTestDir(realm);
+  public static void setup(PolarisApiEndpoints endpoints, ClientCredentials 
credentials) {
+    client = polarisClient(endpoints);
+    managementApi = client.managementApi(credentials);
+    catalogApi = client.catalogApi(credentials);
+    rootCredentials = credentials;
+  }
+
+  @AfterAll
+  public static void close() throws Exception {
+    client.close();
   }
 
   @AfterEach
   public void tearDown() {
-    try (Response response = 
newRequest("http://localhost:%d/api/management/v1/catalogs";).get()) {
-      response
-          .readEntity(Catalogs.class)
-          .getCatalogs()
-          .forEach(
-              catalog -> {
-                // clean up the catalog before we try to drop it
-
-                // delete all the namespaces
-                try (Response res =
-                    newRequest(
-                            "http://localhost:%d/api/catalog/v1/";
-                                + catalog.getName()
-                                + "/namespaces")
-                        .get()) {
-                  if (res.getStatus() != Response.Status.OK.getStatusCode()) {
-                    LoggerFactory.getLogger(getClass())
-                        .warn(
-                            "Unable to list namespaces in catalog {}: {}",
-                            catalog.getName(),
-                            res.readEntity(String.class));
-                  } else {
-                    res.readEntity(ListNamespacesResponse.class)
-                        .namespaces()
-                        .forEach(
-                            namespace -> {
-                              newRequest(
-                                      "http://localhost:%d/api/catalog/v1/";
-                                          + catalog.getName()
-                                          + "/namespaces/"
-                                          + 
RESTUtil.encodeNamespace(namespace))
-                                  .delete()
-                                  .close();
-                            });
-                  }
-                }
-
-                // delete all the catalog roles except catalog_admin
-                try (Response res =
-                    newRequest(
-                            "http://localhost:%d/api/management/v1/catalogs/";
-                                + catalog.getName()
-                                + "/catalog-roles")
-                        .get()) {
-                  if (res.getStatus() != Response.Status.OK.getStatusCode()) {
-                    LoggerFactory.getLogger(getClass())
-                        .warn(
-                            "Unable to list catalog roles for catalog {}: {}",
-                            catalog.getName(),
-                            res.readEntity(String.class));
-                    return;
-                  }
-                  res.readEntity(CatalogRoles.class).getRoles().stream()
-                      .filter(cr -> !cr.getName().equals("catalog_admin"))
-                      .forEach(
-                          cr ->
-                              newRequest(
-                                      
"http://localhost:%d/api/management/v1/catalogs/";
-                                          + catalog.getName()
-                                          + "/catalog-roles/"
-                                          + cr.getName())
-                                  .delete()
-                                  .close());
-                }
-
-                Response deleteResponse =
-                    newRequest(
-                            "http://localhost:%d/api/management/v1/catalogs/"; 
+ catalog.getName())
-                        .delete();
-                if (deleteResponse.getStatus() != 
Response.Status.NO_CONTENT.getStatusCode()) {
-                  LoggerFactory.getLogger(getClass())
-                      .warn(
-                          "Unable to delete catalog {}: {}",
-                          catalog.getName(),
-                          deleteResponse.readEntity(String.class));
-                }
-                deleteResponse.close();
-              });
-    }
-    try (Response response = 
newRequest("http://localhost:%d/api/management/v1/principals";).get()) {
-      response.readEntity(Principals.class).getPrincipals().stream()
-          .filter(
-              principal ->
-                  
!principal.getName().equals(PolarisEntityConstants.getRootPrincipalName()))
-          .forEach(
-              principal -> {
-                newRequest(
-                        "http://localhost:%d/api/management/v1/principals/"; + 
principal.getName())
-                    .delete()
-                    .close();
-              });
-    }
-    try (Response response =
-        
newRequest("http://localhost:%d/api/management/v1/principal-roles";).get()) {
-      response.readEntity(PrincipalRoles.class).getRoles().stream()
-          .filter(
-              principalRole ->
-                  !principalRole
-                      .getName()
-                      
.equals(PolarisEntityConstants.getNameOfPrincipalServiceAdminRole()))
-          .forEach(
-              principalRole -> {
-                newRequest(
-                        
"http://localhost:%d/api/management/v1/principal-roles/";
-                            + principalRole.getName())
-                    .delete()
-                    .close();
-              });
-    }
+    managementApi
+        .listCatalogs()
+        .forEach(
+            catalog -> {
+              // clean up the catalog before we try to drop it
+              // delete all the namespaces
+              catalogApi
+                  .listNamespaces(catalog.getName())
+                  .forEach(namespace -> 
catalogApi.deleteNamespaces(catalog.getName(), namespace));

Review Comment:
   Somehow it's working 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: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to