public void TestAddingAndRemovingUser() { var hubUser = new FakeHubUser("1", "123", "12").Build(); _manageHubUser.AddUser(hubUser); var userToRemove = _manageHubUser.GetUserByConnectionId(hubUser.ConnectionId); _manageHubUser.RemoveUser(userToRemove); var userInDb = _hubUserContext.ConnectedUsers.Where(u => u.ConnectionId == userToRemove.ConnectionId).SingleOrDefault(); var userCount = _hubUserContext.ConnectedUsers.ToList().Count; bool result = false; if (userInDb == null) { result = true; } Assert.True(result); Assert.Equal(0, userCount); }
public async override Task OnDisconnectedAsync(Exception exception) { string connectionId = Context.ConnectionId; var groupMember = _hubUser.GetUserByConnectionId(connectionId); if (exception != null) { Log.Warning(String.Concat(logPrefix, "Disconnecting user: [ ", connectionId, " ] for room: [ ", groupMember.GroupName, " ]: \n", exception.Message)); } else { Log.Information(String.Concat(logPrefix, "Disconnecting user: [ ", connectionId, " ] from room: [ ", groupMember.GroupName, " ]")); } await _hubUser.RemoveUserAsync(groupMember); await Groups.RemoveFromGroupAsync(connectionId, groupMember.GroupName); //if group member changed roomNo exit patient view if (groupMember.UserId != null && !_queueService.CheckRoomSubordination(groupMember.UserId, groupMember.GroupName)) { _queueService.SetQueueInactive(groupMember.UserId); InitGroupScreen(groupMember); } else if (groupMember.UserId != null) { await Task.Delay(TimeSpan.FromMinutes(SettingsHandler.ApplicationSettings.PatientViewNotificationAfterDoctorDisconnectedDelay)); if (_hubUser.GetConnectedUserById(groupMember.UserId) == null) { _queueService.SetQueueInactive(groupMember.UserId); Log.Information(String.Concat(logPrefix, "Room: [ ", groupMember.GroupName, " ] master disconnected, connectionId: [ ", groupMember.ConnectionId, " ] userId: [ ", groupMember.UserId, " ]")); InitGroupScreen(groupMember); } } await base.OnDisconnectedAsync(exception); }