def test_all_guesses_submitted_no_submission(self, m_round): room = Room(TestRoom.user1) room.add_user(TestRoom.user2) room.add_user(TestRoom.user3) cur_round = MagicMock() cur_round.guessers = [TestRoom.user2, TestRoom.user3] m_round.return_value = cur_round self.assertFalse(room.all_guesses_submitted) m_round.assert_called()
def test_all_guesses_submitted_some_submissions(self, m_round): room = Room(TestRoom.user1) room.add_user(TestRoom.user2) room.add_user(TestRoom.user3) cur_round = MagicMock() cur_round.guessers = [TestRoom.user2, TestRoom.user3] m_round.return_value = cur_round TestRoom.user2.current_answer = "A plot for a film" self.assertFalse(room.all_guesses_submitted) m_round.assert_called()
def test_end_round(self): room = Room(TestRoom.user1) user2 = User('User2') user3 = User('User3') room.add_user(user2) room.add_user(user3) # Must have a round to end round1 = MagicMock() room.rounds = [round1] TestRoom.user1.current_answer = 'User1\'s answer' user2.current_answer = 'An answer from User2' user3.current_answer = None room.current_judge = user2 room.end_round() self.assertIsNone(TestRoom.user1.current_answer) self.assertIsNone(user2.current_answer) self.assertIsNone(user3.current_answer)
def test_add_user_existing_user(self): room = Room(TestRoom.user1) user2 = User('User123') room.add_user(user2) self.assertEqual(room.users, [TestRoom.user1])
def test_add_user_new_user(self): room = Room(TestRoom.user1) user2 = User('Jessica') room.add_user(user2) self.assertEqual(room.users, [TestRoom.user1, user2])
def manage_updates(self): """ Manages the messages the server gets from the clients :return: """ database = users_database.UsersDatabase("../Data/users_database.db") while True: time.sleep(0) if len(self._command_queue) > 0: client_, data = self._command_queue.pop() if isinstance(data, str): index_of_mark = data.index("#") else: index_of_mark = data.index(b"#") source = data[:index_of_mark] data = data[index_of_mark + 1:] key = data[:2] data = data[2:] print(f"Key: {key} Source: {source} Data: {data}") if key == "01": user = data[:3] data = data[3:] self._client_list[int(user)].send_message(data.encode()) elif key == "02": # Name list data = "02" + str(self._name_list) print("the data im about to send: " + data) self.find_client_id_based(source).send_message( data.encode()) elif key == "03": # Messages index_of_mark = data.index("#") user_destination = data[:index_of_mark] data = data[index_of_mark + 1:] message = "03" + client_.get_username() + "#" + data try: print("MESSAGE IM ABOUT TO SEND: " + message) self.find_client_username_based( user_destination).send_message(message.encode()) if user_destination != client_.get_username(): client_.send_message(message.encode()) except Exception as e: print(e) client_.send_message( "03System# The User is not online".encode()) elif key == "04": # Log in index_of_mark = data.index("#") username = data[:index_of_mark] print("this is your username: "******"#") password = data[:index_of_mark] print("this is your password: "******"is exists: " + str(user_exists)) if user_exists: client_.send_message(b"04Logged in") client_.set_username(username) else: client_.send_message( b"04Username or password are incorrect") elif key == "05": # Add a new room room = Room() room.add_user(client_) with self._rooms_lock: self._rooms[room.room_id] = room self._rooms[room.room_id].print_users() message_to_user = "******" + str(room.room_id) client_.send_message(message_to_user.encode()) client_.set_room_id(room.room_id) elif key == "06": # Add user to room try: client_.set_room_id(int(data)) with self._rooms_lock: self._rooms[int(data)].add_user(client_) except Exception as e: print(e) room = Room() room.add_user(client_) with self._rooms_lock: self._rooms[room.room_id] = room self._rooms[room.room_id].print_users() message_to_user = "******" + str(room.room_id) client_.send_message(message_to_user.encode()) client_.set_room_id(room.room_id) elif key == "07": # Send a message to Room data = client_.get_username() + data with self._rooms_lock: self._rooms[client_.get_room_id()].add_message(data) elif key == b"08": # Images for whiteboard room_id = client_.get_room_id() with self._rooms_lock: users_in_room = self._rooms[room_id].get_copy_of_users( ) for user in users_in_room: if user.get_username() != client_.get_username(): user.send_message(b'08' + data) elif key == "09": # Leave Room room_id_ = client_.get_room_id() with self._rooms_lock: self._rooms[room_id_].remove_user( client_.get_username()) self._rooms[room_id_].print_users() elif key == "10": # Sign up request index_of_mark = data.index("#") username = data[:index_of_mark] print("this is your username: "******"this is your password: "******"User already exists") client_.send_message(b"10Username already taken") else: client_.send_message( b"10Singed Up, press back and login normally") client_.set_username(username) finally: client_.close_connection() self.remove_client(client_) elif key == "11": # Close Socket and remove client client_.send_message(b"11") try: room_id_ = client_.get_room_id() with self._rooms_lock: self._rooms[room_id_].remove_user( client_.get_username()) except KeyError: pass client_.close_connection() self.remove_client(client_)