mirror of
https://github.com/beetbox/beets.git
synced 2025-12-11 11:07:31 +01:00
111 lines
2.8 KiB
Python
111 lines
2.8 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
"""Tests for the 'subsonic' plugin"""
|
|
|
|
from __future__ import division, absolute_import, print_function
|
|
|
|
import requests
|
|
import responses
|
|
import unittest
|
|
|
|
from test import _common
|
|
from beets import config
|
|
from beetsplug import subsonicupdate
|
|
from test.helper import TestHelper
|
|
from six.moves.urllib.parse import parse_qs, urlparse
|
|
|
|
|
|
class ArgumentsMock(object):
|
|
def __init__(self, mode, show_failures):
|
|
self.mode = mode
|
|
self.show_failures = show_failures
|
|
self.verbose = 1
|
|
|
|
|
|
def _params(url):
|
|
"""Get the query parameters from a URL."""
|
|
return parse_qs(urlparse(url).query)
|
|
|
|
|
|
class SubsonicPluginTest(_common.TestCase, TestHelper):
|
|
@responses.activate
|
|
def setUp(self):
|
|
config.clear()
|
|
self.setup_beets()
|
|
|
|
config["subsonic"]["user"] = "admin"
|
|
config["subsonic"]["pass"] = "admin"
|
|
config["subsonic"]["url"] = "http://localhost:4040"
|
|
|
|
self.subsonicupdate = subsonicupdate.SubsonicUpdate()
|
|
|
|
def tearDown(self):
|
|
self.teardown_beets()
|
|
|
|
@responses.activate
|
|
def test_start_scan(self):
|
|
responses.add(
|
|
responses.POST,
|
|
'http://localhost:4040/rest/startScan',
|
|
status=200
|
|
)
|
|
|
|
self.subsonicupdate.start_scan()
|
|
|
|
@responses.activate
|
|
def test_url_with_extra_forward_slash_url(self):
|
|
config["subsonic"]["url"] = "http://localhost:4040/contextPath"
|
|
|
|
responses.add(
|
|
responses.POST,
|
|
'http://localhost:4040/contextPath/rest/startScan',
|
|
status=200
|
|
)
|
|
|
|
self.subsonicupdate.start_scan()
|
|
|
|
@responses.activate
|
|
def test_url_with_context_path(self):
|
|
config["subsonic"]["url"] = "http://localhost:4040/"
|
|
|
|
responses.add(
|
|
responses.POST,
|
|
'http://localhost:4040/rest/startScan',
|
|
status=200
|
|
)
|
|
|
|
self.subsonicupdate.start_scan()
|
|
|
|
@responses.activate
|
|
def test_url_with_missing_port(self):
|
|
config["subsonic"]["url"] = "http://localhost/airsonic"
|
|
|
|
responses.add(
|
|
responses.POST,
|
|
'http://localhost:4040/rest/startScan',
|
|
status=200
|
|
)
|
|
|
|
with self.assertRaises(requests.exceptions.ConnectionError):
|
|
self.subsonicupdate.start_scan()
|
|
|
|
@responses.activate
|
|
def test_url_with_missing_schema(self):
|
|
config["subsonic"]["url"] = "localhost:4040/airsonic"
|
|
|
|
responses.add(
|
|
responses.POST,
|
|
'http://localhost:4040/rest/startScan',
|
|
status=200
|
|
)
|
|
|
|
with self.assertRaises(requests.exceptions.InvalidSchema):
|
|
self.subsonicupdate.start_scan()
|
|
|
|
|
|
def suite():
|
|
return unittest.TestLoader().loadTestsFromName(__name__)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main(defaultTest='suite')
|