""" A test suite used to test HTML renders in different cases. """ from http import HTTPStatus import fastapi import pytest from fastapi import HTTPException from fastapi.testclient import TestClient from aurweb import asgi, db from aurweb.models import PackageBase from aurweb.models.account_type import TRUSTED_USER_ID, USER_ID from aurweb.models.user import User from aurweb.testing.html import get_errors, get_successes, parse_root from aurweb.testing.requests import Request @pytest.fixture(autouse=True) def setup(db_test): return @pytest.fixture def client() -> TestClient: yield TestClient(app=asgi.app) @pytest.fixture def user() -> User: with db.begin(): user = db.create(User, Username="test", Email="test@example.org", Passwd="testPassword", AccountTypeID=USER_ID) yield user @pytest.fixture def trusted_user(user: User) -> User: with db.begin(): user.AccountTypeID = TRUSTED_USER_ID yield user @pytest.fixture def pkgbase(user: User) -> PackageBase: with db.begin(): pkgbase = db.create(PackageBase, Name="test-pkg", Maintainer=user) yield pkgbase def test_archdev_navbar(client: TestClient): expected = [ "AUR Home", "Packages", "Register", "Login" ] with client as request: resp = request.get("/") assert resp.status_code == int(HTTPStatus.OK) root = parse_root(resp.text) items = root.xpath('//div[@id="archdev-navbar"]/ul/li/a') for i, item in enumerate(items): assert item.text.strip() == expected[i] def test_archdev_navbar_authenticated(client: TestClient, user: User): expected = [ "Dashboard", "Packages", "Requests", "My Account", "Logout" ] cookies = {"AURSID": user.login(Request(), "testPassword")} with client as request: resp = request.get("/", cookies=cookies) assert resp.status_code == int(HTTPStatus.OK) root = parse_root(resp.text) items = root.xpath('//div[@id="archdev-navbar"]/ul/li/a') for i, item in enumerate(items): assert item.text.strip() == expected[i] def test_archdev_navbar_authenticated_tu(client: TestClient, trusted_user: User): expected = [ "Dashboard", "Packages", "Requests", "Accounts", "My Account", "Trusted User", "Logout" ] cookies = {"AURSID": trusted_user.login(Request(), "testPassword")} with client as request: resp = request.get("/", cookies=cookies) assert resp.status_code == int(HTTPStatus.OK) root = parse_root(resp.text) items = root.xpath('//div[@id="archdev-navbar"]/ul/li/a') for i, item in enumerate(items): assert item.text.strip() == expected[i] def test_get_errors(): html = """