Skip to content

Commit bf24daf

Browse files
Add unified host integration tests (#756)
## Summary - Adds `UnifiedHostAccountIT`: lists account groups via unified host, gated on `UNIFIED_HOST` env var - Adds `UnifiedHostWorkspaceIT`: calls `currentUser().me()` via unified host with workspace ID, gated on `UNIFIED_HOST` and `TEST_WORKSPACE_ID` env vars ## Test plan - [ ] CI passes - [ ] Tests are skipped when `UNIFIED_HOST` is not set - [ ] Tests pass when `UNIFIED_HOST` is set to a valid unified host This pull request was AI-assisted by Isaac.
1 parent 69918b1 commit bf24daf

2 files changed

Lines changed: 72 additions & 0 deletions

File tree

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package com.databricks.sdk.integration;
2+
3+
import com.databricks.sdk.AccountClient;
4+
import com.databricks.sdk.core.DatabricksConfig;
5+
import com.databricks.sdk.integration.framework.EnvContext;
6+
import com.databricks.sdk.integration.framework.EnvTest;
7+
import com.databricks.sdk.service.iam.Group;
8+
import com.databricks.sdk.service.iam.ListAccountGroupsRequest;
9+
import org.junit.jupiter.api.Test;
10+
import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable;
11+
import org.junit.jupiter.api.extension.ExtendWith;
12+
13+
@EnvContext("account")
14+
@ExtendWith(EnvTest.class)
15+
@EnabledIfEnvironmentVariable(named = "UNIFIED_HOST", matches = ".+")
16+
public class UnifiedHostAccountIT {
17+
@Test
18+
void listGroups(AccountClient a) {
19+
String unifiedHost = System.getenv("UNIFIED_HOST");
20+
DatabricksConfig cfg = a.config();
21+
cfg.setHost(unifiedHost);
22+
23+
Iterable<Group> groups = a.groups().list(new ListAccountGroupsRequest());
24+
assert groups.iterator().hasNext();
25+
}
26+
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package com.databricks.sdk.integration;
2+
3+
import static org.junit.jupiter.api.Assertions.assertNotNull;
4+
5+
import com.databricks.sdk.AccountClient;
6+
import com.databricks.sdk.WorkspaceClient;
7+
import com.databricks.sdk.core.DatabricksConfig;
8+
import com.databricks.sdk.integration.framework.EnvContext;
9+
import com.databricks.sdk.integration.framework.EnvOrSkip;
10+
import com.databricks.sdk.integration.framework.EnvTest;
11+
import com.databricks.sdk.service.iam.User;
12+
import org.junit.jupiter.api.Test;
13+
import org.junit.jupiter.api.condition.DisabledIfEnvironmentVariable;
14+
import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable;
15+
import org.junit.jupiter.api.extension.ExtendWith;
16+
17+
@EnvContext("account")
18+
@ExtendWith(EnvTest.class)
19+
@EnabledIfEnvironmentVariable(named = "UNIFIED_HOST", matches = ".+")
20+
public class UnifiedHostWorkspaceIT {
21+
// google-credentials uses a GCP ID token with target_audience=cfg.host.
22+
// On the unified host this produces the same token for both account and workspace
23+
// requests (identical OIDC exchange, identical audience). Account-level APIs accept
24+
// this token, but workspace-level APIs return 401. The X-Databricks-Org-Id header
25+
// is set correctly. This appears to be a server-side limitation on unified hosts.
26+
@Test
27+
@DisabledIfEnvironmentVariable(named = "CLOUD_PROVIDER", matches = "GCP")
28+
void currentUserMe(
29+
AccountClient a,
30+
@EnvOrSkip("UNIFIED_HOST") String unifiedHost,
31+
@EnvOrSkip("TEST_WORKSPACE_ID") String workspaceId,
32+
@EnvOrSkip("TEST_ACCOUNT_ID") String accountId) {
33+
DatabricksConfig config =
34+
new DatabricksConfig()
35+
.setHost(unifiedHost)
36+
.setClientId(a.config().getClientId())
37+
.setClientSecret(a.config().getClientSecret())
38+
.setWorkspaceId(workspaceId)
39+
.setAccountId(accountId);
40+
41+
WorkspaceClient ws = new WorkspaceClient(config);
42+
43+
User me = ws.currentUser().me();
44+
assertNotNull(me.getUserName(), "Expected non-empty UserName");
45+
}
46+
}

0 commit comments

Comments
 (0)