fix: 上传二维码并发送 Ad Hoc 通知
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
"""钉钉通知测试。"""
|
||||
from unittest.mock import MagicMock, patch
|
||||
|
||||
import pytest
|
||||
|
||||
from backend.services.notification import NotificationError, build_dingtalk_payload, send_dingtalk_notification
|
||||
|
||||
|
||||
def _build_config():
|
||||
return {
|
||||
"SERVER": "测试环境",
|
||||
"VERSION": "2.195.0",
|
||||
"APPID_NAME": "阅门户测试App",
|
||||
"BUNDLE_ID": "cn.touchv.a4YX061",
|
||||
"APPID": "647372741900537856",
|
||||
}
|
||||
|
||||
|
||||
def test_dingtalk_payload_matches_autopacking_content():
|
||||
payload = build_dingtalk_payload(
|
||||
_build_config(),
|
||||
"https://download.example.com/app.html",
|
||||
"https://download.example.com/app.png",
|
||||
)
|
||||
|
||||
text = payload["markdown"]["text"]
|
||||
assert payload["markdown"]["title"] == "iOS应用下载"
|
||||
assert "## 【iOS】打包信息" in text
|
||||
assert "**环境:** 测试环境" in text
|
||||
assert "**版本:** 2.195.0" in text
|
||||
assert "**APP名称:** 阅门户测试App" in text
|
||||
assert "**包名:** cn.touchv.a4YX061" in text
|
||||
assert "**App Guid:** 647372741900537856" in text
|
||||
assert "**iOS 下载链接:** https://download.example.com/app.html" in text
|
||||
assert "" in text
|
||||
|
||||
|
||||
def test_dingtalk_notification_skips_when_disabled():
|
||||
with patch("backend.services.notification.httpx.post") as post:
|
||||
assert send_dingtalk_notification({}, _build_config(), "https://download.example.com/app") is False
|
||||
post.assert_not_called()
|
||||
|
||||
|
||||
def test_dingtalk_notification_sends_markdown():
|
||||
response = MagicMock(status_code=200)
|
||||
response.json.return_value = {"errcode": 0}
|
||||
with patch("backend.services.notification.httpx.post", return_value=response) as post:
|
||||
assert send_dingtalk_notification(
|
||||
{"enabled": True, "webhook_url": "https://example.com/robot"},
|
||||
_build_config(),
|
||||
"https://download.example.com/app.html",
|
||||
"https://download.example.com/app.png",
|
||||
) is True
|
||||
|
||||
assert post.call_args.kwargs["json"]["markdown"]["title"] == "iOS应用下载"
|
||||
|
||||
|
||||
def test_dingtalk_notification_requires_webhook_when_enabled():
|
||||
with pytest.raises(NotificationError, match="Webhook"):
|
||||
send_dingtalk_notification({"enabled": True}, _build_config(), "https://download.example.com/app")
|
||||
Reference in New Issue
Block a user