Files
navidrome-uploader/e2e/unit/api/test_api.py
T
arian 6e22dcdda5
Build and Test Debian Package / build (push) Successful in 27s
Build and Test Debian Package / test (push) Failing after 32s
fix(tests): change edge case file extension
Signed-off-by: Arian Nasr <arian@2ari.ca>
2026-06-01 03:34:41 -04:00

66 lines
2.7 KiB
Python

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)
def test_api_upload_empty_file(base_url, upload_folder):
files = {'file': ('empty.mp3', io.BytesIO(b''))}
expected_filename = os.path.join(upload_folder, secure_filename('empty.mp3'))
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)
def test_api_upload_mp3_file(base_url, upload_folder):
files = {'file': ('test.mp3', io.BytesIO(b'fake mp3 content'))}
expected_filename = os.path.join(upload_folder, secure_filename('test.mp3'))
response = requests.post(f'{base_url}/', files=files)
assert response.status_code == 200
assert "uploaded successfully" in response.json().get("message", "")
assert os.path.exists(expected_filename)
if os.path.exists(expected_filename):
os.remove(expected_filename)
def test_api_upload_flac_file(base_url, upload_folder):
files = {'file': ('test.flac', io.BytesIO(b'fake flac content'))}
expected_filename = os.path.join(upload_folder, secure_filename('test.flac'))
response = requests.post(f'{base_url}/', files=files)
assert response.status_code == 200
assert "uploaded successfully" in response.json().get("message", "")
assert os.path.exists(expected_filename)
if os.path.exists(expected_filename):
os.remove(expected_filename)
def test_api_upload_m4a_file(base_url, upload_folder):
files = {'file': ('test.m4a', io.BytesIO(b'fake m4a content'))}
expected_filename = os.path.join(upload_folder, secure_filename('test.m4a'))
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)