示例#1
0
    def test_handle_user_message(self, sendconnection, sendroom):
        """ Test handling an incomming message """

        connection = ConnectionFactory()
        user = UserFactory(connection=connection, online=True)

        connection_target = ConnectionFactory()

        self.worker.handle(
            {
                "target": {
                    "type": "token",
                    "value": connection_target.token
                },
                "message": "message",
                "source": connection.token
            },
            token=connection.token,
            session=self.session,
        )

        sendroom.assert_not_called()
        sendconnection.assert_called_once()
        self.assertEqual(sendconnection.call_args[0][0],
                         connection_target.token)
        packet = sendconnection.call_args[0][1]

        self.assertIsInstance(packet, smpacket.SMPacketServerNSCCM)
        self.assertRegex(packet["message"], "message")
        self.assertRegex(packet["message"], user.name)
    def test_alive(self):
        """ Test if a connectio is alive """

        connection = ConnectionFactory()
        self.assertTrue(connection.alive)

        connection.close_at = datetime.datetime.utcnow()
        self.assertFalse(connection.alive)
    def test_alive(self):
        """ Test if a connectio is alive """

        connection = ConnectionFactory()
        self.assertTrue(connection.alive)

        connection.close_at = datetime.datetime.utcnow()
        self.assertFalse(connection.alive)
    def test_can(self):
        """ Test connection can """

        conn = ConnectionFactory()
        self.assertEqual(conn.can(ability.Permissions.delete_room), False)

        user = user_with_room_privilege(level=10, connection=conn, online=True)
        room = user.room
        self.assertEqual(conn.can(ability.Permissions.delete_room, room.id), True)
    def test_by_token(self):
        """ Test getting an object given his token """

        self.assertEqual(models.Connection.by_token("aa", self.session), None)

        ConnectionFactory()
        conn = ConnectionFactory()
        self.assertEqual(models.Connection.by_token(conn.token, self.session),
                         conn)
    def test_can(self):
        """ Test connection can """

        conn = ConnectionFactory()
        self.assertEqual(conn.can(ability.Permissions.delete_room), False)

        user = user_with_room_privilege(level=10, connection=conn, online=True)
        room = user.room
        self.assertEqual(conn.can(ability.Permissions.delete_room, room.id),
                         True)
    def test_level(self):
        """ Test getting the level of a connection  """

        conn = ConnectionFactory()
        self.assertEqual(conn.level(), 0)

        user = user_with_room_privilege(level=2, connection=conn, online=True)
        room = user.room
        user_with_room_privilege(level=5, connection=conn, online=False, room=room)

        self.assertEqual(conn.level(room.id), 2)
    def test_level(self):
        """ Test getting the level of a connection  """

        conn = ConnectionFactory()
        self.assertEqual(conn.level(), 0)

        user = user_with_room_privilege(level=2, connection=conn, online=True)
        room = user.room
        user_with_room_privilege(level=5,
                                 connection=conn,
                                 online=False,
                                 room=room)

        self.assertEqual(conn.level(room.id), 2)
示例#9
0
    def test_kick_with_room(self, disconnect_user):
        """ Test banning a user from a room """

        room = RoomFactory()
        self.connection.room = room

        user_with_room_privilege(
            connection=self.connection,
            online=True,
            room=room,
            level=self.chat_command.permission.value,
        )
        target_connection = ConnectionFactory(room=room)
        target_user = user_with_room_privilege(
            room=room,
            online=True,
            connection=target_connection,
        )

        self.chat_command(self.resource, target_user.name)
        self.assertFalse(
            models.Ban.is_ban(self.session, user_id=target_user.id))
        self.assertFalse(
            models.Ban.is_ban(self.session,
                              user_id=target_user.id,
                              room_id=room.id))

        self.assertIsNone(target_user.room)
        self.assertIsNone(target_connection.room)

        disconnect_user.assert_not_called()
示例#10
0
    def setUp(self):
        super().setUp()

        self.server = server.StepmaniaServer()

        self.connection = ConnectionFactory()
        self.token = self.connection.token
示例#11
0
    def setUp(self):
        super().setUp()

        self.server = server.StepmaniaServer()
        self.conn = smconn.StepmaniaConn(self.server, "8.8.8.8", 42)
        self.connection = ConnectionFactory(token=self.conn.token)

        self.controller = StepmaniaController(self.server, self.conn, None,
                                              self.session)
示例#12
0
    def setUp(self):
        super().setUp()

        self.server = server.StepmaniaServer()

        self.connection = ConnectionFactory()
        self.token = self.connection.token

        self.resource = ChatResource(self.server, self.token, self.session)
    def test_remove(self):
        """ Test remove connection """

        self.session.query(models.Connection).delete()

        models.Connection.remove("efz", self.session)

        self.assertEqual(self.session.query(models.Connection).count(), 0)

        conn = ConnectionFactory()
        self.assertEqual(self.session.query(models.Connection).count(), 1)

        models.Connection.remove(conn.token, self.session)
        self.assertEqual(self.session.query(models.Connection).count(), 0)
    def test_active_users(self):
        """ Test getting the active users in a connection """
        conn = ConnectionFactory()
        self.assertEqual(conn.active_users, [])

        user1 = UserFactory(connection=conn, online=True)
        user2 = UserFactory(connection=conn, online=False)

        self.assertEqual(conn.active_users, [user1])

        user3 = UserFactory(connection=conn, online=True)

        self.assertEqual(len(conn.active_users), 2)
        self.assertIn(user1, conn.active_users)
        self.assertIn(user3, conn.active_users)
        self.assertNotIn(user2, conn.active_users)
示例#15
0
    def test_route(self, handle_controller1, handle_controller2):
        """ Test routing packet """

        test_router = router.Router()

        serv = server.StepmaniaServer()
        conn = smconn.StepmaniaConn(server, "8.8.8.8", 42)
        connection = ConnectionFactory(token=conn.token)

        command = smcommand.SMClientCommand.NSCAttack
        packet = smpacket.SMPacket.new(command)

        # No route
        test_router.route(serv, conn, packet)
        handle_controller1.assert_not_called()
        handle_controller2.assert_not_called()

        # Route only controller 1
        test_router.add_route(command, Controller1)
        test_router.route(serv, conn, packet, session=self.session)
        handle_controller1.assert_called_with()
        handle_controller1.reset_mock()
        handle_controller2.assert_not_called()

        # Route with require login
        test_router.add_route(command, Controller2)
        test_router.route(serv, conn, packet, session=self.session)
        handle_controller1.assert_called_with()
        handle_controller1.reset_mock()
        handle_controller2.assert_not_called()

        # Test with login user
        UserFactory(connection_token=connection.token, online=True)

        test_router.route(serv, conn, packet, session=self.session)
        handle_controller1.assert_called_with()
        handle_controller2.assert_called_with()
        handle_controller1.reset_mock()
        handle_controller2.reset_mock()

        # With exceptions, no crash
        handle_controller1.side_effect = Exception()
        test_router.route(serv, conn, packet, session=self.session)
        handle_controller1.assert_called_with()
        handle_controller2.assert_called_with()
        handle_controller1.reset_mock()
        handle_controller2.reset_mock()