Exemplo n.º 1
0
    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()
Exemplo n.º 2
0
    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()
Exemplo n.º 3
0
    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)
Exemplo n.º 4
0
    def test_add_user_existing_user(self):
        room = Room(TestRoom.user1)
        user2 = User('User123')

        room.add_user(user2)
        self.assertEqual(room.users, [TestRoom.user1])
Exemplo n.º 5
0
    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])
Exemplo n.º 6
0
    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_)