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)
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)
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')))
def test___str__(self): exp = "Spam" self.assertEqual(exp, str(errors.Error(exp)))