@@ -27,8 +27,8 @@ def opa_security_manager(
2727
2828 with app .app_context ():
2929 mocker .patch (
30- ' flask_appbuilder.security.sqla.manager.SecurityManager.create_db' ,
31- return_value = None
30+ " flask_appbuilder.security.sqla.manager.SecurityManager.create_db" ,
31+ return_value = None ,
3232 )
3333 return OpaSupersetSecurityManager (appbuilder )
3434
@@ -40,17 +40,15 @@ def user() -> User:
4040 """
4141 user = User ()
4242 user .id = 1234
43- user .first_name = ' mock'
44- user .last_name = ' mock'
45- user .username = ' mock'
46- 43+ user .first_name = " mock"
44+ user .last_name = " mock"
45+ user .username = " mock"
46+ 4747
4848 return user
4949
5050
51- def test_opa_security_manager (
52- opa_security_manager : OpaSupersetSecurityManager
53- ) -> None :
51+ def test_opa_security_manager (opa_security_manager : OpaSupersetSecurityManager ) -> None :
5452 """
5553 Test that the OPA security manager can be built.
5654 """
@@ -66,24 +64,25 @@ def test_add_roles(
6664 """
6765 Test that roles are correctly added to a user.
6866 """
69- opa_roles = [' Test1' , ' Test2' , ' Test3' ]
67+ opa_roles = [" Test1" , " Test2" , " Test3" ]
7068
7169 with app .app_context ():
7270 mocker .patch (
73- ' flask_appbuilder.security.sqla.manager.SecurityManager.update_user' ,
74- return_value = True
71+ " flask_appbuilder.security.sqla.manager.SecurityManager.update_user" ,
72+ return_value = True ,
7573 )
7674 mocker .patch (
77- ' opa_authorizer.opa_manager.OpaSupersetSecurityManager.get_opa_user_roles' ,
78- return_value = opa_roles
75+ " opa_authorizer.opa_manager.OpaSupersetSecurityManager.get_opa_user_roles" ,
76+ return_value = opa_roles ,
7977 )
8078 mocker .patch (
81- ' opa_authorizer.opa_manager.OpaSupersetSecurityManager.resolve_role' ,
82- wraps = mock_resolve_role
79+ " opa_authorizer.opa_manager.OpaSupersetSecurityManager.resolve_role" ,
80+ wraps = mock_resolve_role ,
8381 )
8482
85- assert set (map (lambda r : r .name , opa_security_manager .get_user_roles (user ))) \
86- == set (opa_roles )
83+ assert set (
84+ map (lambda r : r .name , opa_security_manager .get_user_roles (user ))
85+ ) == set (opa_roles )
8786
8887
8988def test_change_roles (
@@ -95,26 +94,27 @@ def test_change_roles(
9594 """
9695 Test that roles are correcty changed on a user.
9796 """
98- opa_roles = [' Test4' ]
97+ opa_roles = [" Test4" ]
9998
10099 with app .app_context ():
101100 mocker .patch (
102- ' flask_appbuilder.security.sqla.manager.SecurityManager.update_user' ,
103- return_value = True
101+ " flask_appbuilder.security.sqla.manager.SecurityManager.update_user" ,
102+ return_value = True ,
104103 )
105104 mocker .patch (
106- ' opa_authorizer.opa_manager.OpaSupersetSecurityManager.get_opa_user_roles' ,
107- return_value = opa_roles
105+ " opa_authorizer.opa_manager.OpaSupersetSecurityManager.get_opa_user_roles" ,
106+ return_value = opa_roles ,
108107 )
109108 mocker .patch (
110- ' opa_authorizer.opa_manager.OpaSupersetSecurityManager.resolve_role' ,
111- wraps = mock_resolve_role
109+ " opa_authorizer.opa_manager.OpaSupersetSecurityManager.resolve_role" ,
110+ wraps = mock_resolve_role ,
112111 )
113- user_roles = [' Test1' , ' Test2' , ' Test3' ]
112+ user_roles = [" Test1" , " Test2" , " Test3" ]
114113 user .roles = list (map (opa_security_manager .resolve_role , user_roles ))
115114
116- assert set (map (lambda r : r .name , opa_security_manager .get_user_roles (user ))) \
117- == set (opa_roles )
115+ assert set (
116+ map (lambda r : r .name , opa_security_manager .get_user_roles (user ))
117+ ) == set (opa_roles )
118118
119119
120120def test_no_roles (
@@ -130,19 +130,21 @@ def test_no_roles(
130130
131131 with app .app_context ():
132132 mocker .patch (
133- ' flask_appbuilder.security.sqla.manager.SecurityManager.update_user' ,
134- return_value = True
133+ " flask_appbuilder.security.sqla.manager.SecurityManager.update_user" ,
134+ return_value = True ,
135135 )
136136 mocker .patch (
137- ' opa_authorizer.opa_manager.OpaSupersetSecurityManager.get_opa_user_roles' ,
138- return_value = opa_roles
137+ " opa_authorizer.opa_manager.OpaSupersetSecurityManager.get_opa_user_roles" ,
138+ return_value = opa_roles ,
139139 )
140140 mocker .patch (
141- ' opa_authorizer.opa_manager.OpaSupersetSecurityManager.resolve_role' ,
142- wraps = mock_resolve_role
141+ " opa_authorizer.opa_manager.OpaSupersetSecurityManager.resolve_role" ,
142+ wraps = mock_resolve_role ,
143143 )
144144
145- assert set (map (lambda r : r .name , opa_security_manager .get_user_roles (user ))) == {'Public' }
145+ assert set (
146+ map (lambda r : r .name , opa_security_manager .get_user_roles (user ))
147+ ) == {"Public" }
146148
147149
148150def test_get_opa_roles (
@@ -153,20 +155,17 @@ def test_get_opa_roles(
153155 """
154156 Test that roles are correctly extracted from the OPA response.
155157 """
156- roles = [' Test1' , ' Test2' , ' Test3' ]
157- response = {' result' : roles }
158+ roles = [" Test1" , " Test2" , " Test3" ]
159+ response = {" result" : roles }
158160
159161 with app .app_context ():
162+ mocker .patch ("opa_client.opa.OpaClient.query_rule" , return_value = response )
160163 mocker .patch (
161- 'opa_client.opa.OpaClient.query_rule' ,
162- return_value = response
163- )
164- mocker .patch (
165- 'opa_authorizer.opa_manager.OpaSupersetSecurityManager.resolve_opa_base_url' ,
166- return_value = ('opa-instance' , 8081 , False )
164+ "opa_authorizer.opa_manager.OpaSupersetSecurityManager.resolve_opa_base_url" ,
165+ return_value = ("opa-instance" , 8081 , False ),
167166 )
168167
169- assert opa_security_manager .get_opa_user_roles (' User1' ) == roles
168+ assert opa_security_manager .get_opa_user_roles (" User1" ) == roles
170169
171170
172171def test_get_opa_roles_no_result (
@@ -177,19 +176,16 @@ def test_get_opa_roles_no_result(
177176 """
178177 Test that no roles are returned if the OPA response doesn't contain a query result.
179178 """
180- response = {' error' : ' error occurred' }
179+ response = {" error" : " error occurred" }
181180
182181 with app .app_context ():
182+ mocker .patch ("opa_client.opa.OpaClient.query_rule" , return_value = response )
183183 mocker .patch (
184- 'opa_client.opa.OpaClient.query_rule' ,
185- return_value = response
186- )
187- mocker .patch (
188- 'opa_authorizer.opa_manager.OpaSupersetSecurityManager.resolve_opa_base_url' ,
189- return_value = ('opa-instance' , 8081 , False )
184+ "opa_authorizer.opa_manager.OpaSupersetSecurityManager.resolve_opa_base_url" ,
185+ return_value = ("opa-instance" , 8081 , False ),
190186 )
191187
192- assert opa_security_manager .get_opa_user_roles (' User1' ) == []
188+ assert opa_security_manager .get_opa_user_roles (" User1" ) == []
193189
194190
195191def test_get_opa_roles_not_a_list (
@@ -200,19 +196,16 @@ def test_get_opa_roles_not_a_list(
200196 """
201197 Test that no roles are returned if the query result doesn't contain a list.
202198 """
203- response = {' result' : "['Test1', 'Test2', 'Test3']" } # type string not list
199+ response = {" result" : "['Test1', 'Test2', 'Test3']" } # type string not list
204200
205201 with app .app_context ():
202+ mocker .patch ("opa_client.opa.OpaClient.query_rule" , return_value = response )
206203 mocker .patch (
207- 'opa_client.opa.OpaClient.query_rule' ,
208- return_value = response
209- )
210- mocker .patch (
211- 'opa_authorizer.opa_manager.OpaSupersetSecurityManager.resolve_opa_base_url' ,
212- return_value = ('opa-instance' , 8081 , False )
204+ "opa_authorizer.opa_manager.OpaSupersetSecurityManager.resolve_opa_base_url" ,
205+ return_value = ("opa-instance" , 8081 , False ),
213206 )
214207
215- assert opa_security_manager .get_opa_user_roles (' User1' ) == []
208+ assert opa_security_manager .get_opa_user_roles (" User1" ) == []
216209
217210
218211def test_resolve_opa_base_url (
@@ -225,10 +218,13 @@ def test_resolve_opa_base_url(
225218 """
226219 with app .app_context ():
227220 mocker .patch (
228- 'flask.current_app.config.get' ,
229- return_value = 'http://opa-instance:8081'
221+ "flask.current_app.config.get" , return_value = "http://opa-instance:8081"
222+ )
223+ assert opa_security_manager .resolve_opa_base_url () == (
224+ "opa-instance" ,
225+ 8081 ,
226+ False ,
230227 )
231- assert opa_security_manager .resolve_opa_base_url () == ('opa-instance' , 8081 , False )
232228
233229
234230def test_resolve_opa_base_url_with_path (
@@ -242,10 +238,14 @@ def test_resolve_opa_base_url_with_path(
242238 """
243239 with app .app_context ():
244240 mocker .patch (
245- 'flask.current_app.config.get' ,
246- return_value = 'http://opa-instance:8081/v1/data/superset'
241+ "flask.current_app.config.get" ,
242+ return_value = "http://opa-instance:8081/v1/data/superset" ,
243+ )
244+ assert opa_security_manager .resolve_opa_base_url () == (
245+ "opa-instance" ,
246+ 8081 ,
247+ False ,
247248 )
248- assert opa_security_manager .resolve_opa_base_url () == ('opa-instance' , 8081 , False )
249249
250250
251251def mock_resolve_role (role_name : str ) -> Role :
0 commit comments