mirror of
https://gitlab.archlinux.org/archlinux/aurweb.git
synced 2025-02-03 10:43:03 +01:00
port over base HTML layout from PHP to FastAPI+Jinja2
+ Mounted static files (at web/html) to /static. + Added AURWEB_VERSION to aurweb.config (this is used around HTML to refer back to aurweb's release on git.archlinux.org), so we need it easily accessible in the Python codebase. + Implemented basic Jinja2 partials to put together whole aurweb pages. This may be missing some things currently and is a WIP until this set is ready to be merged. + Added config [options] aurwebdir = YOUR_AUR_ROOT; this configuration option should specify the root directory of the aurweb project. It is used by various parts of the FastAPI codebase to target project directories. Added routes via aurweb.routers.html: * POST /language: Set your session language. * GET /favicon.ico: Redirect to /static/images/favicon.ico. * Some browsers always look for $ROOT/favicon.ico to get an icon for the page being loaded, regardless of a specified "shortcut icon" given in a <link> directive. * GET /: Home page; WIP. * Updated aurweb.routers.html.language passes query parameters to its next redirection. When calling aurweb.templates.render_template, the context passed should be formed via the aurweb.templates.make_context. See aurweb.routers.html.index for an example of this. Signed-off-by: Kevin Morris <kevr@0cost.org>
This commit is contained in:
parent
1ff822bb14
commit
2df90ce280
18 changed files with 339 additions and 2 deletions
69
test/test_routes.py
Normal file
69
test/test_routes.py
Normal file
|
@ -0,0 +1,69 @@
|
|||
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)
|
Loading…
Add table
Add a link
Reference in a new issue