From 1ca7262474725376d432f4d6003cea29e3a51eb5 Mon Sep 17 00:00:00 2001 From: Hector Castejon Diaz Date: Thu, 9 Apr 2026 14:22:13 +0000 Subject: [PATCH 1/3] Add integration tests for unified host API calls Co-authored-by: Isaac --- .../sdk/integration/UnifiedHostAccountIT.java | 26 +++++++++++++ .../integration/UnifiedHostWorkspaceIT.java | 37 +++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 databricks-sdk-java/src/test/java/com/databricks/sdk/integration/UnifiedHostAccountIT.java create mode 100644 databricks-sdk-java/src/test/java/com/databricks/sdk/integration/UnifiedHostWorkspaceIT.java diff --git a/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/UnifiedHostAccountIT.java b/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/UnifiedHostAccountIT.java new file mode 100644 index 000000000..a102edfc2 --- /dev/null +++ b/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/UnifiedHostAccountIT.java @@ -0,0 +1,26 @@ +package com.databricks.sdk.integration; + +import com.databricks.sdk.AccountClient; +import com.databricks.sdk.core.DatabricksConfig; +import com.databricks.sdk.integration.framework.EnvContext; +import com.databricks.sdk.integration.framework.EnvTest; +import com.databricks.sdk.service.iam.Group; +import com.databricks.sdk.service.iam.ListAccountGroupsRequest; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable; +import org.junit.jupiter.api.extension.ExtendWith; + +@EnvContext("account") +@ExtendWith(EnvTest.class) +@EnabledIfEnvironmentVariable(named = "UNIFIED_HOST", matches = ".+") +public class UnifiedHostAccountIT { + @Test + void listGroups(AccountClient a) { + String unifiedHost = System.getenv("UNIFIED_HOST"); + DatabricksConfig cfg = a.config(); + cfg.setHost(unifiedHost); + + Iterable groups = a.groups().list(new ListAccountGroupsRequest()); + assert groups.iterator().hasNext(); + } +} diff --git a/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/UnifiedHostWorkspaceIT.java b/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/UnifiedHostWorkspaceIT.java new file mode 100644 index 000000000..6c5bddc9c --- /dev/null +++ b/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/UnifiedHostWorkspaceIT.java @@ -0,0 +1,37 @@ +package com.databricks.sdk.integration; + +import static org.junit.jupiter.api.Assertions.assertNotNull; + +import com.databricks.sdk.AccountClient; +import com.databricks.sdk.WorkspaceClient; +import com.databricks.sdk.core.DatabricksConfig; +import com.databricks.sdk.integration.framework.EnvContext; +import com.databricks.sdk.integration.framework.EnvOrSkip; +import com.databricks.sdk.integration.framework.EnvTest; +import com.databricks.sdk.service.iam.User; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable; +import org.junit.jupiter.api.extension.ExtendWith; + +@EnvContext("ucacct") +@ExtendWith(EnvTest.class) +@EnabledIfEnvironmentVariable(named = "UNIFIED_HOST", matches = ".+") +public class UnifiedHostWorkspaceIT { + @Test + void currentUserMe( + AccountClient a, + @EnvOrSkip("UNIFIED_HOST") String unifiedHost, + @EnvOrSkip("TEST_WORKSPACE_ID") String workspaceId) { + DatabricksConfig config = + new DatabricksConfig() + .setHost(unifiedHost) + .setClientId(a.config().getClientId()) + .setClientSecret(a.config().getClientSecret()) + .setWorkspaceId(workspaceId); + + WorkspaceClient ws = new WorkspaceClient(config); + + User me = ws.currentUser().me(); + assertNotNull(me.getUserName(), "Expected non-empty UserName"); + } +} From b543819ee53364778b0cd449c7c297187ddbcc6d Mon Sep 17 00:00:00 2001 From: Hector Castejon Diaz Date: Thu, 9 Apr 2026 14:37:33 +0000 Subject: [PATCH 2/3] Use account-level env context and add account_id for unified host workspace test Co-authored-by: Isaac --- .../sdk/integration/UnifiedHostWorkspaceIT.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/UnifiedHostWorkspaceIT.java b/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/UnifiedHostWorkspaceIT.java index 6c5bddc9c..adb48f957 100644 --- a/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/UnifiedHostWorkspaceIT.java +++ b/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/UnifiedHostWorkspaceIT.java @@ -13,7 +13,7 @@ import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable; import org.junit.jupiter.api.extension.ExtendWith; -@EnvContext("ucacct") +@EnvContext("account") @ExtendWith(EnvTest.class) @EnabledIfEnvironmentVariable(named = "UNIFIED_HOST", matches = ".+") public class UnifiedHostWorkspaceIT { @@ -21,13 +21,15 @@ public class UnifiedHostWorkspaceIT { void currentUserMe( AccountClient a, @EnvOrSkip("UNIFIED_HOST") String unifiedHost, - @EnvOrSkip("TEST_WORKSPACE_ID") String workspaceId) { + @EnvOrSkip("TEST_WORKSPACE_ID") String workspaceId, + @EnvOrSkip("TEST_ACCOUNT_ID") String accountId) { DatabricksConfig config = new DatabricksConfig() .setHost(unifiedHost) .setClientId(a.config().getClientId()) .setClientSecret(a.config().getClientSecret()) - .setWorkspaceId(workspaceId); + .setWorkspaceId(workspaceId) + .setAccountId(accountId); WorkspaceClient ws = new WorkspaceClient(config); From 80c67690b406a5c81bcd5e5ef5f9c5ddf09b97f2 Mon Sep 17 00:00:00 2001 From: Hector Castejon Diaz Date: Thu, 9 Apr 2026 14:53:47 +0000 Subject: [PATCH 3/3] Skip unified host workspace test on GCP due to server-side limitation Co-authored-by: Isaac --- .../databricks/sdk/integration/UnifiedHostWorkspaceIT.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/UnifiedHostWorkspaceIT.java b/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/UnifiedHostWorkspaceIT.java index adb48f957..933b6f22f 100644 --- a/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/UnifiedHostWorkspaceIT.java +++ b/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/UnifiedHostWorkspaceIT.java @@ -10,6 +10,7 @@ import com.databricks.sdk.integration.framework.EnvTest; import com.databricks.sdk.service.iam.User; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.condition.DisabledIfEnvironmentVariable; import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable; import org.junit.jupiter.api.extension.ExtendWith; @@ -17,7 +18,13 @@ @ExtendWith(EnvTest.class) @EnabledIfEnvironmentVariable(named = "UNIFIED_HOST", matches = ".+") public class UnifiedHostWorkspaceIT { + // google-credentials uses a GCP ID token with target_audience=cfg.host. + // On the unified host this produces the same token for both account and workspace + // requests (identical OIDC exchange, identical audience). Account-level APIs accept + // this token, but workspace-level APIs return 401. The X-Databricks-Org-Id header + // is set correctly. This appears to be a server-side limitation on unified hosts. @Test + @DisabledIfEnvironmentVariable(named = "CLOUD_PROVIDER", matches = "GCP") void currentUserMe( AccountClient a, @EnvOrSkip("UNIFIED_HOST") String unifiedHost,