public override async Task OnConnectedAsync() { Permissions?totalPermissions = null; User user = await _userManager.GetUserAsync(Context.User); if (user != null) { IEnumerable <Role> roles = (await _userManager.GetRolesAsync(user)) .Select(e => _roleManager.FindByNameAsync(e).Result); IEnumerable <Permissions> permissions = roles.Select(e => e.Permissions); totalPermissions = Permissions.NONE; foreach (Permissions permission in permissions) { if (!totalPermissions.Value.HasFlag(permission)) { totalPermissions |= permission; } } } _permissionMemoryCache.AddClient(Context.ConnectionId, totalPermissions); await base.OnConnectedAsync(); }
public void GetClientsTest(Permissions?permissions, string[] expectedClients) { //Arrange PermissionMemoryCache permissionMemoryCache = new PermissionMemoryCache(); permissionMemoryCache.AddClient("client1", null); permissionMemoryCache.AddClient("client2", null); permissionMemoryCache.AddClient("client3", Permissions.ALL); permissionMemoryCache.AddClient("client4", Permissions.CREATE_PROJECTS | Permissions.DELETE_PROJECTS); //Act var clients = permissionMemoryCache.GetClients(permissions); //Assert //we expect these clients Assert.Equal(expectedClients, clients); }
public void RemoveClientTest(string client) { //Arrange PermissionMemoryCache permissionMemoryCache = new PermissionMemoryCache(); permissionMemoryCache.AddClient("client1", null); permissionMemoryCache.AddClient("client2", null); permissionMemoryCache.AddClient("client3", Permissions.ALL); permissionMemoryCache.AddClient("client4", Permissions.CREATE_PROJECTS | Permissions.DELETE_PROJECTS); //Act permissionMemoryCache.RemoveClient(client); //get all clients var clients = permissionMemoryCache.GetClients(null).ToList(); //Assert //we expect these clients Assert.DoesNotContain(client, clients); Assert.Equal(3, clients.Count); }