mirror of
https://github.com/apache/superset.git
synced 2026-04-24 02:25:13 +00:00
fix: pass slack recipients correctly (#29721)
This commit is contained in:
committed by
GitHub
parent
40520c54d4
commit
57e8cd2ba2
@@ -112,4 +112,4 @@ def test_report_with_header_data(
|
||||
assert header_data.get("notification_format") == report_schedule.report_format
|
||||
assert header_data.get("notification_source") == ReportSourceFormat.DASHBOARD
|
||||
assert header_data.get("notification_type") == report_schedule.type
|
||||
assert len(send_email_smtp_mock.call_args.kwargs["header_data"]) == 6
|
||||
assert len(send_email_smtp_mock.call_args.kwargs["header_data"]) == 7
|
||||
|
||||
@@ -67,6 +67,7 @@ from superset.models.slice import Slice
|
||||
from superset.reports.models import (
|
||||
ReportDataFormat,
|
||||
ReportExecutionLog,
|
||||
ReportRecipientType,
|
||||
ReportSchedule,
|
||||
ReportScheduleType,
|
||||
ReportScheduleValidatorType,
|
||||
@@ -171,7 +172,9 @@ def assert_log(state: str, error_message: Optional[str] = None):
|
||||
@contextmanager
|
||||
def create_test_table_context(database: Database):
|
||||
with database.get_sqla_engine() as engine:
|
||||
engine.execute("CREATE TABLE test_table AS SELECT 1 as first, 2 as second")
|
||||
engine.execute(
|
||||
"CREATE TABLE IF NOT EXISTS test_table AS SELECT 1 as first, 2 as second"
|
||||
)
|
||||
engine.execute("INSERT INTO test_table (first, second) VALUES (1, 2)")
|
||||
engine.execute("INSERT INTO test_table (first, second) VALUES (3, 4)")
|
||||
|
||||
@@ -1297,6 +1300,63 @@ def test_email_dashboard_report_schedule_force_screenshot(
|
||||
assert_log(ReportState.SUCCESS)
|
||||
|
||||
|
||||
@pytest.mark.usefixtures(
|
||||
"load_birth_names_dashboard_with_slices", "create_report_slack_chart"
|
||||
)
|
||||
@patch("superset.commands.report.execute.get_channels_with_search")
|
||||
@patch("superset.reports.notifications.slack.should_use_v2_api", return_value=True)
|
||||
@patch("superset.reports.notifications.slackv2.get_slack_client")
|
||||
@patch("superset.utils.screenshots.ChartScreenshot.get_screenshot")
|
||||
def test_slack_chart_report_schedule_converts_to_v2(
|
||||
screenshot_mock,
|
||||
slack_client_mock,
|
||||
slack_should_use_v2_api_mock,
|
||||
get_channels_with_search_mock,
|
||||
create_report_slack_chart,
|
||||
):
|
||||
"""
|
||||
ExecuteReport Command: Test chart slack report schedule
|
||||
"""
|
||||
# setup screenshot mock
|
||||
screenshot_mock.return_value = SCREENSHOT_FILE
|
||||
|
||||
channel_id = "slack_channel_id"
|
||||
|
||||
get_channels_with_search_mock.return_value = channel_id
|
||||
|
||||
with freeze_time("2020-01-01T00:00:00Z"):
|
||||
with patch.object(current_app.config["STATS_LOGGER"], "gauge") as statsd_mock:
|
||||
AsyncExecuteReportScheduleCommand(
|
||||
TEST_ID, create_report_slack_chart.id, datetime.utcnow()
|
||||
).run()
|
||||
|
||||
assert (
|
||||
slack_client_mock.return_value.files_upload_v2.call_args[1]["channel"]
|
||||
== channel_id
|
||||
)
|
||||
assert (
|
||||
slack_client_mock.return_value.files_upload_v2.call_args[1]["file"]
|
||||
== SCREENSHOT_FILE
|
||||
)
|
||||
|
||||
# Assert that the report recipients were updated
|
||||
assert create_report_slack_chart.recipients[
|
||||
0
|
||||
].recipient_config_json == json.dumps({"target": channel_id})
|
||||
assert (
|
||||
create_report_slack_chart.recipients[0].type
|
||||
== ReportRecipientType.SLACKV2
|
||||
)
|
||||
|
||||
# Assert logs are correct
|
||||
assert_log(ReportState.SUCCESS)
|
||||
# this will send a warning
|
||||
assert statsd_mock.call_args_list[0] == call(
|
||||
"reports.slack.send.warning", 1
|
||||
)
|
||||
assert statsd_mock.call_args_list[1] == call("reports.slack.send.ok", 1)
|
||||
|
||||
|
||||
@pytest.mark.usefixtures(
|
||||
"load_birth_names_dashboard_with_slices", "create_report_slack_chartv2"
|
||||
)
|
||||
@@ -1316,11 +1376,9 @@ def test_slack_chart_report_schedule_v2(
|
||||
"""
|
||||
# setup screenshot mock
|
||||
screenshot_mock.return_value = SCREENSHOT_FILE
|
||||
notification_targets = get_target_from_report_schedule(create_report_slack_chart)
|
||||
channel_id = "slack_channel_id"
|
||||
|
||||
channel_id = notification_targets[0]
|
||||
|
||||
get_channels_with_search_mock.return_value = {}
|
||||
get_channels_with_search_mock.return_value = channel_id
|
||||
|
||||
with freeze_time("2020-01-01T00:00:00Z"):
|
||||
with patch.object(current_app.config["STATS_LOGGER"], "gauge") as statsd_mock:
|
||||
|
||||
Reference in New Issue
Block a user