def test_extract_errors(self): """ Test that custom error messages are extracted correctly. """ msg = "mysql: Access denied for user 'test'@'testuser.com'" result = MySQLEngineSpec.extract_errors(Exception(msg)) assert result == [ SupersetError( error_type=SupersetErrorType.CONNECTION_ACCESS_DENIED_ERROR, message= 'Either the username "test" or the password is incorrect.', level=ErrorLevel.ERROR, extra={ "invalid": ["username", "password"], "engine_name": "MySQL", "issue_codes": [ { "code": 1014, "message": "Issue 1014 - Either the" " username or the password is wrong.", }, { "code": 1015, "message": "Issue 1015 - Either the database is " "spelled incorrectly or does not exist.", }, ], }, ) ] msg = "mysql: Unknown MySQL server host 'badhostname.com'" result = MySQLEngineSpec.extract_errors(Exception(msg)) assert result == [ SupersetError( error_type=SupersetErrorType.CONNECTION_INVALID_HOSTNAME_ERROR, message='Unknown MySQL server host "badhostname.com".', level=ErrorLevel.ERROR, extra={ "invalid": ["host"], "engine_name": "MySQL", "issue_codes": [{ "code": 1007, "message": "Issue 1007 - The hostname" " provided can't be resolved.", }], }, ) ] msg = "mysql: Can't connect to MySQL server on 'badconnection.com'" result = MySQLEngineSpec.extract_errors(Exception(msg)) assert result == [ SupersetError( error_type=SupersetErrorType.CONNECTION_HOST_DOWN_ERROR, message='The host "badconnection.com" might be ' "down and can't be reached.", level=ErrorLevel.ERROR, extra={ "invalid": ["host", "port"], "engine_name": "MySQL", "issue_codes": [{ "code": 1007, "message": "Issue 1007 - The hostname provided" " can't be resolved.", }], }, ) ] msg = "mysql: Can't connect to MySQL server on '93.184.216.34'" result = MySQLEngineSpec.extract_errors(Exception(msg)) assert result == [ SupersetError( error_type=SupersetErrorType.CONNECTION_HOST_DOWN_ERROR, message= 'The host "93.184.216.34" might be down and can\'t be reached.', level=ErrorLevel.ERROR, extra={ "invalid": ["host", "port"], "engine_name": "MySQL", "issue_codes": [{ "code": 10007, "message": "Issue 1007 - The hostname provided " "can't be resolved.", }], }, ) ] msg = "mysql: Unknown database 'badDB'" result = MySQLEngineSpec.extract_errors(Exception(msg)) print(result) assert result == [ SupersetError( message='Unable to connect to database "badDB".', error_type=SupersetErrorType.CONNECTION_UNKNOWN_DATABASE_ERROR, level=ErrorLevel.ERROR, extra={ "invalid": ["database"], "engine_name": "MySQL", "issue_codes": [{ "code": 1015, "message": "Issue 1015 - Either the database is spelled incorrectly or does not exist.", }], }, ) ]
def test_extract_errors(self): """ Test that custom error messages are extracted correctly. """ msg = "mysql: Access denied for user 'test'@'testuser.com'. " result = MySQLEngineSpec.extract_errors(Exception(msg)) assert result == [ SupersetError( error_type=SupersetErrorType. TEST_CONNECTION_ACCESS_DENIED_ERROR, message= 'Either the username "test" or the password is incorrect.', level=ErrorLevel.ERROR, extra={ "engine_name": "MySQL", "issue_codes": [{ "code": 1014, "message": "Issue 1014 - Either the username or the password is wrong.", }], }, ) ] msg = "mysql: Unknown MySQL server host 'badhostname.com'. " result = MySQLEngineSpec.extract_errors(Exception(msg)) assert result == [ SupersetError( error_type=SupersetErrorType. TEST_CONNECTION_INVALID_HOSTNAME_ERROR, message='Unknown MySQL server host "badhostname.com".', level=ErrorLevel.ERROR, extra={ "engine_name": "MySQL", "issue_codes": [{ "code": 1007, "message": "Issue 1007 - The hostname provided can't be resolved.", }], }, ) ] msg = "mysql: Can't connect to MySQL server on 'badconnection.com'." result = MySQLEngineSpec.extract_errors(Exception(msg)) assert result == [ SupersetError( error_type=SupersetErrorType.TEST_CONNECTION_HOST_DOWN_ERROR, message= 'The host "badconnection.com" might be down and can\'t be reached.', level=ErrorLevel.ERROR, extra={ "engine_name": "MySQL", "issue_codes": [{ "code": 1007, "message": "Issue 1007 - The hostname provided can't be resolved.", }], }, ) ] msg = "mysql: Can't connect to MySQL server on '93.184.216.34'." result = MySQLEngineSpec.extract_errors(Exception(msg)) assert result == [ SupersetError( error_type=SupersetErrorType.TEST_CONNECTION_HOST_DOWN_ERROR, message= 'The host "93.184.216.34" might be down and can\'t be reached.', level=ErrorLevel.ERROR, extra={ "engine_name": "MySQL", "issue_codes": [{ "code": 10007, "message": "Issue 1007 - The hostname provided can't be resolved.", }], }, ) ]