diff --git a/e2e/requirements.txt b/e2e/requirements.txt new file mode 100644 index 0000000..9785649 --- /dev/null +++ b/e2e/requirements.txt @@ -0,0 +1,3 @@ +Werkzeug==3.1.8 +pytest==9.0.3 +requests==2.34.2 diff --git a/e2e/unit/api/test_api.py b/e2e/unit/api/test_api.py new file mode 100644 index 0000000..a7c02dc --- /dev/null +++ b/e2e/unit/api/test_api.py @@ -0,0 +1,22 @@ +import pytest +import requests +import io +import os +from werkzeug.utils import secure_filename + + +def test_api_ping(base_url): + response = requests.get(f'{base_url}/ping') + assert response.status_code == 200 + assert response.text == 'pong' + +def test_api_upload_non_audio_file(base_url, upload_folder): + files = {'file': ('test.txt', io.BytesIO(b'not an audio file'))} + expected_filename = os.path.join(upload_folder, secure_filename('test.txt')) + response = requests.post(f'{base_url}/', files=files) + assert response.status_code == 400 + assert "not allowed" in response.json().get("error", "") + assert not os.path.exists(expected_filename) + + if os.path.exists(expected_filename): + os.remove(expected_filename) \ No newline at end of file diff --git a/e2e/unit/conftest.py b/e2e/unit/conftest.py new file mode 100644 index 0000000..c9ec2b3 --- /dev/null +++ b/e2e/unit/conftest.py @@ -0,0 +1,10 @@ +import pytest +import os + +@pytest.fixture(scope='session') +def base_url(): + return os.getenv('BASE_URL', 'http://127.0.0.1:5001') + +@pytest.fixture(scope='session') +def upload_folder(): + return os.getenv('NAVIDROME_MUSIC_FOLDER', '/opt/navidrome/music') \ No newline at end of file