mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-06-05 15:39:40 +08:00
fix: bound long-lived cache state
This commit is contained in:
61
tests/test_webpush_subscription.py
Normal file
61
tests/test_webpush_subscription.py
Normal file
@@ -0,0 +1,61 @@
|
||||
import unittest
|
||||
from types import SimpleNamespace
|
||||
|
||||
from app.core.config import global_vars
|
||||
from app.helper.webpush import is_webpush_subscription_gone
|
||||
|
||||
|
||||
class WebPushSubscriptionTest(unittest.TestCase):
|
||||
def setUp(self):
|
||||
"""清理跨用例共享的 WebPush 订阅。"""
|
||||
with global_vars.SUBSCRIPTIONS_LOCK:
|
||||
global_vars.SUBSCRIPTIONS.clear()
|
||||
|
||||
def tearDown(self):
|
||||
"""清理测试产生的 WebPush 订阅。"""
|
||||
with global_vars.SUBSCRIPTIONS_LOCK:
|
||||
global_vars.SUBSCRIPTIONS.clear()
|
||||
|
||||
def test_push_subscription_upserts_by_endpoint(self):
|
||||
"""相同 endpoint 的 WebPush 订阅应更新而不是重复追加。"""
|
||||
global_vars.push_subscription(
|
||||
{"endpoint": "https://push.example/a", "keys": {"p256dh": "old"}}
|
||||
)
|
||||
global_vars.push_subscription(
|
||||
{"endpoint": "https://push.example/a", "keys": {"p256dh": "new"}}
|
||||
)
|
||||
|
||||
subscriptions = global_vars.get_subscriptions()
|
||||
|
||||
self.assertEqual(1, len(subscriptions))
|
||||
self.assertEqual("new", subscriptions[0]["keys"]["p256dh"])
|
||||
|
||||
def test_remove_subscription_deletes_by_endpoint(self):
|
||||
"""失效订阅应能按 endpoint 从全局订阅表删除。"""
|
||||
subscription = {"endpoint": "https://push.example/a", "keys": {}}
|
||||
global_vars.push_subscription(subscription)
|
||||
|
||||
self.assertTrue(global_vars.remove_subscription(subscription))
|
||||
self.assertEqual([], global_vars.get_subscriptions())
|
||||
|
||||
def test_is_webpush_subscription_gone_matches_404_and_410(self):
|
||||
"""推送服务返回 404/410 时应识别为订阅已失效。"""
|
||||
self.assertTrue(
|
||||
is_webpush_subscription_gone(
|
||||
SimpleNamespace(response=SimpleNamespace(status_code=410))
|
||||
)
|
||||
)
|
||||
self.assertTrue(
|
||||
is_webpush_subscription_gone(
|
||||
SimpleNamespace(response=SimpleNamespace(status=404))
|
||||
)
|
||||
)
|
||||
self.assertFalse(
|
||||
is_webpush_subscription_gone(
|
||||
SimpleNamespace(response=SimpleNamespace(status_code=500))
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user