Files
Live-streaming/tests/test_netease_resolver.py
2026-08-15 14:43:56 +08:00

42 lines
1.6 KiB
Python

import logging
import unittest
from unittest.mock import AsyncMock
from app.netease_resolver import NeteaseResolver
class NeteaseResolverTests(unittest.IsolatedAsyncioTestCase):
def setUp(self):
self.resolver = NeteaseResolver(logging.getLogger("test-netease"))
async def test_rejects_trial_audio_instead_of_playing_preview(self):
self.resolver._fetch_player_entry = AsyncMock(return_value={
"url": "https://example.test/trial.mp3",
"freeTrialInfo": {"start": 0, "end": 15000},
})
self.resolver._probe_url = AsyncMock(return_value="https://example.test/trial.mp3")
result = await self.resolver.resolve({"id": "123456", "name": "VIP歌曲"})
self.assertIsNone(result)
self.assertEqual(self.resolver.last_error_code, "preview_only")
self.resolver._probe_url.assert_not_awaited()
async def test_uses_authenticated_full_player_url(self):
self.resolver.update_auth("valid-cookie")
self.resolver._fetch_player_entry = AsyncMock(return_value={
"url": "https://example.test/full.mp3",
"freeTrialInfo": None,
"freeTrialPrivilege": {"resConsumable": False, "userConsumable": False},
})
self.resolver._probe_url = AsyncMock(return_value="https://cdn.test/full.mp3")
result = await self.resolver.resolve({"id": "123456", "name": "VIP歌曲"})
self.assertEqual(result["url"], "https://cdn.test/full.mp3")
self.assertEqual(result["source"], "netease.player.auth")
if __name__ == "__main__":
unittest.main()