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()