first commit
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
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()
|
||||
Reference in New Issue
Block a user