KickUser() public method

public KickUser ( ChatUser user, ChatUser targetUser, ChatRoom targetRoom ) : void
user ChatUser
targetUser ChatUser
targetRoom ChatRoom
return void
Example #1
0
            public void ThrowsIfUserIsNotOwner()
            {
                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",
                };

                user.Rooms.Add(room);
                user2.Rooms.Add(room);
                room.Users.Add(user);
                room.Users.Add(user2);

                var service = new ChatService(repository);

                Assert.Throws<InvalidOperationException>(() => service.KickUser(user, user2, room));
            }
Example #2
0
            public void DoesNotThrowIfCreatorKicksOwner()
            {
                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",
                    Creator = user
                };
                user.OwnedRooms.Add(room);
                room.Owners.Add(user);

                user2.OwnedRooms.Add(room);
                room.Owners.Add(user2);

                user.Rooms.Add(room);
                user2.Rooms.Add(room);
                room.Users.Add(user);
                room.Users.Add(user2);

                var service = new ChatService(repository);

                service.KickUser(user, user2, room);

                Assert.False(user2.Rooms.Contains(room));
                Assert.False(room.Users.Contains(user2));
            }
Example #3
0
            public void ThrowsIfKickSelf()
            {
                var repository = new InMemoryRepository();
                var user = new ChatUser
                {
                    Name = "foo"
                };
                repository.Add(user);
                var room = new ChatRoom
                {
                    Name = "Room",
                    Creator = user
                };
                room.Owners.Add(user);
                user.OwnedRooms.Add(room);
                user.Rooms.Add(room);
                room.Users.Add(user);

                var service = new ChatService(repository);

                Assert.Throws<InvalidOperationException>(() => service.KickUser(user, user, room));
            }
Example #4
0
            public void ThrowsIfUserIsNotOwnerAndNotAdmin()
            {
                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",
                };

                user.Rooms.Add(room);
                user2.Rooms.Add(room);
                room.Users.Add(user);
                room.Users.Add(user2);

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

                Assert.Throws<HubException>(() => service.KickUser(user, user2, room));
            }
Example #5
0
            public void ThrowsIfOwnerTriesToRemoveOwner()
            {
                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",
                };
                user.OwnedRooms.Add(room);
                room.Owners.Add(user);

                user2.OwnedRooms.Add(room);
                room.Owners.Add(user2);

                user.Rooms.Add(room);
                user2.Rooms.Add(room);
                room.Users.Add(user);
                room.Users.Add(user2);

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

                Assert.Throws<InvalidOperationException>(() => service.KickUser(user, user2, room));
            }
Example #6
0
            public void ThrowsIfOwnerTriesToRemoveAdmin()
            {
                var repository = new InMemoryRepository();
                var admin = new ChatUser
                {
                    Name = "foo",
                    IsAdmin = true
                };

                var owner = new ChatUser
                {
                    Name = "foo2"
                };

                repository.Add(admin);
                repository.Add(owner);
                var room = new ChatRoom
                {
                    Name = "Room",
                };

                owner.OwnedRooms.Add(room);
                room.Owners.Add(owner);

                admin.Rooms.Add(room);
                owner.Rooms.Add(room);
                room.Users.Add(admin);
                room.Users.Add(owner);

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

                Assert.Throws<HubException>(() => service.KickUser(owner, admin, room));
            }
Example #7
0
            public void ThrowsIfTargetUserNotInRoom()
            {
                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",
                    Creator = user
                };
                user.OwnedRooms.Add(room);
                room.Owners.Add(user);
                user.Rooms.Add(room);
                room.Users.Add(user);

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

                Assert.Throws<HubException>(() => service.KickUser(user, user2, room));
            }
Example #8
0
            public void DoesNotThrowIfAdminKicksOwner()
            {
                var repository = new InMemoryRepository();
                var admin = new ChatUser
                {
                    Name = "foo",
                    IsAdmin = true
                };

                var user2 = new ChatUser
                {
                    Name = "foo2"
                };

                repository.Add(admin);
                repository.Add(user2);
                var room = new ChatRoom
                {
                    Name = "Room"
                };

                user2.OwnedRooms.Add(room);
                room.Owners.Add(user2);

                admin.Rooms.Add(room);
                user2.Rooms.Add(room);
                room.Users.Add(admin);
                room.Users.Add(user2);

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

                service.KickUser(admin, user2, room);

                Assert.False(user2.Rooms.Contains(room));
                Assert.False(room.Users.Contains(user2));
            }
Example #9
0
            public void AdminCanKickCreator()
            {
                var repository = new InMemoryRepository();
                var admin = new ChatUser
                {
                    Name = "foo",
                    IsAdmin = true
                };

                var creator = new ChatUser
                {
                    Name = "foo2"
                };

                repository.Add(admin);
                repository.Add(creator);

                var room = new ChatRoom
                {
                    Name = "Room",
                    Creator = creator
                };

                creator.OwnedRooms.Add(room);
                room.Owners.Add(creator);

                admin.Rooms.Add(room);
                creator.Rooms.Add(room);
                room.Users.Add(admin);
                room.Users.Add(creator);

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

                service.KickUser(admin, creator, room);

                Assert.False(creator.Rooms.Contains(room));
                Assert.False(room.Users.Contains(creator));
            }
Example #10
0
            public void AdminCanKickAdmin()
            {
                var repository = new InMemoryRepository();
                var admin = new ChatUser
                {
                    Name = "foo",
                    IsAdmin = true
                };

                var otherAdmin = new ChatUser
                {
                    Name = "foo2",
                    IsAdmin = true
                };

                repository.Add(admin);
                repository.Add(otherAdmin);

                var room = new ChatRoom
                {
                    Name = "Room"
                };

                admin.Rooms.Add(room);
                otherAdmin.Rooms.Add(room);
                room.Users.Add(admin);
                room.Users.Add(otherAdmin);

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

                service.KickUser(admin, otherAdmin, room);

                Assert.False(otherAdmin.Rooms.Contains(room));
                Assert.False(room.Users.Contains(otherAdmin));
            }
Example #11
0
            public void AdminCanKickUser()
            {
                var repository = new InMemoryRepository();
                var admin = new ChatUser
                {
                    Name = "foo",
                    IsAdmin = true
                };

                var user2 = new ChatUser
                {
                    Name = "foo2"
                };

                repository.Add(admin);
                repository.Add(user2);
                var room = new ChatRoom
                {
                    Name = "Room",
                };

                admin.Rooms.Add(room);
                user2.Rooms.Add(room);
                room.Users.Add(admin);
                room.Users.Add(user2);

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

                service.KickUser(admin, user2, room);

                Assert.False(user2.Rooms.Contains(room));
                Assert.False(room.Users.Contains(user2));
            }
Example #12
0
            public void ThrowsIfOwnerTriesToRemoveOwner()
            {
                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",
                };
                user.OwnedRooms.Add(room);
                room.Owners.Add(user);

                user2.OwnedRooms.Add(room);
                room.Owners.Add(user2);

                user.Rooms.Add(room);
                user2.Rooms.Add(room);
                room.Users.Add(user);
                room.Users.Add(user2);

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

                Assert.Throws<HubException>(() => service.KickUser(user, user2, room));
            }