fix: optimize catalog permission sync when importing dashboards (#33679)

This commit is contained in:
arafoperata
2025-06-05 03:21:17 +10:00
committed by GitHub
parent 20519158d2
commit ff34e3c81e
2 changed files with 46 additions and 4 deletions

View File

@@ -47,6 +47,37 @@ def test_add_permissions(mocker: MockerFixture) -> None:
)
def test_add_permissions_get_default_catalog(mocker: MockerFixture):
"""
Test permissions only added to the default catalog if multi-catalog is not enabled.
Important when the database does not support cross-catalog queries (like Postgres).
"""
database = mocker.MagicMock()
database.database_name = "my_db"
database.db_engine_spec.supports_catalog = True
database.db_engine_spec.supports_cross_catalog_queries = False
database.allow_multi_catalog = False
database.get_all_catalog_names.return_value = ["catalog1", "catalog2"]
database.get_default_catalog.return_value = "catalog1"
database.get_all_schema_names.side_effect = [["schema1"], ["schema2"]]
ssh_tunnel = mocker.MagicMock()
add_permission_view_menu = mocker.patch(
"superset.commands.database.importers.v1.utils.security_manager."
"add_permission_view_menu"
)
add_permissions(database, ssh_tunnel)
add_permission_view_menu.assert_has_calls(
[
mocker.call("catalog_access", "[my_db].[catalog1]"),
mocker.call("schema_access", "[my_db].[catalog1].[schema1]"),
]
)
assert add_permission_view_menu.call_count == 2
def test_add_permissions_handle_failures(mocker: MockerFixture) -> None:
"""
Test adding permissions to a database when it's created in case