JabbR.Services.ChatService.UnallowUser C# (CSharp) Méthode

UnallowUser() public méthode

public UnallowUser ( ChatUser user, ChatUser targetUser, ChatRoom targetRoom ) : void
user ChatUser
targetUser ChatUser
targetRoom ChatRoom
Résultat void
        public void UnallowUser(ChatUser user, ChatUser targetUser, ChatRoom targetRoom)
        {
            EnsureOwnerOrAdmin(user, targetRoom);

            if (targetUser == user)
            {
                throw new InvalidOperationException("Why would you want to unallow yourself?");
            }

            if (!targetRoom.Private)
            {
                throw new InvalidOperationException(String.Format("{0} is not a private room.", targetRoom.Name));
            }

            if (!targetUser.AllowedRooms.Contains(targetRoom))
            {
                throw new InvalidOperationException(String.Format("{0} isn't allowed to access {1}.", targetUser.Name, targetRoom.Name));
            }

            // only admin can unallow admin
            if (!user.IsAdmin && targetUser.IsAdmin)
            {
                throw new InvalidOperationException("You cannot unallow an admin. Only admin can unallow admin.");
            }

            // If this user isn't the creator and the target user is an owner then throw
            if (targetRoom.Creator != user && targetRoom.Owners.Contains(targetUser) && !user.IsAdmin)
            {
                throw new InvalidOperationException("Owners cannot unallow other owners. Only the room creator can unallow an owner.");
            }

            targetRoom.AllowedUsers.Remove(targetUser);
            targetUser.AllowedRooms.Remove(targetRoom);

            // Make the user leave the room
            LeaveRoom(targetUser, targetRoom);

            _repository.CommitChanges();
        }

Usage Example

Exemple #1
0
            public void UnallowsAndRemovesUserFromRoom()
            {
                var repository = new InMemoryRepository();
                var user = new ChatUser
                {
                    Name = "foo"
                };
                var user2 = new ChatUser
                {
                    Name = "foo2"
                };
                repository.Add(user);
                repository.Add(user2);
                var room = new ChatRoom
                {
                    Name = "Room",
                    Private = true
                };
                room.AllowedUsers.Add(user2);
                room.Owners.Add(user);
                room.Users.Add(user);
                user.OwnedRooms.Add(room);
                user.Rooms.Add(room);
                user2.AllowedRooms.Add(room);

                var service = new ChatService(repository, new Mock<ICryptoService>().Object);

                service.UnallowUser(user, user2, room);

                Assert.False(room.Users.Contains(user2));
                Assert.False(user2.Rooms.Contains(room));
                Assert.False(room.AllowedUsers.Contains(user2));
                Assert.False(user2.AllowedRooms.Contains(room));
            }
All Usage Examples Of JabbR.Services.ChatService::UnallowUser