@@ -86,21 +86,24 @@ def test_role_assignment_list_no_filters(self):
8686 effective = False ,
8787 role = None ,
8888 user = None ,
89- project = None )
89+ project = None ,
90+ os_inherit_extension_inherited_to = None )
9091
91- collist = ('Role' , 'User' , 'Group' , 'Project' , 'Domain' )
92- self .assertEqual (collist , columns )
92+ collist = ('Role' , 'User' , 'Group' , 'Project' , 'Domain' , 'Inherited' )
93+ self .assertEqual (columns , collist )
9394 datalist = ((
9495 identity_fakes .role_id ,
9596 identity_fakes .user_id ,
9697 '' ,
9798 identity_fakes .project_id ,
98- ''
99+ '' ,
100+ False
99101 ), (identity_fakes .role_id ,
100102 '' ,
101103 identity_fakes .group_id ,
102104 identity_fakes .project_id ,
103- ''
105+ '' ,
106+ False
104107 ),)
105108 self .assertEqual (datalist , tuple (data ))
106109
@@ -131,6 +134,7 @@ def test_role_assignment_list_user(self):
131134 ('project' , None ),
132135 ('role' , None ),
133136 ('effective' , False ),
137+ ('inherited' , False ),
134138 ]
135139 parsed_args = self .check_parser (self .cmd , arglist , verifylist )
136140
@@ -143,21 +147,24 @@ def test_role_assignment_list_user(self):
143147 group = None ,
144148 project = None ,
145149 role = None ,
146- effective = False )
150+ effective = False ,
151+ os_inherit_extension_inherited_to = None )
147152
148- collist = ('Role' , 'User' , 'Group' , 'Project' , 'Domain' )
149- self .assertEqual (collist , columns )
153+ collist = ('Role' , 'User' , 'Group' , 'Project' , 'Domain' , 'Inherited' )
154+ self .assertEqual (columns , collist )
150155 datalist = ((
151156 identity_fakes .role_id ,
152157 identity_fakes .user_id ,
153158 '' ,
154159 '' ,
155- identity_fakes .domain_id
160+ identity_fakes .domain_id ,
161+ False
156162 ), (identity_fakes .role_id ,
157163 identity_fakes .user_id ,
158164 '' ,
159165 identity_fakes .project_id ,
160- ''
166+ '' ,
167+ False
161168 ),)
162169 self .assertEqual (datalist , tuple (data ))
163170
@@ -188,6 +195,7 @@ def test_role_assignment_list_group(self):
188195 ('project' , None ),
189196 ('role' , None ),
190197 ('effective' , False ),
198+ ('inherited' , False ),
191199 ]
192200 parsed_args = self .check_parser (self .cmd , arglist , verifylist )
193201
@@ -200,21 +208,24 @@ def test_role_assignment_list_group(self):
200208 effective = False ,
201209 project = None ,
202210 role = None ,
203- user = None )
211+ user = None ,
212+ os_inherit_extension_inherited_to = None )
204213
205- collist = ('Role' , 'User' , 'Group' , 'Project' , 'Domain' )
206- self .assertEqual (collist , columns )
214+ collist = ('Role' , 'User' , 'Group' , 'Project' , 'Domain' , 'Inherited' )
215+ self .assertEqual (columns , collist )
207216 datalist = ((
208217 identity_fakes .role_id ,
209218 '' ,
210219 identity_fakes .group_id ,
211220 '' ,
212- identity_fakes .domain_id
221+ identity_fakes .domain_id ,
222+ False
213223 ), (identity_fakes .role_id ,
214224 '' ,
215225 identity_fakes .group_id ,
216226 identity_fakes .project_id ,
217- ''
227+ '' ,
228+ False
218229 ),)
219230 self .assertEqual (datalist , tuple (data ))
220231
@@ -245,6 +256,7 @@ def test_role_assignment_list_domain(self):
245256 ('project' , None ),
246257 ('role' , None ),
247258 ('effective' , False ),
259+ ('inherited' , False ),
248260 ]
249261 parsed_args = self .check_parser (self .cmd , arglist , verifylist )
250262
@@ -257,21 +269,24 @@ def test_role_assignment_list_domain(self):
257269 effective = False ,
258270 project = None ,
259271 role = None ,
260- user = None )
272+ user = None ,
273+ os_inherit_extension_inherited_to = None )
261274
262- collist = ('Role' , 'User' , 'Group' , 'Project' , 'Domain' )
263- self .assertEqual (collist , columns )
275+ collist = ('Role' , 'User' , 'Group' , 'Project' , 'Domain' , 'Inherited' )
276+ self .assertEqual (columns , collist )
264277 datalist = ((
265278 identity_fakes .role_id ,
266279 identity_fakes .user_id ,
267280 '' ,
268281 '' ,
269- identity_fakes .domain_id
282+ identity_fakes .domain_id ,
283+ False
270284 ), (identity_fakes .role_id ,
271285 '' ,
272286 identity_fakes .group_id ,
273287 '' ,
274- identity_fakes .domain_id
288+ identity_fakes .domain_id ,
289+ False
275290 ),)
276291 self .assertEqual (datalist , tuple (data ))
277292
@@ -302,6 +317,7 @@ def test_role_assignment_list_project(self):
302317 ('project' , identity_fakes .project_name ),
303318 ('role' , None ),
304319 ('effective' , False ),
320+ ('inherited' , False ),
305321 ]
306322 parsed_args = self .check_parser (self .cmd , arglist , verifylist )
307323
@@ -314,21 +330,24 @@ def test_role_assignment_list_project(self):
314330 effective = False ,
315331 project = self .projects_mock .get (),
316332 role = None ,
317- user = None )
333+ user = None ,
334+ os_inherit_extension_inherited_to = None )
318335
319- collist = ('Role' , 'User' , 'Group' , 'Project' , 'Domain' )
320- self .assertEqual (collist , columns )
336+ collist = ('Role' , 'User' , 'Group' , 'Project' , 'Domain' , 'Inherited' )
337+ self .assertEqual (columns , collist )
321338 datalist = ((
322339 identity_fakes .role_id ,
323340 identity_fakes .user_id ,
324341 '' ,
325342 identity_fakes .project_id ,
326- ''
343+ '' ,
344+ False
327345 ), (identity_fakes .role_id ,
328346 '' ,
329347 identity_fakes .group_id ,
330348 identity_fakes .project_id ,
331- ''
349+ '' ,
350+ False
332351 ),)
333352 self .assertEqual (datalist , tuple (data ))
334353
@@ -357,6 +376,7 @@ def test_role_assignment_list_effective(self):
357376 ('project' , None ),
358377 ('role' , None ),
359378 ('effective' , True ),
379+ ('inherited' , False ),
360380 ]
361381 parsed_args = self .check_parser (self .cmd , arglist , verifylist )
362382
@@ -369,20 +389,84 @@ def test_role_assignment_list_effective(self):
369389 effective = True ,
370390 project = None ,
371391 role = None ,
372- user = None )
392+ user = None ,
393+ os_inherit_extension_inherited_to = None )
373394
374- collist = ('Role' , 'User' , 'Group' , 'Project' , 'Domain' )
375- self .assertEqual (collist , columns )
395+ collist = ('Role' , 'User' , 'Group' , 'Project' , 'Domain' , 'Inherited' )
396+ self .assertEqual (columns , collist )
376397 datalist = ((
377398 identity_fakes .role_id ,
378399 identity_fakes .user_id ,
379400 '' ,
380401 identity_fakes .project_id ,
381- ''
402+ '' ,
403+ False
404+ ), (identity_fakes .role_id ,
405+ identity_fakes .user_id ,
406+ '' ,
407+ '' ,
408+ identity_fakes .domain_id ,
409+ False
410+ ),)
411+ self .assertEqual (tuple (data ), datalist )
412+
413+ def test_role_assignment_list_inherited (self ):
414+
415+ self .role_assignments_mock .list .return_value = [
416+ fakes .FakeResource (
417+ None ,
418+ copy .deepcopy (
419+ (identity_fakes .
420+ ASSIGNMENT_WITH_PROJECT_ID_AND_USER_ID_INHERITED )),
421+ loaded = True ,
422+ ),
423+ fakes .FakeResource (
424+ None ,
425+ copy .deepcopy (
426+ (identity_fakes .
427+ ASSIGNMENT_WITH_DOMAIN_ID_AND_USER_ID_INHERITED )),
428+ loaded = True ,
429+ ),
430+ ]
431+
432+ arglist = ['--inherited' ]
433+ verifylist = [
434+ ('user' , None ),
435+ ('group' , None ),
436+ ('domain' , None ),
437+ ('project' , None ),
438+ ('role' , None ),
439+ ('effective' , False ),
440+ ('inherited' , True ),
441+ ]
442+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
443+
444+ # DisplayCommandBase.take_action() returns two tuples
445+ columns , data = self .cmd .take_action (parsed_args )
446+
447+ self .role_assignments_mock .list .assert_called_with (
448+ domain = None ,
449+ group = None ,
450+ effective = False ,
451+ project = None ,
452+ role = None ,
453+ user = None ,
454+ os_inherit_extension_inherited_to = 'projects' )
455+
456+ collist = ('Role' , 'User' , 'Group' , 'Project' , 'Domain' , 'Inherited' )
457+ self .assertEqual (columns , collist )
458+ datalist = ((
459+ identity_fakes .role_id ,
460+ identity_fakes .user_id ,
461+ '' ,
462+ identity_fakes .project_id ,
463+ '' ,
464+ True
382465 ), (identity_fakes .role_id ,
383466 identity_fakes .user_id ,
384467 '' ,
385468 '' ,
386469 identity_fakes .domain_id ,
470+ True
387471 ),)
388472 self .assertEqual (datalist , tuple (data ))
0 commit comments