11import pytest
22from databricks .sdk .errors import InvalidParameterValue
3- from databricks .sdk .service import sql , iam
3+ from databricks .sdk .service import iam
44from databricks .sdk .service .iam import PermissionLevel
5- from databricks .sdk .service .sql import GetResponse
5+ from databricks .sdk .service .sql import GetResponse , ObjectTypePlural , AccessControl
6+ from databricks .sdk .service .sql import PermissionLevel as RedashPermissionLevel
67
78from databricks .labs .pytester .fixtures .baseline import factory
89
@@ -31,18 +32,18 @@ def __repr__(self):
3132
3233
3334class _RedashPermissionsChange :
34- def __init__ (self , object_id : str , before : list [sql . AccessControl ], after : list [sql . AccessControl ]):
35+ def __init__ (self , object_id : str , before : list [AccessControl ], after : list [AccessControl ]):
3536 self .object_id = object_id
3637 self .before = before
3738 self .after = after
3839
3940 @staticmethod
40- def _principal (acr : sql . AccessControl ) -> str :
41+ def _principal (acr : AccessControl ) -> str :
4142 if acr .user_name is not None :
4243 return f"user_name { acr .user_name } "
4344 return f"group_name { acr .group_name } "
4445
45- def _list (self , acl : list [sql . AccessControl ]):
46+ def _list (self , acl : list [AccessControl ]):
4647 return ", " .join (f"{ self ._principal (_ )} { _ .permission_level .value } " for _ in acl )
4748
4849 def __repr__ (self ):
@@ -132,11 +133,11 @@ def remove(change: _PermissionsChange):
132133
133134def _make_redash_permissions_factory (name , resource_type , levels , id_retriever ):
134135 def _non_inherited (acl : GetResponse ):
135- out : list [sql . AccessControl ] = []
136+ out : list [AccessControl ] = []
136137 assert acl .access_control_list is not None
137138 for access_control in acl .access_control_list :
138139 out .append (
139- sql . AccessControl (
140+ AccessControl (
140141 permission_level = access_control .permission_level ,
141142 group_name = access_control .group_name ,
142143 user_name = access_control .user_name ,
@@ -148,10 +149,10 @@ def _make_permissions(ws):
148149 def create (
149150 * ,
150151 object_id : str ,
151- permission_level : sql . PermissionLevel | None = None ,
152+ permission_level : RedashPermissionLevel | None = None ,
152153 group_name : str | None = None ,
153154 user_name : str | None = None ,
154- access_control_list : list [sql . AccessControl ] | None = None ,
155+ access_control_list : list [AccessControl ] | None = None ,
155156 ):
156157 nothing_specified = permission_level is None and access_control_list is None
157158 both_specified = permission_level is not None and access_control_list is not None
@@ -172,14 +173,14 @@ def create(
172173 access_control_list = []
173174 if group_name is not None :
174175 access_control_list .append (
175- sql . AccessControl (
176+ AccessControl (
176177 group_name = group_name ,
177178 permission_level = permission_level ,
178179 )
179180 )
180181 if user_name is not None :
181182 access_control_list .append (
182- sql . AccessControl (
183+ AccessControl (
183184 user_name = user_name ,
184185 permission_level = permission_level ,
185186 )
@@ -190,7 +191,9 @@ def create(
190191
191192 def remove (change : _RedashPermissionsChange ):
192193 ws .dbsql_permissions .set (
193- sql .ObjectTypePlural (resource_type ), change .object_id , access_control_list = change .before
194+ ObjectTypePlural (resource_type ),
195+ change .object_id ,
196+ access_control_list = change .before ,
194197 )
195198
196199 yield from factory (f"{ name } permissions" , create , remove )
@@ -371,38 +374,38 @@ def _path(ws, path):
371374make_dashboard_permissions = pytest .fixture (
372375 _make_redash_permissions_factory (
373376 "dashboard" ,
374- "dashboards" ,
377+ ObjectTypePlural . DASHBOARDS ,
375378 [
376- PermissionLevel .CAN_EDIT ,
377- PermissionLevel .CAN_RUN ,
378- PermissionLevel .CAN_MANAGE ,
379- PermissionLevel .CAN_VIEW ,
379+ RedashPermissionLevel .CAN_EDIT ,
380+ RedashPermissionLevel .CAN_RUN ,
381+ RedashPermissionLevel .CAN_MANAGE ,
382+ RedashPermissionLevel .CAN_VIEW ,
380383 ],
381384 _simple ,
382385 )
383386)
384387make_alert_permissions = pytest .fixture (
385388 _make_redash_permissions_factory (
386389 "alert" ,
387- "alerts" ,
390+ ObjectTypePlural . ALERTS ,
388391 [
389- PermissionLevel .CAN_EDIT ,
390- PermissionLevel .CAN_RUN ,
391- PermissionLevel .CAN_MANAGE ,
392- PermissionLevel .CAN_VIEW ,
392+ RedashPermissionLevel .CAN_EDIT ,
393+ RedashPermissionLevel .CAN_RUN ,
394+ RedashPermissionLevel .CAN_MANAGE ,
395+ RedashPermissionLevel .CAN_VIEW ,
393396 ],
394397 _simple ,
395398 )
396399)
397400make_query_permissions = pytest .fixture (
398401 _make_redash_permissions_factory (
399402 "query" ,
400- "queries" ,
403+ ObjectTypePlural . QUERIES ,
401404 [
402- PermissionLevel .CAN_EDIT ,
403- PermissionLevel .CAN_RUN ,
404- PermissionLevel .CAN_MANAGE ,
405- PermissionLevel .CAN_VIEW ,
405+ RedashPermissionLevel .CAN_EDIT ,
406+ RedashPermissionLevel .CAN_RUN ,
407+ RedashPermissionLevel .CAN_MANAGE ,
408+ RedashPermissionLevel .CAN_VIEW ,
406409 ],
407410 _simple ,
408411 )
0 commit comments