test suite
This commit is contained in:
94
tests/test_config.py
Normal file
94
tests/test_config.py
Normal file
@@ -0,0 +1,94 @@
|
||||
import requests
|
||||
import pytest
|
||||
|
||||
@pytest.fixture
|
||||
def reset_config(base_url):
|
||||
"""A fixture to ensure the main config is reset after a test case."""
|
||||
response = requests.get(f"{base_url}/config")
|
||||
assert response.status_code == 200
|
||||
original_config = response.json()
|
||||
yield
|
||||
response = requests.post(f"{base_url}/config", json=original_config)
|
||||
assert response.status_code == 200
|
||||
|
||||
def test_get_main_config(base_url):
|
||||
"""Tests if the main configuration can be retrieved."""
|
||||
response = requests.get(f"{base_url}/config")
|
||||
assert response.status_code == 200
|
||||
config = response.json()
|
||||
assert "service" in config
|
||||
assert "maxConcurrentDownloads" in config
|
||||
assert "spotify" in config # Should be set by conftest
|
||||
assert "deezer" in config # Should be set by conftest
|
||||
|
||||
def test_update_main_config(base_url, reset_config):
|
||||
"""Tests updating various fields in the main configuration."""
|
||||
new_settings = {
|
||||
"maxConcurrentDownloads": 5,
|
||||
"spotifyQuality": "HIGH",
|
||||
"deezerQuality": "FLAC",
|
||||
"customDirFormat": "%artist%/%album%",
|
||||
"customTrackFormat": "%tracknum% %title%",
|
||||
"save_cover": False,
|
||||
"fallback": True,
|
||||
}
|
||||
|
||||
response = requests.post(f"{base_url}/config", json=new_settings)
|
||||
assert response.status_code == 200
|
||||
updated_config = response.json()
|
||||
|
||||
for key, value in new_settings.items():
|
||||
assert updated_config[key] == value
|
||||
|
||||
def test_get_watch_config(base_url):
|
||||
"""Tests if the watch-specific configuration can be retrieved."""
|
||||
response = requests.get(f"{base_url}/config/watch")
|
||||
assert response.status_code == 200
|
||||
config = response.json()
|
||||
assert "delay_between_playlists_seconds" in config
|
||||
assert "delay_between_artists_seconds" in config
|
||||
|
||||
def test_update_watch_config(base_url):
|
||||
"""Tests updating the watch-specific configuration."""
|
||||
response = requests.get(f"{base_url}/config/watch")
|
||||
original_config = response.json()
|
||||
|
||||
new_settings = {
|
||||
"delay_between_playlists_seconds": 120,
|
||||
"delay_between_artists_seconds": 240,
|
||||
"auto_add_new_releases_to_queue": False,
|
||||
}
|
||||
|
||||
response = requests.post(f"{base_url}/config/watch", json=new_settings)
|
||||
assert response.status_code == 200
|
||||
updated_config = response.json()
|
||||
|
||||
for key, value in new_settings.items():
|
||||
assert updated_config[key] == value
|
||||
|
||||
# Revert to original
|
||||
requests.post(f"{base_url}/config/watch", json=original_config)
|
||||
|
||||
def test_update_conversion_config(base_url, reset_config):
|
||||
"""
|
||||
Iterates through all supported conversion formats and bitrates,
|
||||
updating the config and verifying the changes for each combination.
|
||||
"""
|
||||
conversion_formats = ["mp3", "flac", "ogg", "opus", "m4a"]
|
||||
bitrates = {
|
||||
"mp3": ["320", "256", "192", "128"],
|
||||
"ogg": ["500", "320", "192", "160"],
|
||||
"opus": ["256", "192", "128", "96"],
|
||||
"m4a": ["320k", "256k", "192k", "128k"],
|
||||
"flac": [None] # Bitrate is not applicable for FLAC
|
||||
}
|
||||
|
||||
for format in conversion_formats:
|
||||
for br in bitrates.get(format, [None]):
|
||||
print(f"Testing conversion config: format={format}, bitrate={br}")
|
||||
new_settings = {"convertTo": format, "bitrate": br}
|
||||
response = requests.post(f"{base_url}/config", json=new_settings)
|
||||
assert response.status_code == 200
|
||||
updated_config = response.json()
|
||||
assert updated_config["convertTo"] == format
|
||||
assert updated_config["bitrate"] == br
|
||||
Reference in New Issue
Block a user