@@ -20,6 +20,7 @@ package accesslists
2020
2121import  (
2222	"context" 
23+ 	"slices" 
2324	"sort" 
2425	"testing" 
2526	"time" 
@@ -313,31 +314,35 @@ func TestAccessListIsMember_NestedRequirements(t *testing.T) {
313314			},
314315		}
315316
316- 		userAllRoles , err  :=  types .NewUser (userName )
317+ 		user , err  :=  types .NewUser (userName )
317318		require .NoError (t , err )
318- 		allRoles  :=  append (
319- 			append (
320- 				rootList .Spec .MembershipRequires .Roles ,
321- 				middleList .Spec .MembershipRequires .Roles ... ,
322- 			),
323- 			leafList .Spec .MembershipRequires .Roles ... ,
319+ 		allRoles  :=  slices .Concat (
320+ 			rootList .Spec .MembershipRequires .Roles ,
321+ 			middleList .Spec .MembershipRequires .Roles ,
322+ 			leafList .Spec .MembershipRequires .Roles ,
324323		)
325- 		userAllRoles .SetRoles (allRoles )
324+ 		user .SetRoles (allRoles )
325+ 
326+ 		typ , err  :=  IsAccessListMember (ctx , user , rootList , aclGetter , locks , clock )
327+ 		require .NoError (t , err )
328+ 		require .Equal (t , accesslistv1 .AccessListUserAssignmentType_ACCESS_LIST_USER_ASSIGNMENT_TYPE_INHERITED , typ )
326329
327- 		typ , err  : =  IsAccessListMember (ctx , userAllRoles ,  rootList , aclGetter , locks , clock )
330+ 		typ , err  =  IsAccessListMember (ctx , user ,  middleList , aclGetter , locks , clock )
328331		require .NoError (t , err )
329332		require .Equal (t , accesslistv1 .AccessListUserAssignmentType_ACCESS_LIST_USER_ASSIGNMENT_TYPE_INHERITED , typ )
330333
334+ 		typ , err  =  IsAccessListMember (ctx , user , leafList , aclGetter , locks , clock )
335+ 		require .NoError (t , err )
336+ 		require .Equal (t , accesslistv1 .AccessListUserAssignmentType_ACCESS_LIST_USER_ASSIGNMENT_TYPE_EXPLICIT , typ )
337+ 
331338		// User missing middle role 
332- 		missingMiddleRoles  :=  append (
339+ 		missingMiddleRoles  :=  slices . Concat (
333340			rootList .Spec .MembershipRequires .Roles ,
334- 			leafList .Spec .MembershipRequires .Roles ... ,
341+ 			leafList .Spec .MembershipRequires .Roles ,
335342		)
336- 		userMissingMiddle , err  :=  types .NewUser (userName )
337- 		require .NoError (t , err )
338- 		userMissingMiddle .SetRoles (missingMiddleRoles )
343+ 		user .SetRoles (missingMiddleRoles )
339344
340- 		typ , err  =  IsAccessListMember (ctx , userMissingMiddle , rootList , aclGetter , locks , clock )
345+ 		typ , err  =  IsAccessListMember (ctx , user , rootList , aclGetter , locks , clock )
341346		require .Error (t , err )
342347		require .ErrorAs (t , err , new (* trace.AccessDeniedError ))
343348		require .Equal (t , accesslistv1 .AccessListUserAssignmentType_ACCESS_LIST_USER_ASSIGNMENT_TYPE_UNSPECIFIED , typ )
@@ -419,6 +424,14 @@ func TestAccessListIsMember_NestedRequirements(t *testing.T) {
419424		require .Error (t , err )
420425		require .ErrorAs (t , err , new (* trace.AccessDeniedError ))
421426		require .Equal (t , accesslistv1 .AccessListUserAssignmentType_ACCESS_LIST_USER_ASSIGNMENT_TYPE_UNSPECIFIED , typ )
427+ 		typ , err  =  IsAccessListMember (ctx , user , secondList , aclGetter , locks , clock )
428+ 		require .Error (t , err )
429+ 		require .ErrorAs (t , err , new (* trace.AccessDeniedError ))
430+ 		require .Equal (t , accesslistv1 .AccessListUserAssignmentType_ACCESS_LIST_USER_ASSIGNMENT_TYPE_UNSPECIFIED , typ )
431+ 		typ , err  =  IsAccessListMember (ctx , user , thirdList , aclGetter , locks , clock )
432+ 		require .Error (t , err )
433+ 		require .ErrorAs (t , err , new (* trace.AccessDeniedError ))
434+ 		require .Equal (t , accesslistv1 .AccessListUserAssignmentType_ACCESS_LIST_USER_ASSIGNMENT_TYPE_UNSPECIFIED , typ )
422435	})
423436
424437	t .Run ("cyclic graph, user membership" , func (t  * testing.T ) {
@@ -454,6 +467,12 @@ func TestAccessListIsMember_NestedRequirements(t *testing.T) {
454467		typ , err  :=  IsAccessListMember (ctx , user , firstList , aclGetter , locks , clock )
455468		require .NoError (t , err )
456469		require .Equal (t , accesslistv1 .AccessListUserAssignmentType_ACCESS_LIST_USER_ASSIGNMENT_TYPE_INHERITED , typ )
470+ 		typ , err  =  IsAccessListMember (ctx , user , secondList , aclGetter , locks , clock )
471+ 		require .NoError (t , err )
472+ 		require .Equal (t , accesslistv1 .AccessListUserAssignmentType_ACCESS_LIST_USER_ASSIGNMENT_TYPE_INHERITED , typ )
473+ 		typ , err  =  IsAccessListMember (ctx , user , thirdList , aclGetter , locks , clock )
474+ 		require .NoError (t , err )
475+ 		require .Equal (t , accesslistv1 .AccessListUserAssignmentType_ACCESS_LIST_USER_ASSIGNMENT_TYPE_EXPLICIT , typ )
457476	})
458477}
459478
0 commit comments