"""cos_url_keys:仅当 host 匹配配置时才解析 key。""" import unittest from unittest.mock import patch from app.core.cos_url_keys import extract_cos_object_key_if_owned class TestExtractCosObjectKeyIfOwned(unittest.TestCase): def test_non_http_returns_none(self): self.assertIsNone(extract_cos_object_key_if_owned("audio-segment:x:0")) self.assertIsNone(extract_cos_object_key_if_owned(None)) @patch("app.core.cos_url_keys.settings") def test_matching_host_returns_key(self, mock_settings): mock_settings.tencent_cos_bucket = "mybucket" mock_settings.tencent_cos_region = "ap-shanghai" mock_settings.tencent_cos_base_url = "" url = "https://mybucket.cos.ap-shanghai.myqcloud.com/chapters/u1/c1/a.png" self.assertEqual(extract_cos_object_key_if_owned(url), "chapters/u1/c1/a.png") @patch("app.core.cos_url_keys.settings") def test_foreign_host_returns_none(self, mock_settings): mock_settings.tencent_cos_bucket = "mybucket" mock_settings.tencent_cos_region = "ap-shanghai" mock_settings.tencent_cos_base_url = "" url = "https://evil.com/chapters/u1/c1/a.png" self.assertIsNone(extract_cos_object_key_if_owned(url)) if __name__ == "__main__": unittest.main()