예제 #1
0
        public async Task Resolve_RoleUserPermissions_SuccessAsync()
        {
            var securableItem = "testapp";
            var subjectId     = "testuser";
            var groups        = new List <string> {
                "contributor"
            };
            var roles = CreateRoles(securableItem, subjectId, groups);
            var mockPermissionStore = new Mock <IPermissionStore>().Object;
            var mockRoleStore       = new Mock <IRoleStore>()
                                      .SetupGetRoles(roles)
                                      .Object;
            var roleService      = new RoleService(mockRoleStore, mockPermissionStore);
            var resolverService  = new RolePermissionResolverService(roleService);
            var resolutionResult = await resolverService.Resolve(new PermissionResolutionRequest
            {
                Grain                    = Domain.Defaults.Authorization.AppGrain,
                IdentityProvider         = "Windows",
                SecurableItem            = securableItem,
                SubjectId                = subjectId,
                UserGroups               = groups,
                IncludeSharedPermissions = false
            });

            Assert.Equal(2, resolutionResult.AllowedPermissions.Count());
        }
예제 #2
0
        public async Task RolePermissionResolver_DuplicateGroupNames_SuccessAsync(string groupIdentityProvider, string tenantId, int expectedPermissions)
        {
            var securableItem = "testapp";
            var subjectId     = "testuser";
            var groups        = new List <Group>
            {
                new Group
                {
                    Name             = "contributor",
                    IdentityProvider = "Windows",
                    TenantId         = "Tenant123"
                },
                new Group
                {
                    Name             = "contributor",
                    IdentityProvider = "Azure",
                    TenantId         = "Tenant456"
                }
            };

            var roles = CreateRoles(securableItem, subjectId, groups);
            var mockPermissionStore = new Mock <IPermissionStore>().Object;
            var mockRoleStore       = new Mock <IRoleStore>()
                                      .SetupGetRoles(roles)
                                      .Object;
            var roleService      = new RoleService(mockRoleStore, mockPermissionStore);
            var resolverService  = new RolePermissionResolverService(roleService);
            var resolutionResult = await resolverService.Resolve(new PermissionResolutionRequest
            {
                Grain            = Domain.Defaults.Authorization.AppGrain,
                IdentityProvider = "Windows",
                SecurableItem    = securableItem,
                SubjectId        = subjectId,
                UserGroups       = new List <Group> {
                    new Group {
                        IdentityProvider = groupIdentityProvider, TenantId = tenantId, Name = "contributor"
                    }
                },
                IncludeSharedPermissions = false
            });

            Assert.Equal(expectedPermissions, resolutionResult.AllowedPermissions.Count());
        }