示例#1
0
    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.",
                    }],
                },
            )
        ]
示例#2
0
    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.",
                    }],
                },
            )
        ]