Skip to content

Commit 486459e

Browse files
committed
test preview
1 parent 25fd7f0 commit 486459e

1 file changed

Lines changed: 81 additions & 51 deletions

File tree

tests/test_slack_preview.py

Lines changed: 81 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
import pytest
55
from 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
77
from robusta.core.reporting.blocks import MarkdownBlock
88
from robusta.integrations.slack.sender import SlackSender
99
from tests.config import CONFIG
@@ -13,66 +13,96 @@
1313
TEST_CLUSTER = "test cluster"
1414
TEST_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

Comments
 (0)