Skip to content

Commit c4a6eae

Browse files
authored
Migrate token authorization to new fixtures (#175)
1 parent 6a4a5f5 commit c4a6eae

File tree

3 files changed

+14
-57
lines changed

3 files changed

+14
-57
lines changed

src/databricks/labs/ucx/providers/mixins/fixtures.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,8 +131,7 @@ def _path(ws, path):
131131
[PermissionLevel.CAN_READ, PermissionLevel.CAN_RUN, PermissionLevel.CAN_EDIT, PermissionLevel.CAN_MANAGE],
132132
_path,
133133
),
134-
("tokens_authorization", "authorization", [PermissionLevel.CAN_USE], _simple),
135-
("passwords_authorization", "authorization", [PermissionLevel.CAN_USE], _simple),
134+
("authorization", "authorization", [PermissionLevel.CAN_USE], _simple),
136135
(
137136
"warehouse",
138137
"sql/warehouses",

tests/integration/conftest.py

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -234,24 +234,6 @@ def instance_profiles(env: EnvironmentInfo, ws: WorkspaceClient) -> list[Instanc
234234
logger.debug("Test instance profiles deleted")
235235

236236

237-
@pytest.fixture
238-
def tokens(ws: WorkspaceClient, env: EnvironmentInfo) -> list[AccessControlRequest]:
239-
logger.debug("Adding token-level permissions to groups")
240-
241-
token_permissions = [
242-
AccessControlRequest(group_name=ws_group.display_name, permission_level=PermissionLevel.CAN_USE)
243-
for ws_group, _ in random.sample(env.groups, k=min(len(env.groups), NUM_TEST_TOKENS))
244-
]
245-
246-
ws.permissions.update(
247-
request_object_type=RequestObjectType.AUTHORIZATION,
248-
request_object_id="tokens",
249-
access_control_list=token_permissions,
250-
)
251-
252-
yield token_permissions
253-
254-
255237
@pytest.fixture
256238
def workspace_objects(ws: WorkspaceClient, env: EnvironmentInfo) -> WorkspaceObjects:
257239
logger.info(f"Creating test workspace objects under /{env.test_uid}")
@@ -309,12 +291,10 @@ def workspace_objects(ws: WorkspaceClient, env: EnvironmentInfo) -> WorkspaceObj
309291

310292
@pytest.fixture
311293
def verifiable_objects(
312-
tokens,
313294
workspace_objects,
314295
) -> list[tuple[list, str, RequestObjectType | None]]:
315296
_verifiable_objects = [
316297
(workspace_objects, "workspace_objects", None),
317-
(tokens, "tokens", RequestObjectType.AUTHORIZATION),
318298
]
319299
yield _verifiable_objects
320300

tests/integration/test_e2e.py

Lines changed: 13 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,8 @@
55

66
import pytest
77
from databricks.sdk import WorkspaceClient
8-
from databricks.sdk.service import workspace
9-
from databricks.sdk.service.iam import (
10-
AccessControlRequest,
11-
AccessControlResponse,
12-
Permission,
13-
PermissionLevel,
14-
)
8+
from databricks.sdk.service import iam, workspace
9+
from databricks.sdk.service.iam import PermissionLevel
1510
from pyspark.errors import AnalysisException
1611

1712
from databricks.labs.ucx.config import (
@@ -72,33 +67,6 @@ def _verify_group_permissions(
7267
toolkit.permissions_manager.verify_applied_scope_acls(
7368
scope_name, toolkit.group_manager.migration_groups_provider, target
7469
)
75-
76-
elif id_attribute in ("tokens", "passwords"):
77-
_typed_objects: list[AccessControlRequest] = objects
78-
ws_permissions = [
79-
AccessControlResponse(
80-
all_permissions=[
81-
Permission(permission_level=o.permission_level, inherited=False, inherited_from_object=None)
82-
],
83-
group_name=o.group_name,
84-
)
85-
for o in _typed_objects
86-
]
87-
88-
target_permissions = list(
89-
filter(
90-
lambda p: p.group_name
91-
in [getattr(g, target).display_name for g in toolkit.group_manager.migration_groups_provider.groups],
92-
ws.permissions.get(
93-
request_object_type=request_object_type, request_object_id=id_attribute
94-
).access_control_list,
95-
)
96-
)
97-
98-
sorted_ws = sorted(ws_permissions, key=lambda p: p.group_name)
99-
sorted_target = sorted(target_permissions, key=lambda p: p.group_name)
100-
101-
assert [p.all_permissions for p in sorted_ws] == [p.all_permissions for p in sorted_target]
10270
else:
10371
for _object in objects:
10472
toolkit.permissions_manager.verify_applied_permissions(
@@ -146,6 +114,7 @@ def test_e2e(
146114
make_pipeline_permissions,
147115
make_secret_scope,
148116
make_secret_scope_acl,
117+
make_authorization_permissions,
149118
make_warehouse,
150119
make_warehouse_permissions,
151120
):
@@ -196,7 +165,7 @@ def test_e2e(
196165
group_name=ws_group.display_name,
197166
)
198167
verifiable_objects.append(
199-
([model], "experiment_id", RequestObjectType.EXPERIMENTS),
168+
([model], "id", RequestObjectType.REGISTERED_MODELS),
200169
)
201170

202171
experiment = make_experiment()
@@ -237,6 +206,15 @@ def test_e2e(
237206
make_secret_scope_acl(scope=scope, principal=ws_group.display_name, permission=workspace.AclPermission.WRITE)
238207
verifiable_objects.append(([scope], "secret_scopes", None))
239208

209+
make_authorization_permissions(
210+
object_id="tokens",
211+
permission_level=PermissionLevel.CAN_USE,
212+
group_name=ws_group.display_name,
213+
)
214+
verifiable_objects.append(
215+
([iam.ObjectPermissions(object_id="tokens")], "object_id", RequestObjectType.AUTHORIZATION)
216+
)
217+
240218
warehouse = make_warehouse()
241219
make_warehouse_permissions(
242220
object_id=warehouse.id,

0 commit comments

Comments
 (0)