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

adutra pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/polaris.git


The following commit(s) were added to refs/heads/main by this push:
     new 7b6820298 chore(test): Restore PolarisAccessManager (#2413)
7b6820298 is described below

commit 7b6820298e581458875f8b89ad9e84940b57aee5
Author: Dmitri Bourlatchkov <dmitri.bourlatch...@gmail.com>
AuthorDate: Thu Aug 21 04:49:40 2025 -0400

    chore(test): Restore PolarisAccessManager (#2413)
    
    Restore `PolarisAccessManager` (with default implementation
    of `IcebergTokenAccessManager`) which was added as an extension
    point for running Polaris tests in downstream build environments
    under #789, but was mistakenly removed in #2343
---
 .../service/it/env/IcebergTokenAccessManager.java  | 43 ++++++++++++++++++++++
 .../polaris/service/it/env/PolarisClient.java      |  3 +-
 .../service/it/ext/PolarisAccessManager.java       | 27 ++++++++++++++
 .../service/it/ext/PolarisServerManager.java       |  5 +++
 4 files changed, 76 insertions(+), 2 deletions(-)

diff --git 
a/integration-tests/src/main/java/org/apache/polaris/service/it/env/IcebergTokenAccessManager.java
 
b/integration-tests/src/main/java/org/apache/polaris/service/it/env/IcebergTokenAccessManager.java
new file mode 100644
index 000000000..ca6fda298
--- /dev/null
+++ 
b/integration-tests/src/main/java/org/apache/polaris/service/it/env/IcebergTokenAccessManager.java
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 org.apache.polaris.service.it.env;
+
+import jakarta.ws.rs.client.Client;
+import org.apache.polaris.service.it.ext.PolarisAccessManager;
+
+/**
+ * This class obtains access tokens from the {@code v1/oauth/tokens} endpoint 
defined by the Iceberg
+ * REST Catalog spec.
+ *
+ * <p>Note: even though this endpoint is still part of the Iceberg REST 
Catalog spec it has been
+ * deprecated per <a 
href="https://github.com/apache/iceberg/pull/10603";>Iceberg PR#10603</a>.
+ */
+public class IcebergTokenAccessManager implements PolarisAccessManager {
+  private final Client client;
+
+  public IcebergTokenAccessManager(Client client) {
+    this.client = client;
+  }
+
+  @Override
+  public String obtainAccessToken(PolarisApiEndpoints endpoints, 
ClientCredentials credentials) {
+    OAuth2Api api = new OAuth2Api(client, endpoints.catalogApiEndpoint(), 
"v1/oauth/tokens");
+    return api.obtainAccessToken(credentials, "PRINCIPAL_ROLE:ALL");
+  }
+}
diff --git 
a/integration-tests/src/main/java/org/apache/polaris/service/it/env/PolarisClient.java
 
b/integration-tests/src/main/java/org/apache/polaris/service/it/env/PolarisClient.java
index 6537b234f..d9b1bfbbb 100644
--- 
a/integration-tests/src/main/java/org/apache/polaris/service/it/env/PolarisClient.java
+++ 
b/integration-tests/src/main/java/org/apache/polaris/service/it/env/PolarisClient.java
@@ -114,8 +114,7 @@ public final class PolarisClient implements AutoCloseable {
 
   /** Requests an access token from the Polaris server for the given 
credentials. */
   public String obtainToken(ClientCredentials credentials) {
-    OAuth2Api api = new OAuth2Api(client, endpoints.catalogApiEndpoint(), 
"v1/oauth/tokens");
-    return api.obtainAccessToken(credentials, "PRINCIPAL_ROLE:ALL");
+    return 
polarisServerManager().accessManager(client).obtainAccessToken(endpoints, 
credentials);
   }
 
   /**
diff --git 
a/integration-tests/src/main/java/org/apache/polaris/service/it/ext/PolarisAccessManager.java
 
b/integration-tests/src/main/java/org/apache/polaris/service/it/ext/PolarisAccessManager.java
new file mode 100644
index 000000000..2104665bd
--- /dev/null
+++ 
b/integration-tests/src/main/java/org/apache/polaris/service/it/ext/PolarisAccessManager.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 org.apache.polaris.service.it.ext;
+
+import org.apache.polaris.service.it.env.ClientCredentials;
+import org.apache.polaris.service.it.env.PolarisApiEndpoints;
+
+public interface PolarisAccessManager {
+
+  String obtainAccessToken(PolarisApiEndpoints endpoints, ClientCredentials 
credentials);
+}
diff --git 
a/integration-tests/src/main/java/org/apache/polaris/service/it/ext/PolarisServerManager.java
 
b/integration-tests/src/main/java/org/apache/polaris/service/it/ext/PolarisServerManager.java
index c23c1f6c9..85e99e0c1 100644
--- 
a/integration-tests/src/main/java/org/apache/polaris/service/it/ext/PolarisServerManager.java
+++ 
b/integration-tests/src/main/java/org/apache/polaris/service/it/ext/PolarisServerManager.java
@@ -25,6 +25,7 @@ import 
com.fasterxml.jackson.jakarta.rs.json.JacksonJsonProvider;
 import jakarta.ws.rs.client.Client;
 import jakarta.ws.rs.client.ClientBuilder;
 import java.util.ServiceLoader;
+import org.apache.polaris.service.it.env.IcebergTokenAccessManager;
 import org.apache.polaris.service.it.env.Server;
 import org.junit.jupiter.api.extension.ExtensionContext;
 
@@ -50,6 +51,10 @@ public interface PolarisServerManager {
    */
   Server serverForContext(ExtensionContext context);
 
+  default PolarisAccessManager accessManager(Client client) {
+    return new IcebergTokenAccessManager(client);
+  }
+
   /** Create a new HTTP client for accessing the server targeted by tests. */
   default Client createClient() {
     return ClientBuilder.newBuilder()

Reply via email to