mirror of
https://gitlab.archlinux.org/archlinux/aurweb.git
synced 2025-02-03 10:43:03 +01:00
Removing status code from 404 title Removing status code from 503 title Adding id to 503 error box Indatation fix
76 lines
No EOL
2.1 KiB
Python
76 lines
No EOL
2.1 KiB
Python
import urllib.parse
|
|
|
|
from http import HTTPStatus
|
|
|
|
import pytest
|
|
|
|
from fastapi.testclient import TestClient
|
|
|
|
from aurweb.asgi import app
|
|
from aurweb.testing import setup_test_db
|
|
|
|
client = TestClient(app)
|
|
|
|
|
|
@pytest.fixture
|
|
def setup():
|
|
setup_test_db("Users", "Session")
|
|
|
|
|
|
def test_index():
|
|
""" Test the index route at '/'. """
|
|
# Use `with` to trigger FastAPI app events.
|
|
with client as req:
|
|
response = req.get("/")
|
|
assert response.status_code == int(HTTPStatus.OK)
|
|
|
|
|
|
def test_favicon():
|
|
""" Test the favicon route at '/favicon.ico'. """
|
|
response1 = client.get("/static/images/favicon.ico")
|
|
response2 = client.get("/favicon.ico")
|
|
assert response1.status_code == int(HTTPStatus.OK)
|
|
assert response1.content == response2.content
|
|
|
|
|
|
def test_language():
|
|
""" Test the language post route at '/language'. """
|
|
post_data = {
|
|
"set_lang": "de",
|
|
"next": "/"
|
|
}
|
|
with client as req:
|
|
response = req.post("/language", data=post_data)
|
|
assert response.status_code == int(HTTPStatus.SEE_OTHER)
|
|
|
|
|
|
def test_language_invalid_next():
|
|
""" Test an invalid next route at '/language'. """
|
|
post_data = {
|
|
"set_lang": "de",
|
|
"next": "/BLAHBLAHFAKE"
|
|
}
|
|
with client as req:
|
|
response = req.post("/language", data=post_data)
|
|
assert response.status_code == int(HTTPStatus.BAD_REQUEST)
|
|
|
|
def test_language_query_params():
|
|
""" Test the language post route with query params. """
|
|
next = urllib.parse.quote_plus("/")
|
|
post_data = {
|
|
"set_lang": "de",
|
|
"next": "/",
|
|
"q": f"next={next}"
|
|
}
|
|
q = post_data.get("q")
|
|
with client as req:
|
|
response = req.post("/language", data=post_data)
|
|
assert response.headers.get("location") == f"/?{q}"
|
|
assert response.status_code == int(HTTPStatus.SEE_OTHER)
|
|
|
|
|
|
def test_error_messages():
|
|
response1 = client.get("/thisroutedoesnotexist")
|
|
response2 = client.get("/raisefivethree")
|
|
assert response1.status_code == int(HTTPStatus.NOT_FOUND)
|
|
assert response2.status_code == int(HTTPStatus.SERVICE_UNAVAILABLE) |