fix(cli): add impersonate_user to db import (#29522)

Co-authored-by: Eugene Apollonsky <eapollonskii@intertrust.com>
Co-authored-by: Elizabeth Thompson <eschutho@gmail.com>
This commit is contained in:
Eugene Apollonsky
2024-08-13 00:05:20 +03:00
committed by GitHub
parent c016ca5ad9
commit 050c6daff3
5 changed files with 28 additions and 0 deletions

View File

@@ -857,6 +857,7 @@ class ImportV1DatabaseSchema(Schema):
allow_cvas = fields.Boolean()
allow_dml = fields.Boolean(required=False)
allow_csv_upload = fields.Boolean()
impersonate_user = fields.Boolean()
extra = fields.Nested(ImportV1DatabaseExtraSchema)
uuid = fields.UUID(required=True)
version = fields.String(required=True)

View File

@@ -171,6 +171,7 @@ class Database(Model, AuditMixinNullable, ImportExportMixin): # pylint: disable
"allow_dml",
"allow_file_upload",
"extra",
"impersonate_user",
]
extra_import_fields = [
"password",

View File

@@ -371,6 +371,7 @@ class TestExportDatabasesCommand(SupersetTestCase):
"allow_dml",
"allow_csv_upload",
"extra",
"impersonate_user",
"uuid",
"version",
]

View File

@@ -172,6 +172,30 @@ def test_import_database_with_version(mocker: MockerFixture, session: Session) -
assert json.loads(database.extra)["version"] == "1.1.1"
def test_import_database_with_user_impersonation(
mocker: MockerFixture,
session: Session,
) -> None:
"""
Test importing a database that is managed externally.
"""
from superset import security_manager
from superset.commands.database.importers.v1.utils import import_database
from superset.models.core import Database
from tests.integration_tests.fixtures.importexport import database_config
mocker.patch.object(security_manager, "can_access", return_value=True)
mocker.patch("superset.commands.database.importers.v1.utils.add_permissions")
engine = db.session.get_bind()
Database.metadata.create_all(engine) # pylint: disable=no-member
config = copy.deepcopy(database_config)
config["impersonate_user"] = True
database = import_database(config)
assert database.impersonate_user is True
def test_add_permissions(mocker: MockerFixture) -> None:
"""
Test adding permissions to a database when it's imported.

View File

@@ -220,6 +220,7 @@ extra:
engine_params: {{}}
metadata_cache_timeout: {{}}
schemas_allowed_for_file_upload: []
impersonate_user: false
uuid: {database.uuid}
version: 1.0.0
""",