feat(jinja): current_user_email macro (#27197)

This commit is contained in:
Vitor Avila
2024-02-23 20:28:30 -03:00
committed by GitHub
parent 11760d3fbf
commit 1d571ec9e6
5 changed files with 116 additions and 22 deletions

View File

@@ -132,14 +132,15 @@ class TestDatabaseModel(SupersetTestCase):
col = TableColumn(column_name="foo", type=str_type, table=tbl, is_dttm=True)
self.assertTrue(col.is_temporal)
@patch("superset.jinja_context.g")
def test_extra_cache_keys(self, flask_g):
flask_g.user.username = "abc"
@patch("superset.jinja_context.get_user_id", return_value=1)
@patch("superset.jinja_context.get_username", return_value="abc")
@patch("superset.jinja_context.get_user_email", return_value="abc@test.com")
def test_extra_cache_keys(self, mock_user_email, mock_username, mock_user_id):
base_query_obj = {
"granularity": None,
"from_dttm": None,
"to_dttm": None,
"groupby": ["user"],
"groupby": ["id", "username", "email"],
"metrics": [],
"is_timeseries": False,
"filter": [],
@@ -148,19 +149,27 @@ class TestDatabaseModel(SupersetTestCase):
# Table with Jinja callable.
table1 = SqlaTable(
table_name="test_has_extra_cache_keys_table",
sql="SELECT '{{ current_username() }}' as user",
sql="""
SELECT '{{ current_user_id() }}' as id,
SELECT '{{ current_username() }}' as username,
SELECT '{{ current_user_email() }}' as email,
""",
database=get_example_database(),
)
query_obj = dict(**base_query_obj, extras={})
extra_cache_keys = table1.get_extra_cache_keys(query_obj)
self.assertTrue(table1.has_extra_cache_key_calls(query_obj))
assert extra_cache_keys == ["abc"]
assert extra_cache_keys == [1, "abc", "abc@test.com"]
# Table with Jinja callable disabled.
table2 = SqlaTable(
table_name="test_has_extra_cache_keys_disabled_table",
sql="SELECT '{{ current_username(False) }}' as user",
sql="""
SELECT '{{ current_user_id(False) }}' as id,
SELECT '{{ current_username(False) }}' as username,
SELECT '{{ current_user_email(False) }}' as email,
""",
database=get_example_database(),
)
query_obj = dict(**base_query_obj, extras={})
@@ -189,9 +198,8 @@ class TestDatabaseModel(SupersetTestCase):
self.assertTrue(table3.has_extra_cache_key_calls(query_obj))
assert extra_cache_keys == ["abc"]
@patch("superset.jinja_context.g")
def test_jinja_metrics_and_calc_columns(self, flask_g):
flask_g.user.username = "abc"
@patch("superset.jinja_context.get_username", return_value="abc")
def test_jinja_metrics_and_calc_columns(self, mock_username):
base_query_obj = {
"granularity": None,
"from_dttm": None,