public LockRoom ( ChatUser user, ChatRoom targetRoom ) : void | ||
user | ChatUser | |
targetRoom | ChatRoom | |
return | void |
public void MakesAllUsersAllowed() { var repository = new InMemoryRepository(); var creator = new ChatUser { Name = "foo" }; var users = Enumerable.Range(0, 5).Select(i => new ChatUser { Name = "user_" + i }).ToList(); var offlineUsers = Enumerable.Range(6, 10).Select(i => new ChatUser { Name = "user_" + i, Status = (int)UserStatus.Offline }).ToList(); var room = new ChatRoom { Name = "room", Creator = creator }; room.Owners.Add(creator); creator.OwnedRooms.Add(room); repository.Add(room); foreach (var u in users) { room.Users.Add(u); u.Rooms.Add(room); repository.Add(u); } foreach (var u in offlineUsers) { room.Users.Add(u); u.Rooms.Add(room); repository.Add(u); } var service = new ChatService(repository, new Mock<ICryptoService>().Object); service.LockRoom(creator, room); foreach (var u in users) { Assert.True(u.AllowedRooms.Contains(room)); Assert.True(room.AllowedUsers.Contains(u)); } foreach (var u in offlineUsers) { Assert.False(u.AllowedRooms.Contains(room)); Assert.False(room.AllowedUsers.Contains(u)); } }
public void ThrowsIfRoomAlreadyLocked() { var repository = new InMemoryRepository(); var user = new ChatUser { Name = "foo" }; repository.Add(user); var room = new ChatRoom { Name = "Room", Creator = user, Private = true }; room.Owners.Add(user); user.OwnedRooms.Add(room); room.AllowedUsers.Add(user); user.AllowedRooms.Add(room); user.Rooms.Add(room); room.Users.Add(user); var service = new ChatService(repository, new Mock<ICryptoService>().Object); Assert.Throws<InvalidOperationException>(() => service.LockRoom(user, room)); }
public void LocksRoomIfOwner() { var repository = new InMemoryRepository(); var user = new ChatUser { Name = "foo" }; repository.Add(user); var room = new ChatRoom { Name = "Room" }; room.Users.Add(user); room.Owners.Add(user); user.OwnedRooms.Add(room); user.Rooms.Add(room); var service = new ChatService(repository, new Mock<ICryptoService>().Object); service.LockRoom(user, room); Assert.True(room.Private); Assert.True(user.AllowedRooms.Contains(room)); Assert.True(room.AllowedUsers.Contains(user)); }
public void LocksRoomIfAdmin() { var repository = new InMemoryRepository(); var admin = new ChatUser { Name = "foo", IsAdmin = true }; repository.Add(admin); var room = new ChatRoom { Name = "Room" }; room.Users.Add(admin); admin.Rooms.Add(room); var service = new ChatService(new Mock<ICache>().Object, repository); service.LockRoom(admin, room); Assert.True(room.Private); Assert.True(admin.AllowedRooms.Contains(room)); Assert.True(room.AllowedUsers.Contains(admin)); }
public void ThrowsIfUserIsOwner() { var repository = new InMemoryRepository(); var user = new ChatUser { Name = "foo" }; repository.Add(user); var room = new ChatRoom { Name = "Room" }; room.Users.Add(user); room.Owners.Add(user); user.OwnedRooms.Add(room); user.Rooms.Add(room); var service = new ChatService(repository, new Mock<ICryptoService>().Object); Assert.Throws<InvalidOperationException>(() => service.LockRoom(user, room)); }
public void LocksRoom() { 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(new Mock<ICache>().Object, new Mock<IRecentMessageCache>().Object, repository); service.LockRoom(user, room); Assert.True(room.Private); Assert.True(user.AllowedRooms.Contains(room)); Assert.True(room.AllowedUsers.Contains(user)); }
public void ThrowsIfRoomAlreadyLocked() { var repository = new InMemoryRepository(); var user = new ChatUser { Name = "foo" }; repository.Add(user); var room = new ChatRoom { Name = "Room", Creator = user, Private = true }; room.Owners.Add(user); user.OwnedRooms.Add(room); room.AllowedUsers.Add(user); user.AllowedRooms.Add(room); user.Rooms.Add(room); room.Users.Add(user); var service = new ChatService(new Mock<ICache>().Object, new Mock<IRecentMessageCache>().Object, repository); Assert.Throws<HubException>(() => service.LockRoom(user, room)); }