diff --git a/tests/access_tests.py b/tests/access_tests.py index d452d13aa5..2dec294bbb 100644 --- a/tests/access_tests.py +++ b/tests/access_tests.py @@ -20,6 +20,9 @@ import json import unittest from unittest import mock +import pytest + +from tests.fixtures.energy_dashboard import load_energy_table_with_slice from tests.test_app import app # isort:skip from superset import db, security_manager from superset.connectors.connector_registry import ConnectorRegistry @@ -184,6 +187,7 @@ class TestRequestAccess(SupersetTestCase): ) self.assertEqual(3, len(perms)) + @pytest.mark.usefixtures("load_energy_table_with_slice") def test_override_role_permissions_drops_absent_perms(self): override_me = security_manager.find_role("override_me") override_me.permissions.append( @@ -272,6 +276,7 @@ class TestRequestAccess(SupersetTestCase): gamma_user.roles.remove(security_manager.find_role("Alpha")) session.commit() + @pytest.mark.usefixtures("load_energy_table_with_slice") def test_clean_requests_after_db_grant(self): session = db.session diff --git a/tests/charts/api_tests.py b/tests/charts/api_tests.py index 7479769437..261fafb700 100644 --- a/tests/charts/api_tests.py +++ b/tests/charts/api_tests.py @@ -33,6 +33,8 @@ from sqlalchemy.sql import func from tests.test_app import app from superset.connectors.sqla.models import SqlaTable from superset.utils.core import AnnotationType, get_example_database +from tests.fixtures.energy_dashboard import load_energy_table_with_slice +from tests.fixtures.unicode_dashboard import load_unicode_dashboard_with_slice from superset.connectors.connector_registry import ConnectorRegistry from superset.extensions import db, security_manager from superset.models.annotations import AnnotationLayer @@ -709,6 +711,7 @@ class TestChartApi(SupersetTestCase, ApiOwnersTestCaseMixin): self.assertEqual(rv.status_code, 404) @pytest.mark.usefixtures("load_unicode_dashboard_with_slice") + @pytest.mark.usefixtures("load_energy_table_with_slice") def test_get_charts(self): """ Chart API: Test get charts @@ -761,7 +764,7 @@ class TestChartApi(SupersetTestCase, ApiOwnersTestCaseMixin): self.assertEqual(data["count"], 5) @pytest.fixture() - def load_charts(self): + def load_energy_charts(self): with app.app_context(): admin = self.get_user("admin") energy_table = ( @@ -797,7 +800,7 @@ class TestChartApi(SupersetTestCase, ApiOwnersTestCaseMixin): db.session.delete(chart5) db.session.commit() - @pytest.mark.usefixtures("load_charts") + @pytest.mark.usefixtures("load_energy_charts") def test_get_charts_custom_filter(self): """ Chart API: Test get charts custom filter @@ -830,7 +833,7 @@ class TestChartApi(SupersetTestCase, ApiOwnersTestCaseMixin): self.assertEqual(item["slice_name"], expected_response[index]["slice_name"]) self.assertEqual(item["viz_type"], expected_response[index]["viz_type"]) - @pytest.mark.usefixtures("load_charts") + @pytest.mark.usefixtures("load_energy_table_with_slice", "load_energy_charts") def test_admin_gets_filtered_energy_slices(self): # test filtering on datasource_name arguments = { @@ -848,7 +851,7 @@ class TestChartApi(SupersetTestCase, ApiOwnersTestCaseMixin): data = json.loads(rv.data.decode("utf-8")) self.assertEqual(data["count"], 8) - @pytest.mark.usefixtures("load_charts") + @pytest.mark.usefixtures("load_energy_charts") def test_user_gets_none_filtered_energy_slices(self): # test filtering on datasource_name arguments = { @@ -942,7 +945,9 @@ class TestChartApi(SupersetTestCase, ApiOwnersTestCaseMixin): if res["id"] in users_favorite_ids: assert res["value"] - @pytest.mark.usefixtures("load_unicode_dashboard_with_slice") + @pytest.mark.usefixtures( + "load_unicode_dashboard_with_slice", "load_energy_table_with_slice" + ) def test_get_charts_page(self): """ Chart API: Test get charts filter diff --git a/tests/charts/commands_tests.py b/tests/charts/commands_tests.py index c3522077c0..d4e8a1bc91 100644 --- a/tests/charts/commands_tests.py +++ b/tests/charts/commands_tests.py @@ -32,6 +32,7 @@ from superset.connectors.sqla.models import SqlaTable from superset.models.core import Database from superset.models.slice import Slice from tests.base_tests import SupersetTestCase +from tests.fixtures.energy_dashboard import load_energy_table_with_slice from tests.fixtures.importexport import ( chart_config, chart_metadata_config, @@ -43,10 +44,13 @@ from tests.fixtures.importexport import ( class TestExportChartsCommand(SupersetTestCase): @patch("superset.security.manager.g") + @pytest.mark.usefixtures("load_energy_table_with_slice") def test_export_chart_command(self, mock_g): mock_g.user = security_manager.find_user("admin") - example_chart = db.session.query(Slice).all()[0] + example_chart = ( + db.session.query(Slice).filter_by(slice_name="Energy Sankey").one_or_none() + ) command = ExportChartsCommand([example_chart.id]) contents = dict(command.run()) @@ -97,11 +101,14 @@ class TestExportChartsCommand(SupersetTestCase): next(contents) @patch("superset.security.manager.g") + @pytest.mark.usefixtures("load_energy_table_with_slice") def test_export_chart_command_key_order(self, mock_g): """Test that they keys in the YAML have the same order as export_fields""" mock_g.user = security_manager.find_user("admin") - example_chart = db.session.query(Slice).all()[0] + example_chart = ( + db.session.query(Slice).filter_by(slice_name="Energy Sankey").one_or_none() + ) command = ExportChartsCommand([example_chart.id]) contents = dict(command.run()) diff --git a/tests/conftest.py b/tests/conftest.py index 4f7f988ab8..0e197b8416 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -42,7 +42,6 @@ def setup_sample_data() -> Any: from superset import examples examples.load_css_templates() - examples.load_energy(sample=True) examples.load_world_bank_health_n_pop(sample=True) examples.load_birth_names(sample=True) @@ -50,7 +49,6 @@ def setup_sample_data() -> Any: with app.app_context(): engine = get_example_database().get_sqla_engine() - engine.execute("DROP TABLE energy_usage") engine.execute("DROP TABLE wb_health_population") engine.execute("DROP TABLE birth_names") diff --git a/tests/core_tests.py b/tests/core_tests.py index 0c6d3bdb6a..6ac990ba90 100644 --- a/tests/core_tests.py +++ b/tests/core_tests.py @@ -26,6 +26,7 @@ import logging from typing import Dict, List from urllib.parse import quote +import pytest import pytz import random import re @@ -37,7 +38,8 @@ import sqlalchemy as sqla from superset.models.cache import CacheKey from superset.utils.core import get_example_database -from tests.test_app import app # isort:skip +from tests.fixtures.energy_dashboard import load_energy_table_with_slice +from tests.test_app import app import superset.views.utils from superset import ( dataframe, @@ -236,6 +238,7 @@ class TestCore(SupersetTestCase): assert_admin_view_menus_in("Alpha", self.assertNotIn) assert_admin_view_menus_in("Gamma", self.assertNotIn) + @pytest.mark.usefixtures("load_energy_table_with_slice") def test_save_slice(self): self.login(username="admin") slice_name = f"Energy Sankey" @@ -302,6 +305,7 @@ class TestCore(SupersetTestCase): db.session.delete(slc) db.session.commit() + @pytest.mark.usefixtures("load_energy_table_with_slice") def test_filter_endpoint(self): self.login(username="admin") slice_name = "Energy Sankey" @@ -320,7 +324,7 @@ class TestCore(SupersetTestCase): # Changing name resp = self.get_resp(url.format(tbl_id, slice_id)) assert len(resp) > 0 - assert "Carbon Dioxide" in resp + assert "energy_target0" in resp def test_slice_data(self): # slice data should have some required attributes @@ -333,6 +337,7 @@ class TestCore(SupersetTestCase): assert "modified" in slc_data_attributes assert "owners" in slc_data_attributes + @pytest.mark.usefixtures("load_energy_table_with_slice") def test_slices(self): # Testing by hitting the two supported end points for all slices self.login(username="admin") @@ -409,6 +414,7 @@ class TestCore(SupersetTestCase): resp = self.client.get(url) self.assertEqual(resp.status_code, 200) + @pytest.mark.usefixtures("load_energy_table_with_slice") def test_slices_V2(self): # Add explore-v2-beta role to admin user # Test all slice urls as user with with explore-v2-beta role @@ -570,6 +576,7 @@ class TestCore(SupersetTestCase): database.allow_run_async = False db.session.commit() + @pytest.mark.usefixtures("load_energy_table_with_slice") def test_warm_up_cache(self): self.login() slc = self.get_slice("Girls", db.session) diff --git a/tests/dashboard_tests.py b/tests/dashboard_tests.py index c99af19d20..5874de8bb7 100644 --- a/tests/dashboard_tests.py +++ b/tests/dashboard_tests.py @@ -32,6 +32,7 @@ from superset.connectors.sqla.models import SqlaTable from superset.models import core as models from superset.models.dashboard import Dashboard from superset.models.slice import Slice +from tests.fixtures.energy_dashboard import load_energy_table_with_slice from .base_tests import SupersetTestCase @@ -302,6 +303,7 @@ class TestDashboard(SupersetTestCase): if key not in ["modified", "changed_on", "changed_on_humanized"]: self.assertEqual(slc[key], resp["slices"][index][key]) + @pytest.mark.usefixtures("load_energy_table_with_slice") def test_add_slices(self, username="admin"): self.login(username=username) dash = db.session.query(Dashboard).filter_by(slug="births").first() @@ -453,7 +455,7 @@ class TestDashboard(SupersetTestCase): resp = self.get_resp("/api/v1/dashboard/") self.assertNotIn("/superset/dashboard/empty_dashboard/", resp) - @pytest.mark.usefixtures("load_dashboard") + @pytest.mark.usefixtures("load_energy_table_with_slice", "load_dashboard") def test_users_can_view_published_dashboard(self): resp = self.get_resp("/api/v1/dashboard/") self.assertNotIn(f"/superset/dashboard/{pytest.hidden_dash_slug}/", resp) diff --git a/tests/dashboard_utils.py b/tests/dashboard_utils.py index d94c5d4003..36e329e934 100644 --- a/tests/dashboard_utils.py +++ b/tests/dashboard_utils.py @@ -29,7 +29,11 @@ from superset.models.slice import Slice def create_table_for_dashboard( - df: DataFrame, table_name: str, database: Database, dtype: Dict[str, Any] + df: DataFrame, + table_name: str, + database: Database, + dtype: Dict[str, Any], + table_description: str = "", ) -> SqlaTable: df.to_sql( table_name, @@ -48,6 +52,7 @@ def create_table_for_dashboard( if not table: table = table_source(table_name=table_name) table.database = database + table.description = table_description db.session.merge(table) db.session.commit() diff --git a/tests/databases/api_tests.py b/tests/databases/api_tests.py index 71c96b27c7..cb48db1b24 100644 --- a/tests/databases/api_tests.py +++ b/tests/databases/api_tests.py @@ -34,13 +34,13 @@ from superset.models.reports import ReportSchedule, ReportScheduleType from superset.utils.core import get_example_database, get_main_database from tests.base_tests import SupersetTestCase from tests.fixtures.certificates import ssl_certificate +from tests.fixtures.energy_dashboard import load_energy_table_with_slice from tests.fixtures.importexport import ( database_config, dataset_config, database_metadata_config, dataset_metadata_config, ) - from tests.fixtures.unicode_dashboard import load_unicode_dashboard_with_position from tests.test_app import app @@ -800,7 +800,9 @@ class TestDatabaseApi(SupersetTestCase): } self.assertEqual(response, expected_response) - @pytest.mark.usefixtures("load_unicode_dashboard_with_position") + @pytest.mark.usefixtures( + "load_unicode_dashboard_with_position", "load_energy_table_with_slice" + ) def test_get_database_related_objects(self): """ Database API: Test get chart and dashboard count related to a database diff --git a/tests/datasets/api_tests.py b/tests/datasets/api_tests.py index bea5fadfdb..473db7e10f 100644 --- a/tests/datasets/api_tests.py +++ b/tests/datasets/api_tests.py @@ -39,6 +39,7 @@ from superset.utils.core import backend, get_example_database, get_main_database from superset.utils.dict_import_export import export_to_dict from tests.base_tests import SupersetTestCase from tests.conftest import CTAS_SCHEMA_NAME +from tests.fixtures.energy_dashboard import load_energy_table_with_slice from tests.fixtures.importexport import ( database_config, database_metadata_config, @@ -196,6 +197,7 @@ class TestDatasetApi(SupersetTestCase): assert response["count"] == 0 assert response["result"] == [] + @pytest.mark.usefixtures("load_energy_table_with_slice") def test_get_dataset_item(self): """ Dataset API: Test get dataset item diff --git a/tests/datasets/commands_tests.py b/tests/datasets/commands_tests.py index 2e7249b9d9..6fb43203dc 100644 --- a/tests/datasets/commands_tests.py +++ b/tests/datasets/commands_tests.py @@ -17,6 +17,7 @@ # pylint: disable=no-self-use, invalid-name, line-too-long from operator import itemgetter +from typing import Any, List from unittest.mock import patch import pytest @@ -33,6 +34,7 @@ from superset.datasets.commands.importers import v0, v1 from superset.models.core import Database from superset.utils.core import get_example_database from tests.base_tests import SupersetTestCase +from tests.fixtures.energy_dashboard import load_energy_table_with_slice from tests.fixtures.importexport import ( database_config, database_metadata_config, @@ -45,11 +47,14 @@ from tests.fixtures.importexport import ( class TestExportDatasetsCommand(SupersetTestCase): @patch("superset.security.manager.g") + @pytest.mark.usefixtures("load_energy_table_with_slice") def test_export_dataset_command(self, mock_g): mock_g.user = security_manager.find_user("admin") example_db = get_example_database() - example_dataset = example_db.tables[0] + example_dataset = _get_table_from_list_by_name( + "energy_usage", example_db.tables + ) command = ExportDatasetsCommand([example_dataset.id]) contents = dict(command.run()) @@ -76,7 +81,7 @@ class TestExportDatasetsCommand(SupersetTestCase): { "column_name": "source", "description": None, - "expression": None, + "expression": "", "filterable": True, "groupby": True, "is_active": True, @@ -88,7 +93,7 @@ class TestExportDatasetsCommand(SupersetTestCase): { "column_name": "target", "description": None, - "expression": None, + "expression": "", "filterable": True, "groupby": True, "is_active": True, @@ -100,7 +105,7 @@ class TestExportDatasetsCommand(SupersetTestCase): { "column_name": "value", "description": None, - "expression": None, + "expression": "", "filterable": True, "groupby": True, "is_active": True, @@ -171,12 +176,15 @@ class TestExportDatasetsCommand(SupersetTestCase): next(contents) @patch("superset.security.manager.g") + @pytest.mark.usefixtures("load_energy_table_with_slice") def test_export_dataset_command_key_order(self, mock_g): """Test that they keys in the YAML have the same order as export_fields""" mock_g.user = security_manager.find_user("admin") example_db = get_example_database() - example_dataset = example_db.tables[0] + example_dataset = _get_table_from_list_by_name( + "energy_usage", example_db.tables + ) command = ExportDatasetsCommand([example_dataset.id]) contents = dict(command.run()) @@ -454,3 +462,10 @@ class TestImportDatasetsCommand(SupersetTestCase): db.session.delete(database.tables[0]) db.session.delete(database) db.session.commit() + + +def _get_table_from_list_by_name(name: str, tables: List[Any]): + for table in tables: + if table.table_name == name: + return table + raise ValueError(f"Table {name} does not exists in database") diff --git a/tests/db_engine_specs/base_engine_spec_tests.py b/tests/db_engine_specs/base_engine_spec_tests.py index 68aed8e5e9..1b89f9a49f 100644 --- a/tests/db_engine_specs/base_engine_spec_tests.py +++ b/tests/db_engine_specs/base_engine_spec_tests.py @@ -17,17 +17,19 @@ import datetime from unittest import mock +import pytest + from superset.db_engine_specs import engines from superset.db_engine_specs.base import BaseEngineSpec, builtin_time_grains from superset.db_engine_specs.sqlite import SqliteEngineSpec from superset.sql_parse import ParsedQuery from superset.utils.core import get_example_database from tests.db_engine_specs.base_tests import TestDbEngineSpec +from tests.test_app import app +from ..fixtures.energy_dashboard import load_energy_table_with_slice from ..fixtures.pyodbcRow import Row -from tests.test_app import app # isort:skip - class TestDbEngineSpecs(TestDbEngineSpec): def test_extract_limit_from_query(self, engine_spec_class=BaseEngineSpec): @@ -194,6 +196,7 @@ class TestDbEngineSpecs(TestDbEngineSpec): ) self.assertListEqual(base_result_expected, base_result) + @pytest.mark.usefixtures("load_energy_table_with_slice") def test_column_datatype_to_string(self): example_db = get_example_database() sqla_table = example_db.get_table("energy_usage") diff --git a/tests/fixtures/energy_dashboard.py b/tests/fixtures/energy_dashboard.py new file mode 100644 index 0000000000..68d142f65d --- /dev/null +++ b/tests/fixtures/energy_dashboard.py @@ -0,0 +1,173 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +import random +import textwrap +from typing import Dict, Set + +import pandas as pd +import pytest +from pandas import DataFrame +from sqlalchemy import column, Float, String + +from superset import db +from superset.connectors.sqla.models import SqlaTable, SqlMetric +from superset.models.dashboard import Dashboard +from superset.models.slice import Slice +from superset.utils.core import get_example_database +from tests.dashboard_utils import create_slice, create_table_for_dashboard +from tests.test_app import app + +misc_dash_slices: Set[str] = set() + + +@pytest.fixture() +def load_energy_table_with_slice(): + table_name = "energy_usage" + df = _get_dataframe() + with app.app_context(): + _create_energy_table(df, table_name) + yield + _cleanup() + + +def _get_dataframe(): + data = _get_energy_data() + return pd.DataFrame.from_dict(data) + + +def _create_energy_table(df: DataFrame, table_name: str): + database = get_example_database() + + table_description = "Energy consumption" + schema = {"source": String(255), "target": String(255), "value": Float()} + table = create_table_for_dashboard( + df, table_name, database, schema, table_description + ) + table.fetch_metadata() + + if not any(col.metric_name == "sum__value" for col in table.metrics): + col = str(column("value").compile(db.engine)) + table.metrics.append( + SqlMetric(metric_name="sum__value", expression=f"SUM({col})") + ) + + db.session.merge(table) + db.session.commit() + table.fetch_metadata() + + for slice_data in _get_energy_slices(): + _create_and_commit_energy_slice( + table, + slice_data["slice_title"], + slice_data["viz_type"], + slice_data["params"], + ) + + +def _create_and_commit_energy_slice( + table: SqlaTable, title: str, viz_type: str, param: Dict[str, str] +): + slice = create_slice(title, viz_type, table, param) + existing_slice = ( + db.session.query(Slice).filter_by(slice_name=slice.slice_name).first() + ) + if existing_slice: + db.session.delete(existing_slice) + db.session.add(slice) + db.session.commit() + return slice + + +def _cleanup() -> None: + engine = get_example_database().get_sqla_engine() + engine.execute("DROP TABLE IF EXISTS energy_usage") + for slice_data in _get_energy_slices(): + slice = ( + db.session.query(Slice) + .filter_by(slice_name=slice_data["slice_title"]) + .first() + ) + db.session.delete(slice) + + metric = ( + db.session.query(SqlMetric).filter_by(metric_name="sum__value").one_or_none() + ) + if metric: + db.session.delete(metric) + + db.session.commit() + + +def _get_energy_data(): + data = [] + for i in range(85): + data.append( + { + "source": f"energy_source{i}", + "target": f"energy_target{i}", + "value": random.uniform(0.1, 11.0), + } + ) + return data + + +def _get_energy_slices(): + return [ + { + "slice_title": "Energy Sankey", + "viz_type": "sankey", + "params": { + "collapsed_fieldsets": "", + "groupby": ["source", "target"], + "metric": "sum__value", + "row_limit": "5000", + "slice_name": "Energy Sankey", + "viz_type": "sankey", + }, + }, + { + "slice_title": "Energy Force Layout", + "viz_type": "directed_force", + "params": { + "charge": "-500", + "collapsed_fieldsets": "", + "groupby": ["source", "target"], + "link_length": "200", + "metric": "sum__value", + "row_limit": "5000", + "slice_name": "Force", + "viz_type": "directed_force", + }, + }, + { + "slice_title": "Heatmap", + "viz_type": "heatmap", + "params": { + "all_columns_x": "source", + "all_columns_y": "target", + "canvas_image_rendering": "pixelated", + "collapsed_fieldsets": "", + "linear_color_scheme": "blue_white_yellow", + "metric": "sum__value", + "normalize_across": "heatmap", + "slice_name": "Heatmap", + "viz_type": "heatmap", + "xscale_interval": "1", + "yscale_interval": "1", + }, + }, + ] diff --git a/tests/import_export_tests.py b/tests/import_export_tests.py index aac3a5162b..b0ef243a63 100644 --- a/tests/import_export_tests.py +++ b/tests/import_export_tests.py @@ -19,9 +19,11 @@ import json import unittest +import pytest from flask import g from sqlalchemy.orm.session import make_transient +from tests.fixtures.energy_dashboard import load_energy_table_with_slice from tests.test_app import app from superset.dashboards.commands.importers.v0 import decode_dashboards from superset import db, security_manager @@ -399,6 +401,7 @@ class TestImportExport(SupersetTestCase): meta["chartId"] = imported_dash.slices[0].id self.assertEqual(expected_position, imported_dash.position) + @pytest.mark.usefixtures("load_energy_table_with_slice") def test_import_dashboard_2_slices(self): e_slc = self.create_slice("e_slc", id=10007, table_name="energy_usage") b_slc = self.create_slice("b_slc", id=10008, table_name="birth_names") @@ -450,6 +453,7 @@ class TestImportExport(SupersetTestCase): expected_json_metadata, json.loads(imported_dash.json_metadata) ) + @pytest.mark.usefixtures("load_energy_table_with_slice") def test_import_override_dashboard_2_slices(self): e_slc = self.create_slice("e_slc", id=10009, table_name="energy_usage") b_slc = self.create_slice("b_slc", id=10010, table_name="birth_names") diff --git a/tests/model_tests.py b/tests/model_tests.py index 3e838f3128..ee76a481c0 100644 --- a/tests/model_tests.py +++ b/tests/model_tests.py @@ -19,6 +19,7 @@ import textwrap import unittest import pandas +import pytest from sqlalchemy.engine.url import make_url import tests.test_app @@ -28,6 +29,7 @@ from superset.models.slice import Slice from superset.utils.core import get_example_database, QueryStatus from .base_tests import SupersetTestCase +from .fixtures.energy_dashboard import load_energy_table_with_slice class TestDatabaseModel(SupersetTestCase): @@ -107,6 +109,7 @@ class TestDatabaseModel(SupersetTestCase): user_name = make_url(model.get_sqla_engine(user_name=example_user).url).username self.assertNotEqual(example_user, user_name) + @pytest.mark.usefixtures("load_energy_table_with_slice") def test_select_star(self): db = get_example_database() table_name = "energy_usage" diff --git a/tests/query_context_tests.py b/tests/query_context_tests.py index 5bad2d1efd..3833ee0522 100644 --- a/tests/query_context_tests.py +++ b/tests/query_context_tests.py @@ -14,6 +14,8 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. +import pytest + import tests.test_app from superset import db from superset.charts.schemas import ChartDataQueryContextSchema @@ -27,6 +29,7 @@ from superset.utils.core import ( TimeRangeEndpoint, ) from tests.base_tests import SupersetTestCase +from tests.fixtures.energy_dashboard import load_energy_table_with_slice from tests.fixtures.query_context import get_query_context diff --git a/tests/security_tests.py b/tests/security_tests.py index c640518223..13c8012758 100644 --- a/tests/security_tests.py +++ b/tests/security_tests.py @@ -45,6 +45,7 @@ from .dashboard_utils import ( create_slice, create_dashboard, ) +from .fixtures.energy_dashboard import load_energy_table_with_slice from .fixtures.unicode_dashboard import load_unicode_dashboard_with_slice NEW_SECURITY_CONVERGE_VIEWS = ("CssTemplate", "SavedQuery") @@ -1128,6 +1129,7 @@ class TestRowLevelSecurity(SupersetTestCase): session.delete(self.get_user("NoRlsRoleUser")) session.commit() + @pytest.mark.usefixtures("load_energy_table_with_slice") def test_rls_filter_alters_energy_query(self): g.user = self.get_user(username="alpha") tbl = self.get_table_by_name("energy_usage") @@ -1135,6 +1137,7 @@ class TestRowLevelSecurity(SupersetTestCase): assert tbl.get_extra_cache_keys(self.query_obj) == [1] assert "value > 1" in sql + @pytest.mark.usefixtures("load_energy_table_with_slice") def test_rls_filter_doesnt_alter_energy_query(self): g.user = self.get_user( username="admin"