mirror of
https://github.com/apache/superset.git
synced 2026-05-07 00:44:26 +00:00
fix: mask password on DB import (#33267)
This commit is contained in:
committed by
Michael S. Molina
parent
f56757a0e9
commit
ee8edcf4b4
@@ -69,7 +69,11 @@ def import_database(
|
||||
# Before it gets removed in import_from_dict
|
||||
ssh_tunnel_config = config.pop("ssh_tunnel", None)
|
||||
|
||||
# set SQLAlchemy URI via `set_sqlalchemy_uri` so that the password gets masked
|
||||
sqlalchemy_uri = config.pop("sqlalchemy_uri")
|
||||
database: Database = Database.import_from_dict(config, recursive=False)
|
||||
database.set_sqlalchemy_uri(sqlalchemy_uri)
|
||||
|
||||
if database.id is None:
|
||||
db.session.flush()
|
||||
|
||||
|
||||
@@ -421,7 +421,8 @@ class TestImportDatabasesCommand(SupersetTestCase):
|
||||
assert database.database_name == "imported_database"
|
||||
assert database.expose_in_sqllab
|
||||
assert database.extra == "{}"
|
||||
assert database.sqlalchemy_uri == "postgresql://user:pass@host1"
|
||||
assert database.sqlalchemy_uri == "postgresql://user:XXXXXXXXXX@host1"
|
||||
assert database.password == "pass" # noqa: S105
|
||||
|
||||
db.session.delete(database)
|
||||
db.session.commit()
|
||||
@@ -461,7 +462,8 @@ class TestImportDatabasesCommand(SupersetTestCase):
|
||||
assert database.database_name == "imported_database"
|
||||
assert database.expose_in_sqllab
|
||||
assert database.extra == '{"schemas_allowed_for_file_upload": ["upload"]}'
|
||||
assert database.sqlalchemy_uri == "postgresql://user:pass@host1"
|
||||
assert database.sqlalchemy_uri == "postgresql://user:XXXXXXXXXX@host1"
|
||||
assert database.password == "pass" # noqa: S105
|
||||
|
||||
db.session.delete(database)
|
||||
db.session.commit()
|
||||
@@ -732,7 +734,8 @@ class TestImportDatabasesCommand(SupersetTestCase):
|
||||
assert database.database_name == "imported_database"
|
||||
assert database.expose_in_sqllab
|
||||
assert database.extra == "{}"
|
||||
assert database.sqlalchemy_uri == "postgresql://user:pass@host1"
|
||||
assert database.sqlalchemy_uri == "postgresql://user:XXXXXXXXXX@host1"
|
||||
assert database.password == "pass" # noqa: S105
|
||||
|
||||
model_ssh_tunnel = (
|
||||
db.session.query(SSHTunnel)
|
||||
@@ -779,7 +782,8 @@ class TestImportDatabasesCommand(SupersetTestCase):
|
||||
assert database.database_name == "imported_database"
|
||||
assert database.expose_in_sqllab
|
||||
assert database.extra == "{}"
|
||||
assert database.sqlalchemy_uri == "postgresql://user:pass@host1"
|
||||
assert database.sqlalchemy_uri == "postgresql://user:XXXXXXXXXX@host1"
|
||||
assert database.password == "pass" # noqa: S105
|
||||
|
||||
model_ssh_tunnel = (
|
||||
db.session.query(SSHTunnel)
|
||||
@@ -1008,7 +1012,12 @@ class TestTestConnectionDatabaseCommand(SupersetTestCase):
|
||||
@patch("superset.db_engine_specs.base.is_hostname_valid")
|
||||
@patch("superset.db_engine_specs.base.is_port_open")
|
||||
@patch("superset.commands.database.validate.DatabaseDAO")
|
||||
def test_validate(DatabaseDAO, is_port_open, is_hostname_valid, app_context): # noqa: N803
|
||||
def test_validate(
|
||||
mock_database_dao, # noqa: N803
|
||||
is_port_open,
|
||||
is_hostname_valid,
|
||||
app_context,
|
||||
) -> None:
|
||||
"""
|
||||
Test parameter validation.
|
||||
"""
|
||||
|
||||
@@ -45,7 +45,8 @@ def test_import_database(mocker: MockerFixture, session: Session) -> None:
|
||||
config = copy.deepcopy(database_config)
|
||||
database = import_database(config)
|
||||
assert database.database_name == "imported_database"
|
||||
assert database.sqlalchemy_uri == "postgresql://user:pass@host1"
|
||||
assert database.sqlalchemy_uri == "postgresql://user:XXXXXXXXXX@host1"
|
||||
assert database.password == "pass" # noqa: S105
|
||||
assert database.cache_timeout is None
|
||||
assert database.expose_in_sqllab is True
|
||||
assert database.allow_run_async is False
|
||||
|
||||
Reference in New Issue
Block a user