ucast/ucast/tests/test_views.py
Theta-Dev 16a509ee20
All checks were successful
continuous-integration/drone/push Build is passing
add view tests if logged in
2022-06-02 01:58:28 +02:00

106 lines
3.4 KiB
Python

import pytest
from django.conf import settings
from django.test.client import Client
from ucast.service import util
@pytest.mark.parametrize(
"url_path,internal_path",
[
(
"audio/ThetaDev/20190602_ThetaDev_Embedded_World_2019.mp3",
"/internal_files/ThetaDev/20190602_ThetaDev_Embedded_World_2019.mp3",
),
(
"cover/ThetaDev/20190602_ThetaDev_Embedded_World_2019.png",
"/internal_files/ThetaDev/_ucast/covers/20190602_ThetaDev_Embedded_World_2019.png",
),
(
"thumbnail/ThetaDev/20190602_ThetaDev_Embedded_World_2019.webp",
"/internal_files/ThetaDev/_ucast/thumbnails/20190602_ThetaDev_Embedded_World_2019.webp",
),
(
"thumbnail/ThetaDev/20190602_ThetaDev_Embedded_World_2019.webp?sm",
"/internal_files/ThetaDev/_ucast/thumbnails/20190602_ThetaDev_Embedded_World_2019_sm.webp",
),
(
"avatar/ThetaDev.jpg",
"/internal_files/ThetaDev/_ucast/avatar.jpg",
),
(
"avatar/ThetaDev.webp?sm",
"/internal_files/ThetaDev/_ucast/avatar_sm.webp",
),
],
)
def test_files_internal_redirect(
url_path: str, internal_path: str, download_dir_content, feed_key, admin_client
):
settings.INTERNAL_REDIRECT_HEADER = "X-Accel-Redirect"
def check_response(resp):
assert resp.getvalue() == b""
assert resp.headers.get("X-Accel-Redirect") == internal_path
assert "Content-Type" not in resp.headers
# Access with key
client = Client()
url = util.add_key_to_url("/files/" + url_path, feed_key)
response = client.get(url)
check_response(response)
# Access with login
response = admin_client.get("/files/" + url_path)
check_response(response)
@pytest.mark.parametrize(
"url_path,file_path",
[
(
"audio/ThetaDev/20190602_ThetaDev_Embedded_World_2019.mp3",
"ThetaDev/20190602_ThetaDev_Embedded_World_2019.mp3",
),
(
"cover/ThetaDev/20190602_ThetaDev_Embedded_World_2019.png",
"ThetaDev/_ucast/covers/20190602_ThetaDev_Embedded_World_2019.png",
),
(
"thumbnail/ThetaDev/20190602_ThetaDev_Embedded_World_2019.webp",
"ThetaDev/_ucast/thumbnails/20190602_ThetaDev_Embedded_World_2019.webp",
),
(
"thumbnail/ThetaDev/20190602_ThetaDev_Embedded_World_2019.webp?sm",
"ThetaDev/_ucast/thumbnails/20190602_ThetaDev_Embedded_World_2019_sm.webp",
),
(
"avatar/ThetaDev.jpg",
"ThetaDev/_ucast/avatar.jpg",
),
(
"avatar/ThetaDev.webp?sm",
"ThetaDev/_ucast/avatar_sm.webp",
),
],
)
def test_files_response(
url_path: str, file_path: str, download_dir_content, feed_key, admin_client
):
settings.INTERNAL_REDIRECT_HEADER = ""
response_file = settings.DOWNLOAD_ROOT / file_path
with open(response_file, "rb") as f:
file_bts = f.read()
# Access with key
client = Client()
url = util.add_key_to_url("/files/" + url_path, feed_key)
response = client.get(url)
response_bts = response.getvalue()
assert response_bts == file_bts
# Access with login
response = admin_client.get("/files/" + url_path)
response_bts = response.getvalue()
assert response_bts == file_bts