feat: error messages when connecting to mssql (#14171)

* database errors for mssql

* revisions
This commit is contained in:
AAfghahi 2021-04-16 12:43:42 -04:00 committed by GitHub
parent 8db7be16da
commit df04c3af21
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 37 additions and 11 deletions

View File

@ -93,6 +93,7 @@ class TestConnectionDatabaseCommand(BaseCommand):
"password": url.password, "password": url.password,
"port": url.port, "port": url.port,
"username": url.username, "username": url.username,
"database": url.database,
} }
errors = database.db_engine_spec.extract_errors(ex, context) errors = database.db_engine_spec.extract_errors(ex, context)
raise DatabaseTestConnectionFailedError(errors) raise DatabaseTestConnectionFailedError(errors)

View File

@ -66,7 +66,10 @@ class MssqlEngineSpec(BaseEngineSpec):
custom_errors = { custom_errors = {
CONNECTION_ACCESS_DENIED_REGEX: ( CONNECTION_ACCESS_DENIED_REGEX: (
__('Either the username "%(username)s" or the password is incorrect.'), __(
'Either the username "%(username)s", password, '
'or database name "%(database)s" is incorrect.'
),
SupersetErrorType.CONNECTION_ACCESS_DENIED_ERROR, SupersetErrorType.CONNECTION_ACCESS_DENIED_ERROR,
), ),
CONNECTION_INVALID_HOSTNAME_REGEX: ( CONNECTION_INVALID_HOSTNAME_REGEX: (

View File

@ -179,7 +179,14 @@ ERROR_TYPES_TO_ISSUE_CODES_MAPPING = {
{ {
"code": 1014, "code": 1014,
"message": _("Issue 1014 - Either the username or the password is wrong."), "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."
),
},
], ],
SupersetErrorType.CONNECTION_UNKNOWN_DATABASE_ERROR: [ SupersetErrorType.CONNECTION_UNKNOWN_DATABASE_ERROR: [
{ {

View File

@ -284,11 +284,11 @@ Adaptive Server connection failed (mssqldb.cxiotftzsypc.us-west-2.rds.amazonaws.
""" """
) )
result = MssqlEngineSpec.extract_errors( result = MssqlEngineSpec.extract_errors(
Exception(msg), context={"username": "testuser"} Exception(msg), context={"username": "testuser", "database": "testdb"}
) )
assert result == [ assert result == [
SupersetError( SupersetError(
message='Either the username "testuser" or the password is incorrect.', message='Either the username "testuser", password, or database name "testdb" is incorrect.',
error_type=SupersetErrorType.CONNECTION_ACCESS_DENIED_ERROR, error_type=SupersetErrorType.CONNECTION_ACCESS_DENIED_ERROR,
level=ErrorLevel.ERROR, level=ErrorLevel.ERROR,
extra={ extra={
@ -296,8 +296,14 @@ Adaptive Server connection failed (mssqldb.cxiotftzsypc.us-west-2.rds.amazonaws.
"issue_codes": [ "issue_codes": [
{ {
"code": 1014, "code": 1014,
"message": "Issue 1014 - Either the username or the password is wrong.", "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.",
},
], ],
}, },
) )

View File

@ -124,7 +124,12 @@ class TestMySQLEngineSpecsDbEngineSpec(TestDbEngineSpec):
"code": 1014, "code": 1014,
"message": "Issue 1014 - Either the" "message": "Issue 1014 - Either the"
" username or the password is wrong.", " username or the password is wrong.",
} },
{
"code": 1015,
"message": "Issue 1015 - Either the database is "
"spelled incorrectly or does not exist.",
},
], ],
}, },
) )

View File

@ -15,7 +15,6 @@
# specific language governing permissions and limitations # specific language governing permissions and limitations
# under the License. # under the License.
from textwrap import dedent from textwrap import dedent
from unittest import mock
from superset.db_engine_specs.redshift import RedshiftEngineSpec from superset.db_engine_specs.redshift import RedshiftEngineSpec
from superset.errors import ErrorLevel, SupersetError, SupersetErrorType from superset.errors import ErrorLevel, SupersetError, SupersetErrorType
@ -39,9 +38,14 @@ class TestRedshiftDbEngineSpec(TestDbEngineSpec):
"issue_codes": [ "issue_codes": [
{ {
"code": 1014, "code": 1014,
"message": "Issue 1014 - Either the username or " "message": "Issue 1014 - Either the username "
"the password is wrong", "or the password is wrong.",
} },
{
"code": 1015,
"message": "Issue 1015 - Either the database is "
"spelled incorrectly or does not exist.",
},
], ],
}, },
) )