Exemplo n.º 1
0
    def test___init__(self):
        self.assertTrue(issubclass(errors.Error, Exception))

        err = errors.Error()
        self.assertEqual(-1, err.errno)
        self.assertEqual('Unknown error', err.msg)
        self.assertEqual(None, err.sqlstate)

        err = errors.Error('Ham', errno=1)
        self.assertEqual(1, err.errno)
        self.assertEqual('1: Ham', err.msg)

        err = errors.Error('Ham', errno=1, sqlstate="SPAM")
        self.assertEqual(1, err.errno)
        self.assertEqual('1 (SPAM): Ham', err.msg)

        err = errors.Error(errno=2000)
        self.assertEqual('2000: Unknown MySQL error', err.msg)

        err = errors.Error(errno=2003, values=('/path/to/ham', 2))
        self.assertEqual(
            "2003: Can't connect to MySQL server on '/path/to/ham' (2)",
            err.msg)

        err = errors.Error(errno=2001, values=('ham', ))
        if '(Warning:' in str(err):
            self.fail('Found %d in error message.')

        err = errors.Error(errno=2003, values=('ham', ))
        self.assertEqual(
            "2003: Can't connect to MySQL server on '%-.100s' (%s) "
            "(Warning: not enough arguments for format string)", err.msg)
Exemplo n.º 2
0
    def update_client_profile_data(self, username, password, new_password, full_name, email,
                                         health_number, birth_date, weight, height, additional_information):
        """
        Updates the profile information for a user. The function receives all information
        to overload all data, assuming that some of it is the same as the stored one.

        :param username: of the client to update the data
        :type username: str
        :param password: old clear text password
        :type password: str
        :param new_password: new clear text password
        :type new_password: str
        :param full_name: full name of the client
        :type full_name: str
        :param email: email of the client
        :type email: str
        :param health_number: number used on the country of the client to identify him in which concerns the health
            department
        :type health_number: int
        :param birth_date: with format dd-mm-yyyy
        :type birth_date: str
        :param weight: in kilograms
        :type weight: float
        :param height: in meters
        :type height: float
        :param additional_information: information that can be important to mention so a medic can be more contextualized
        :type additional_information: str
        """
        try:
            conn, cursor = self._init_connection()

            if password and new_password:
                cursor.callproc(StoredProcedures.GET_CREDENTIALS, [username])
                user_type, derived_password, salt = next(cursor.stored_results()).fetchall()[0]

                if not self._verify_password(password, derived_password, salt):
                    raise errors.Error("Wrong password!", sqlstate=SQL_STATE)

                new_password, new_salt = self._derive_password(new_password)
            else:
                new_password, new_salt = None, None

            cursor.callproc(StoredProcedures.UPDATE_CLIENT_PROFILE_DATA, (username, new_password, new_salt,
                                                                          full_name, email, health_number,
                                                                          birth_date, weight, height,
                                                                          additional_information))
        except Exception as e:
            if isinstance(e, errors.Error) and e.sqlstate == SQL_STATE:
                raise LogicException(e.msg)
            raise RelationalDBException(str(e))
        finally:
            self._close_conenction(conn, cursor)
    def test___init__(self):
        self.assertTrue(issubclass(errors.Error, StandardError))

        err = errors.Error(None)
        self.assertEqual(-1, err.errno)
        self.assertEqual('Unknown error', err.msg)

        msg = 'Ham'
        err = errors.Error(msg, errno=1)
        self.assertEqual(1, err.errno)
        self.assertEqual('1: {0}'.format(msg), err._full_msg)
        self.assertEqual(msg, err.msg)

        err = errors.Error('Ham', errno=1, sqlstate="SPAM")
        self.assertEqual(1, err.errno)
        self.assertEqual('1 (SPAM): Ham', err._full_msg)
        self.assertEqual('1 (SPAM): Ham', str(err._full_msg))

        err = errors.Error(errno=2000)
        self.assertEqual(u'Unknown MySQL error', err.msg)
        self.assertEqual('2000: Unknown MySQL error', err._full_msg)

        err = errors.Error(errno=2003, values=('/path/to/ham', 2))
        self.assertEqual(
            u"2003: Can't connect to MySQL server on '/path/to/ham' (2)",
            err._full_msg)
        self.assertEqual(
            u"Can't connect to MySQL server on '/path/to/ham' (2)", err.msg)

        err = errors.Error(errno=2001, values=('ham', ))
        if '(Warning:' in str(err):
            self.fail('Found %d in error message.')

        err = errors.Error(errno=2003, values=('ham', ))
        self.assertEqual(
            u"2003: Can't connect to MySQL server on '%-.100s' (%s) "
            u"(Warning: not enough arguments for format string)",
            err._full_msg)
Exemplo n.º 4
0
    def test___init__(self):
        self.assertTrue(issubclass(errors.Error, Exception))

        err = errors.Error()
        self.assertEqual(-1, err.errno)
        self.assertEqual('Unknown error', err.msg)
        self.assertEqual(None, err.sqlstate)

        msg = 'Ham'
        err = errors.Error(msg, errno=1)
        self.assertEqual(1, err.errno)
        self.assertEqual('1: {0}'.format(msg), err._full_msg)
        self.assertEqual(msg, err.msg)

        err = errors.Error('Ham', errno=1, sqlstate="SPAM")
        self.assertEqual(1, err.errno)
        self.assertEqual('1 (SPAM): Ham', err._full_msg)
        self.assertEqual('1 (SPAM): Ham', str(err))

        err = errors.Error(errno=2000)
        self.assertEqual('Unknown MySQL error', err.msg)
        self.assertEqual('2000: Unknown MySQL error', err._full_msg)

        err = errors.Error(errno=2003, values=('localhost', 3306, 2))
        self.assertEqual(
            "2003: Can't connect to MySQL server on 'localhost:3306' (2)",
            err._full_msg)
        self.assertEqual(
            "Can't connect to MySQL server on 'localhost:3306' (2)", err.msg)

        err = errors.Error(errno=2001, values=('ham', ))
        if '(Warning:' in str(err):
            self.fail('Found %d in error message.')

        err = errors.Error(errno=2003, values=('ham', ))
        self.assertEqual(
            "2003: Can't connect to MySQL server on '%-.100s:%u' (%s) "
            "(Warning: not enough arguments for format string)", err._full_msg)
 def test___str__(self):
     msg = "Spam"
     self.assertEqual("Spam", str(errors.Error(msg)))
     self.assertEqual("1: Spam", str(errors.Error(msg, 1)))
     self.assertEqual("1 (XYZ): Spam",
                      str(errors.Error(msg, 1, sqlstate='XYZ')))
Exemplo n.º 6
0
 def test___str__(self):
     exp = "Spam"
     self.assertEqual(exp, str(errors.Error(exp)))