mirror of
https://github.com/apache/superset.git
synced 2026-04-07 10:31:50 +00:00
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:
committed by
GitHub
parent
c016ca5ad9
commit
050c6daff3
@@ -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)
|
||||
|
||||
@@ -171,6 +171,7 @@ class Database(Model, AuditMixinNullable, ImportExportMixin): # pylint: disable
|
||||
"allow_dml",
|
||||
"allow_file_upload",
|
||||
"extra",
|
||||
"impersonate_user",
|
||||
]
|
||||
extra_import_fields = [
|
||||
"password",
|
||||
|
||||
@@ -371,6 +371,7 @@ class TestExportDatabasesCommand(SupersetTestCase):
|
||||
"allow_dml",
|
||||
"allow_csv_upload",
|
||||
"extra",
|
||||
"impersonate_user",
|
||||
"uuid",
|
||||
"version",
|
||||
]
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
""",
|
||||
|
||||
Reference in New Issue
Block a user