33
44import pytest
55from robusta .core .reporting .base import Finding , FindingSeverity , FindingSource
6- from robusta .core .sinks .slack .slack_sink_params import SlackSinkParams , SlackTemplateStyle
6+ from robusta .core .sinks .slack .preview . slack_sink_preview_params import SlackSinkPreviewParams
77from robusta .core .reporting .blocks import MarkdownBlock
88from robusta .integrations .slack .sender import SlackSender
99from tests .config import CONFIG
1313TEST_CLUSTER = "test cluster"
1414TEST_KEY = "test key"
1515
16- @pytest .mark .parametrize ("template_style,custom_template,expected_phrases" , [
17- (
18- SlackTemplateStyle .DEFAULT ,
19- None ,
20- [
21- "[Firing]" , # status block
22- ":bell: Type: Alert" , # context block
23- "Severity: Info" ,
24- ":globe_with_meridians: Cluster: test cluster"
25- ]
26- ),
27- (
28- SlackTemplateStyle .LEGACY ,
29- None ,
30- [
31- "Prometheus Alert Firing" , # header block
32- "*Source:* `test cluster`"
33- ]
34- ),
35- (
36- SlackTemplateStyle .DEFAULT ,
37- "custom_template.j2" ,
38- [
39- "CUSTOM TEMPLATE:" ,
40- ]
16+ def test_slack_preview_default_template (slack_channel : SlackChannel ):
17+ slack_sender = SlackSender (
18+ CONFIG .PYTEST_IN_CLUSTER_SLACK_TOKEN , TEST_ACCOUNT , TEST_CLUSTER , TEST_KEY , slack_channel .channel_name
19+ )
20+ finding = Finding (
21+ title = "Test Preview Template" ,
22+ aggregation_key = "test-preview-template" ,
23+ severity = FindingSeverity .INFO ,
24+ source = FindingSource .PROMETHEUS ,
25+ description = "Testing preview template rendering"
4126 )
42- ])
43- def test_slack_template_styles (slack_channel : SlackChannel , template_style , template_name , expected_phrases ):
27+ finding .add_enrichment ([MarkdownBlock ("This is a test preview block." )])
28+
29+ preview_params = SlackSinkPreviewParams (
30+ name = "test_preview" ,
31+ slack_channel = slack_channel .channel_name ,
32+ api_key = "" ,
33+ investigate_link = True ,
34+ prefer_redirect_to_platform = False ,
35+ max_log_file_limit_kb = 1000
36+ )
37+
38+ slack_sender .send_finding_to_slack (finding , preview_params , platform_enabled = True )
39+ latest_message = slack_channel .get_latest_message ()
40+ assert "Test Preview Template" in latest_message
41+ assert "This is a test preview block." in latest_message
42+
43+ def test_slack_preview_custom_template (slack_channel : SlackChannel ):
4444 slack_sender = SlackSender (
4545 CONFIG .PYTEST_IN_CLUSTER_SLACK_TOKEN , TEST_ACCOUNT , TEST_CLUSTER , TEST_KEY , slack_channel .channel_name
4646 )
4747 finding = Finding (
48- title = "Test Template Style " ,
49- aggregation_key = "test-template-style " ,
48+ title = "Test Custom Preview Template " ,
49+ aggregation_key = "test-custom-preview-template " ,
5050 severity = FindingSeverity .INFO ,
5151 source = FindingSource .PROMETHEUS ,
52- description = "Testing template style rendering"
52+ description = "Testing custom preview template rendering"
5353 )
54- finding .add_enrichment ([MarkdownBlock ("This is a test block." )])
54+ finding .add_enrichment ([MarkdownBlock ("This is a test custom preview block." )])
55+
56+ custom_template = """{
57+ "type": "section",
58+ "text": {
59+ "type": "mrkdwn",
60+ "text": "CUSTOM PREVIEW: {{ title }}"
61+ }
62+ }"""
5563
56- slack_params = SlackSinkParams (
57- name = "test_slack " ,
64+ preview_params = SlackSinkPreviewParams (
65+ name = "test_custom_preview " ,
5866 slack_channel = slack_channel .channel_name ,
5967 api_key = "" ,
60- template_name = template_name ,
61- slack_custom_templates = {
62- "custom_template.j2" : """
63- {
64- "type": "section",
65- "text": {
66- "type": "mrkdwn",
67- "text": "CUSTOM TEMPLATE: {{ title }}"
68- }
69- }
70- """ ,
71- })
68+ investigate_link = True ,
69+ prefer_redirect_to_platform = False ,
70+ max_log_file_limit_kb = 1000 ,
71+ slack_custom_templates = {"custom.j2" : custom_template }
72+ )
73+
74+ slack_sender .send_finding_to_slack (finding , preview_params , platform_enabled = True )
75+ latest_message = slack_channel .get_latest_message ()
76+ assert "CUSTOM PREVIEW: Test Custom Preview Template" in latest_message
77+ assert "This is a test custom preview block." in latest_message
78+
79+ def test_slack_preview_channel_override (slack_channel : SlackChannel ):
80+ slack_sender = SlackSender (
81+ CONFIG .PYTEST_IN_CLUSTER_SLACK_TOKEN , TEST_ACCOUNT , TEST_CLUSTER , TEST_KEY , slack_channel .channel_name
82+ )
83+ finding = Finding (
84+ title = "Test Channel Override" ,
85+ aggregation_key = "test-channel-override" ,
86+ severity = FindingSeverity .INFO ,
87+ source = FindingSource .PROMETHEUS ,
88+ description = "Testing channel override functionality"
89+ )
90+ finding .add_enrichment ([MarkdownBlock ("This is a test channel override block." )])
91+
92+ # Add a label that will be used for channel override
93+ finding .subject .labels ["slack" ] = slack_channel .channel_name
94+
95+ preview_params = SlackSinkPreviewParams (
96+ name = "test_channel_override" ,
97+ slack_channel = "default-channel" , # This will be overridden
98+ api_key = "" ,
99+ investigate_link = True ,
100+ prefer_redirect_to_platform = False ,
101+ max_log_file_limit_kb = 1000 ,
102+ channel_override = "labels.slack" # This will read from the slack label
103+ )
72104
73- slack_sender .send_finding_to_slack (finding , slack_params , False )
105+ slack_sender .send_finding_to_slack (finding , preview_params , platform_enabled = True )
74106 latest_message = slack_channel .get_latest_message ()
75- for phrase in expected_phrases :
76- assert phrase in latest_message
77- assert "Test Template Style" in latest_message
78- assert "This is a test block." in latest_message
107+ assert "Test Channel Override" in latest_message
108+ assert "This is a test channel override block." in latest_message
0 commit comments