Initial import: Music_Server, MusicFree, catalog-sync
This commit is contained in:
@@ -0,0 +1,133 @@
|
||||
import unittest
|
||||
|
||||
from fastapi.testclient import TestClient
|
||||
|
||||
from music_server.app import create_app
|
||||
|
||||
|
||||
class PluginRouteTests(unittest.TestCase):
|
||||
def test_plugin_js_route_returns_importable_plugin_asset(self):
|
||||
client = TestClient(create_app())
|
||||
|
||||
response = client.get("/plugins/music_server.js")
|
||||
|
||||
self.assertEqual(200, response.status_code)
|
||||
self.assertIn("javascript", response.headers.get("content-type", ""))
|
||||
body = response.text
|
||||
self.assertIn('platform: "Music_Server"', body)
|
||||
self.assertIn('srcUrl: "http://testserver/plugins/music_server.js"', body)
|
||||
self.assertNotIn("__MUSIC_SERVER_PLUGIN_SRC_URL__", body)
|
||||
self.assertEqual(
|
||||
"no-store, no-cache, must-revalidate, max-age=0",
|
||||
response.headers.get("cache-control"),
|
||||
)
|
||||
|
||||
def test_lan_plugin_js_route_returns_importable_plugin_asset(self):
|
||||
client = TestClient(create_app())
|
||||
|
||||
response = client.get("/plugins/music_server_lan.js")
|
||||
|
||||
self.assertEqual(200, response.status_code)
|
||||
self.assertIn("javascript", response.headers.get("content-type", ""))
|
||||
body = response.text
|
||||
self.assertIn('platform: "Music_Server_LAN"', body)
|
||||
self.assertIn('srcUrl: "http://testserver/plugins/music_server_lan.js"', body)
|
||||
self.assertNotIn("__MUSIC_SERVER_PLUGIN_SRC_URL__", body)
|
||||
self.assertEqual(
|
||||
"no-store, no-cache, must-revalidate, max-age=0",
|
||||
response.headers.get("cache-control"),
|
||||
)
|
||||
|
||||
def test_private_plugin_asset_exposes_artist_and_sheet_support(self):
|
||||
client = TestClient(create_app())
|
||||
|
||||
response = client.get("/plugins/music_server.js")
|
||||
|
||||
self.assertEqual(200, response.status_code)
|
||||
body = response.text
|
||||
self.assertIn('supportedSearchType: ["music", "artist", "sheet"]', body)
|
||||
self.assertIn("/mf/v1/search/artists", body)
|
||||
self.assertIn("/mf/v1/search/sheets", body)
|
||||
self.assertIn("function getArtistWorks(", body)
|
||||
|
||||
def test_lan_plugin_asset_exposes_artist_and_sheet_support(self):
|
||||
client = TestClient(create_app())
|
||||
|
||||
response = client.get("/plugins/music_server_lan.js")
|
||||
|
||||
self.assertEqual(200, response.status_code)
|
||||
body = response.text
|
||||
self.assertIn('supportedSearchType: ["music", "artist", "sheet"]', body)
|
||||
self.assertIn("/mf/v1/search/artists", body)
|
||||
self.assertIn("/mf/v1/search/sheets", body)
|
||||
self.assertIn("function getArtistWorks(", body)
|
||||
|
||||
def test_plugin_assets_preserve_raw_lrc_field(self):
|
||||
client = TestClient(create_app())
|
||||
|
||||
private_response = client.get("/plugins/music_server.js")
|
||||
lan_response = client.get("/plugins/music_server_lan.js")
|
||||
|
||||
self.assertEqual(200, private_response.status_code)
|
||||
self.assertEqual(200, lan_response.status_code)
|
||||
self.assertIn("rawLrc", private_response.text)
|
||||
self.assertIn("rawLrc", lan_response.text)
|
||||
|
||||
def test_plugin_assets_use_play_count_field_only(self):
|
||||
client = TestClient(create_app())
|
||||
|
||||
private_response = client.get("/plugins/music_server.js")
|
||||
lan_response = client.get("/plugins/music_server_lan.js")
|
||||
|
||||
self.assertEqual(200, private_response.status_code)
|
||||
self.assertEqual(200, lan_response.status_code)
|
||||
self.assertIn("item.play_count", private_response.text)
|
||||
self.assertIn("result.play_count", private_response.text)
|
||||
self.assertNotIn("item.playCount", private_response.text)
|
||||
self.assertNotIn("result.playCount", private_response.text)
|
||||
self.assertIn("item.play_count", lan_response.text)
|
||||
self.assertIn("result.play_count", lan_response.text)
|
||||
self.assertNotIn("item.playCount", lan_response.text)
|
||||
self.assertNotIn("result.playCount", lan_response.text)
|
||||
|
||||
def test_plugin_assets_expose_get_lyric_method(self):
|
||||
client = TestClient(create_app())
|
||||
|
||||
private_response = client.get("/plugins/music_server.js")
|
||||
lan_response = client.get("/plugins/music_server_lan.js")
|
||||
|
||||
self.assertEqual(200, private_response.status_code)
|
||||
self.assertEqual(200, lan_response.status_code)
|
||||
self.assertIn("async function getLyric(", private_response.text)
|
||||
self.assertIn('"/mf/v1/songs/" + songId + "/lyric"', private_response.text)
|
||||
self.assertIn("getLyric: getLyric", private_response.text)
|
||||
self.assertIn("async function getLyric(", lan_response.text)
|
||||
self.assertIn('"/mf/v1/songs/" + songId + "/lyric"', lan_response.text)
|
||||
self.assertIn("getLyric: getLyric", lan_response.text)
|
||||
|
||||
def test_plugin_manifest_route_returns_plugin_url(self):
|
||||
client = TestClient(create_app())
|
||||
|
||||
response = client.get("/plugins/music_server.json")
|
||||
|
||||
self.assertEqual(200, response.status_code)
|
||||
self.assertIn("application/json", response.headers.get("content-type", ""))
|
||||
payload = response.json()
|
||||
self.assertEqual(2, len(payload["plugins"]))
|
||||
self.assertEqual(
|
||||
[
|
||||
{
|
||||
"name": "Music_Server",
|
||||
"url": "http://testserver/plugins/music_server.js",
|
||||
},
|
||||
{
|
||||
"name": "Music_Server LAN",
|
||||
"url": "http://testserver/plugins/music_server_lan.js",
|
||||
},
|
||||
],
|
||||
payload["plugins"],
|
||||
)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user