mirror of
https://github.com/apache/superset.git
synced 2026-04-19 16:14:52 +00:00
fix: create virtual dataset validation (#26625)
This commit is contained in:
committed by
GitHub
parent
7af82ae87d
commit
8e19f59dd2
@@ -38,7 +38,7 @@ from superset.commands.importers.exceptions import IncorrectVersionError
|
||||
from superset.connectors.sqla.models import SqlaTable
|
||||
from superset.models.core import Database
|
||||
from superset.models.slice import Slice
|
||||
from superset.utils.core import get_example_default_schema
|
||||
from superset.utils.core import get_example_default_schema, override_user
|
||||
from superset.utils.database import get_example_database
|
||||
from tests.integration_tests.base_tests import SupersetTestCase
|
||||
from tests.integration_tests.fixtures.birth_names_dashboard import (
|
||||
@@ -509,6 +509,7 @@ class TestImportDatasetsCommand(SupersetTestCase):
|
||||
"metadata.yaml": yaml.safe_dump(database_metadata_config),
|
||||
"databases/imported_database.yaml": yaml.safe_dump(database_config),
|
||||
}
|
||||
|
||||
command = ImportDatabasesCommand(contents)
|
||||
command.run()
|
||||
|
||||
@@ -558,11 +559,7 @@ class TestCreateDatasetCommand(SupersetTestCase):
|
||||
{"table_name": "table", "database": get_example_database().id}
|
||||
).run()
|
||||
|
||||
@patch("superset.security.manager.g")
|
||||
@patch("superset.commands.utils.g")
|
||||
def test_create_dataset_command(self, mock_g, mock_g2):
|
||||
mock_g.user = security_manager.find_user("admin")
|
||||
mock_g2.user = mock_g.user
|
||||
def test_create_dataset_command(self):
|
||||
examples_db = get_example_database()
|
||||
with examples_db.get_sqla_engine_with_context() as engine:
|
||||
engine.execute("DROP TABLE IF EXISTS test_create_dataset_command")
|
||||
@@ -570,22 +567,38 @@ class TestCreateDatasetCommand(SupersetTestCase):
|
||||
"CREATE TABLE test_create_dataset_command AS SELECT 2 as col"
|
||||
)
|
||||
|
||||
table = CreateDatasetCommand(
|
||||
{"table_name": "test_create_dataset_command", "database": examples_db.id}
|
||||
).run()
|
||||
fetched_table = (
|
||||
db.session.query(SqlaTable)
|
||||
.filter_by(table_name="test_create_dataset_command")
|
||||
.one()
|
||||
)
|
||||
self.assertEqual(table, fetched_table)
|
||||
self.assertEqual([owner.username for owner in table.owners], ["admin"])
|
||||
with override_user(security_manager.find_user("admin")):
|
||||
table = CreateDatasetCommand(
|
||||
{
|
||||
"table_name": "test_create_dataset_command",
|
||||
"database": examples_db.id,
|
||||
}
|
||||
).run()
|
||||
fetched_table = (
|
||||
db.session.query(SqlaTable)
|
||||
.filter_by(table_name="test_create_dataset_command")
|
||||
.one()
|
||||
)
|
||||
self.assertEqual(table, fetched_table)
|
||||
self.assertEqual([owner.username for owner in table.owners], ["admin"])
|
||||
|
||||
db.session.delete(table)
|
||||
with examples_db.get_sqla_engine_with_context() as engine:
|
||||
engine.execute("DROP TABLE test_create_dataset_command")
|
||||
db.session.commit()
|
||||
|
||||
def test_create_dataset_command_not_allowed(self):
|
||||
examples_db = get_example_database()
|
||||
with override_user(security_manager.find_user("gamma")):
|
||||
with self.assertRaises(DatasetInvalidError):
|
||||
_ = CreateDatasetCommand(
|
||||
{
|
||||
"sql": "select * from ab_user",
|
||||
"database": examples_db.id,
|
||||
"table_name": "exp1",
|
||||
}
|
||||
).run()
|
||||
|
||||
|
||||
class TestDatasetWarmUpCacheCommand(SupersetTestCase):
|
||||
def test_warm_up_cache_command_table_not_found(self):
|
||||
|
||||
Reference in New Issue
Block a user