style: Run pre-commit

This commit is contained in:
Joakim Saario 2022-08-21 22:08:29 +02:00
parent b47882b114
commit 9c6c13b78a
No known key found for this signature in database
GPG key ID: D8B76D271B7BD453
235 changed files with 7180 additions and 5628 deletions

View file

@ -1,10 +1,8 @@
import re
from http import HTTPStatus
from logging import DEBUG
import pytest
from fastapi import HTTPException
from fastapi.testclient import TestClient
@ -24,13 +22,13 @@ from aurweb.testing.requests import Request
@pytest.fixture(autouse=True)
def setup(db_test) -> None:
""" Setup the database. """
"""Setup the database."""
return
@pytest.fixture
def client() -> TestClient:
""" Yield a TestClient. """
"""Yield a TestClient."""
yield TestClient(app=asgi.app)
@ -43,21 +41,26 @@ def create_user(username: str, email: str) -> User:
:return: User instance
"""
with db.begin():
user = db.create(User, Username=username, Email=email,
Passwd="testPassword", AccountTypeID=USER_ID)
user = db.create(
User,
Username=username,
Email=email,
Passwd="testPassword",
AccountTypeID=USER_ID,
)
return user
@pytest.fixture
def user() -> User:
""" Yield a User instance. """
"""Yield a User instance."""
user = create_user("test", "test@example.org")
yield user
@pytest.fixture
def auser(user: User) -> User:
""" Yield an authenticated User instance. """
"""Yield an authenticated User instance."""
cookies = {"AURSID": user.login(Request(), "testPassword")}
user.cookies = cookies
yield user
@ -65,14 +68,14 @@ def auser(user: User) -> User:
@pytest.fixture
def user2() -> User:
""" Yield a secondary non-maintainer User instance. """
"""Yield a secondary non-maintainer User instance."""
user = create_user("test2", "test2@example.org")
yield user
@pytest.fixture
def auser2(user2: User) -> User:
""" Yield an authenticated secondary non-maintainer User instance. """
"""Yield an authenticated secondary non-maintainer User instance."""
cookies = {"AURSID": user2.login(Request(), "testPassword")}
user2.cookies = cookies
yield user2
@ -80,31 +83,34 @@ def auser2(user2: User) -> User:
@pytest.fixture
def maintainer() -> User:
""" Yield a specific User used to maintain packages. """
"""Yield a specific User used to maintain packages."""
with db.begin():
maintainer = db.create(User, Username="test_maintainer",
Email="test_maintainer@example.org",
Passwd="testPassword",
AccountTypeID=USER_ID)
maintainer = db.create(
User,
Username="test_maintainer",
Email="test_maintainer@example.org",
Passwd="testPassword",
AccountTypeID=USER_ID,
)
yield maintainer
@pytest.fixture
def packages(maintainer: User) -> list[Package]:
""" Yield 55 packages named pkg_0 .. pkg_54. """
"""Yield 55 packages named pkg_0 .. pkg_54."""
packages_ = []
now = time.utcnow()
with db.begin():
for i in range(55):
pkgbase = db.create(PackageBase,
Name=f"pkg_{i}",
Maintainer=maintainer,
Packager=maintainer,
Submitter=maintainer,
ModifiedTS=now)
package = db.create(Package,
PackageBase=pkgbase,
Name=f"pkg_{i}")
pkgbase = db.create(
PackageBase,
Name=f"pkg_{i}",
Maintainer=maintainer,
Packager=maintainer,
Submitter=maintainer,
ModifiedTS=now,
)
package = db.create(Package, PackageBase=pkgbase, Name=f"pkg_{i}")
packages_.append(package)
yield packages_
@ -115,20 +121,22 @@ def requests(user: User, packages: list[Package]) -> list[PackageRequest]:
pkgreqs = []
with db.begin():
for i in range(55):
pkgreq = db.create(PackageRequest,
ReqTypeID=DELETION_ID,
User=user,
PackageBase=packages[i].PackageBase,
PackageBaseName=packages[i].Name,
Comments=f"Deletion request for pkg_{i}",
ClosureComment=str())
pkgreq = db.create(
PackageRequest,
ReqTypeID=DELETION_ID,
User=user,
PackageBase=packages[i].PackageBase,
PackageBaseName=packages[i].Name,
Comments=f"Deletion request for pkg_{i}",
ClosureComment=str(),
)
pkgreqs.append(pkgreq)
yield pkgreqs
@pytest.fixture
def tu_user() -> User:
""" Yield an authenticated Trusted User instance. """
"""Yield an authenticated Trusted User instance."""
user = create_user("test_tu", "test_tu@example.org")
with db.begin():
user.AccountTypeID = TRUSTED_USER_ID
@ -149,31 +157,38 @@ def create_pkgbase(user: User, name: str) -> PackageBase:
"""
now = time.utcnow()
with db.begin():
pkgbase = db.create(PackageBase, Name=name,
Maintainer=user, Packager=user,
SubmittedTS=now, ModifiedTS=now)
pkgbase = db.create(
PackageBase,
Name=name,
Maintainer=user,
Packager=user,
SubmittedTS=now,
ModifiedTS=now,
)
db.create(Package, Name=pkgbase.Name, PackageBase=pkgbase)
return pkgbase
@pytest.fixture
def pkgbase(user: User) -> PackageBase:
""" Yield a package base. """
"""Yield a package base."""
pkgbase = create_pkgbase(user, "test-package")
yield pkgbase
@pytest.fixture
def target(user: User) -> PackageBase:
""" Yield a merge target (package base). """
"""Yield a merge target (package base)."""
with db.begin():
target = db.create(PackageBase, Name="target-package",
Maintainer=user, Packager=user)
target = db.create(
PackageBase, Name="target-package", Maintainer=user, Packager=user
)
yield target
def create_request(reqtype_id: int, user: User, pkgbase: PackageBase,
comments: str) -> PackageRequest:
def create_request(
reqtype_id: int, user: User, pkgbase: PackageBase, comments: str
) -> PackageRequest:
"""
Create a package request based on `reqtype_id`, `user`,
`pkgbase` and `comments`.
@ -186,40 +201,43 @@ def create_request(reqtype_id: int, user: User, pkgbase: PackageBase,
"""
now = time.utcnow()
with db.begin():
pkgreq = db.create(PackageRequest, ReqTypeID=reqtype_id,
User=user, PackageBase=pkgbase,
PackageBaseName=pkgbase.Name,
RequestTS=now,
Comments=comments,
ClosureComment=str())
pkgreq = db.create(
PackageRequest,
ReqTypeID=reqtype_id,
User=user,
PackageBase=pkgbase,
PackageBaseName=pkgbase.Name,
RequestTS=now,
Comments=comments,
ClosureComment=str(),
)
return pkgreq
@pytest.fixture
def pkgreq(user: User, pkgbase: PackageBase):
""" Yield a package request. """
"""Yield a package request."""
pkgreq = create_request(DELETION_ID, user, pkgbase, "Test request.")
yield pkgreq
def create_notification(user: User, pkgbase: PackageBase):
""" Create a notification for a `user` on `pkgbase`. """
"""Create a notification for a `user` on `pkgbase`."""
with db.begin():
notif = db.create(PackageNotification, User=user, PackageBase=pkgbase)
return notif
def test_request(client: TestClient, auser: User, pkgbase: PackageBase):
""" Test the standard pkgbase request route GET method. """
"""Test the standard pkgbase request route GET method."""
endpoint = f"/pkgbase/{pkgbase.Name}/request"
with client as request:
resp = request.get(endpoint, cookies=auser.cookies)
assert resp.status_code == int(HTTPStatus.OK)
def test_request_post_deletion(client: TestClient, auser2: User,
pkgbase: PackageBase):
""" Test the POST route for creating a deletion request works. """
def test_request_post_deletion(client: TestClient, auser2: User, pkgbase: PackageBase):
"""Test the POST route for creating a deletion request works."""
endpoint = f"/pkgbase/{pkgbase.Name}/request"
data = {"comments": "Test request.", "type": "deletion"}
with client as request:
@ -238,9 +256,10 @@ def test_request_post_deletion(client: TestClient, auser2: User,
assert re.match(expr, email.headers.get("Subject"))
def test_request_post_deletion_as_maintainer(client: TestClient, auser: User,
pkgbase: PackageBase):
""" Test the POST route for creating a deletion request as maint works. """
def test_request_post_deletion_as_maintainer(
client: TestClient, auser: User, pkgbase: PackageBase
):
"""Test the POST route for creating a deletion request as maint works."""
endpoint = f"/pkgbase/{pkgbase.Name}/request"
data = {"comments": "Test request.", "type": "deletion"}
with client as request:
@ -267,10 +286,13 @@ def test_request_post_deletion_as_maintainer(client: TestClient, auser: User,
assert re.match(expr, email.headers.get("Subject"))
def test_request_post_deletion_autoaccept(client: TestClient, auser: User,
pkgbase: PackageBase,
caplog: pytest.LogCaptureFixture):
""" Test the request route for deletion as maintainer. """
def test_request_post_deletion_autoaccept(
client: TestClient,
auser: User,
pkgbase: PackageBase,
caplog: pytest.LogCaptureFixture,
):
"""Test the request route for deletion as maintainer."""
caplog.set_level(DEBUG)
now = time.utcnow()
@ -284,9 +306,11 @@ def test_request_post_deletion_autoaccept(client: TestClient, auser: User,
resp = request.post(endpoint, data=data, cookies=auser.cookies)
assert resp.status_code == int(HTTPStatus.SEE_OTHER)
pkgreq = db.query(PackageRequest).filter(
PackageRequest.PackageBaseName == pkgbase.Name
).first()
pkgreq = (
db.query(PackageRequest)
.filter(PackageRequest.PackageBaseName == pkgbase.Name)
.first()
)
assert pkgreq is not None
assert pkgreq.ReqTypeID == DELETION_ID
assert pkgreq.Status == ACCEPTED_ID
@ -310,9 +334,10 @@ def test_request_post_deletion_autoaccept(client: TestClient, auser: User,
assert re.search(expr, caplog.text)
def test_request_post_merge(client: TestClient, auser: User,
pkgbase: PackageBase, target: PackageBase):
""" Test the request route for merge as maintainer. """
def test_request_post_merge(
client: TestClient, auser: User, pkgbase: PackageBase, target: PackageBase
):
"""Test the request route for merge as maintainer."""
endpoint = f"/pkgbase/{pkgbase.Name}/request"
data = {
"type": "merge",
@ -336,9 +361,8 @@ def test_request_post_merge(client: TestClient, auser: User,
assert re.match(expr, email.headers.get("Subject"))
def test_request_post_orphan(client: TestClient, auser: User,
pkgbase: PackageBase):
""" Test the POST route for creating an orphan request works. """
def test_request_post_orphan(client: TestClient, auser: User, pkgbase: PackageBase):
"""Test the POST route for creating an orphan request works."""
endpoint = f"/pkgbase/{pkgbase.Name}/request"
data = {
"type": "orphan",
@ -361,9 +385,14 @@ def test_request_post_orphan(client: TestClient, auser: User,
assert re.match(expr, email.headers.get("Subject"))
def test_deletion_request(client: TestClient, user: User, tu_user: User,
pkgbase: PackageBase, pkgreq: PackageRequest):
""" Test deleting a package with a preexisting request. """
def test_deletion_request(
client: TestClient,
user: User,
tu_user: User,
pkgbase: PackageBase,
pkgreq: PackageRequest,
):
"""Test deleting a package with a preexisting request."""
# `pkgreq`.ReqTypeID is already DELETION_ID.
create_request(DELETION_ID, user, pkgbase, "Other request.")
@ -402,9 +431,8 @@ def test_deletion_request(client: TestClient, user: User, tu_user: User,
assert body in email.body
def test_deletion_autorequest(client: TestClient, tu_user: User,
pkgbase: PackageBase):
""" Test deleting a package without a request. """
def test_deletion_autorequest(client: TestClient, tu_user: User, pkgbase: PackageBase):
"""Test deleting a package without a request."""
# `pkgreq`.ReqTypeID is already DELETION_ID.
endpoint = f"/pkgbase/{pkgbase.Name}/delete"
data = {"confirm": True}
@ -421,10 +449,15 @@ def test_deletion_autorequest(client: TestClient, tu_user: User,
assert "[Autogenerated]" in email.body
def test_merge_request(client: TestClient, user: User, tu_user: User,
pkgbase: PackageBase, target: PackageBase,
pkgreq: PackageRequest):
""" Test merging a package with a pre - existing request. """
def test_merge_request(
client: TestClient,
user: User,
tu_user: User,
pkgbase: PackageBase,
target: PackageBase,
pkgreq: PackageRequest,
):
"""Test merging a package with a pre - existing request."""
with db.begin():
pkgreq.ReqTypeID = MERGE_ID
pkgreq.MergeBaseName = target.Name
@ -473,9 +506,14 @@ def test_merge_request(client: TestClient, user: User, tu_user: User,
assert "[Autogenerated]" in rejected.body
def test_merge_autorequest(client: TestClient, user: User, tu_user: User,
pkgbase: PackageBase, target: PackageBase):
""" Test merging a package without a request. """
def test_merge_autorequest(
client: TestClient,
user: User,
tu_user: User,
pkgbase: PackageBase,
target: PackageBase,
):
"""Test merging a package without a request."""
with db.begin():
pkgreq.ReqTypeID = MERGE_ID
pkgreq.MergeBaseName = target.Name
@ -498,13 +536,17 @@ def test_merge_autorequest(client: TestClient, user: User, tu_user: User,
assert "[Autogenerated]" in email.body
def test_orphan_request(client: TestClient, user: User, tu_user: User,
pkgbase: PackageBase, pkgreq: PackageRequest):
""" Test the standard orphan request route. """
def test_orphan_request(
client: TestClient,
user: User,
tu_user: User,
pkgbase: PackageBase,
pkgreq: PackageRequest,
):
"""Test the standard orphan request route."""
user2 = create_user("user2", "user2@example.org")
with db.begin():
db.create(PackageComaintainer, User=user2,
PackageBase=pkgbase, Priority=1)
db.create(PackageComaintainer, User=user2, PackageBase=pkgbase, Priority=1)
idle_time = config.getint("options", "request_idle_time")
now = time.utcnow()
@ -537,10 +579,9 @@ def test_orphan_request(client: TestClient, user: User, tu_user: User,
assert re.match(subj, email.headers.get("Subject"))
def test_request_post_orphan_autogenerated_closure(client: TestClient,
tu_user: User,
pkgbase: PackageBase,
pkgreq: PackageRequest):
def test_request_post_orphan_autogenerated_closure(
client: TestClient, tu_user: User, pkgbase: PackageBase, pkgreq: PackageRequest
):
idle_time = config.getint("options", "request_idle_time")
now = time.utcnow()
with db.begin():
@ -564,10 +605,13 @@ def test_request_post_orphan_autogenerated_closure(client: TestClient,
assert re.search(expr, email.body)
def test_request_post_orphan_autoaccept(client: TestClient, auser: User,
pkgbase: PackageBase,
caplog: pytest.LogCaptureFixture):
""" Test the standard pkgbase request route GET method. """
def test_request_post_orphan_autoaccept(
client: TestClient,
auser: User,
pkgbase: PackageBase,
caplog: pytest.LogCaptureFixture,
):
"""Test the standard pkgbase request route GET method."""
caplog.set_level(DEBUG)
now = time.utcnow()
auto_orphan_age = config.getint("options", "auto_orphan_age")
@ -605,8 +649,7 @@ def test_request_post_orphan_autoaccept(client: TestClient, auser: User,
assert re.search(expr, caplog.text)
def test_orphan_as_maintainer(client: TestClient, auser: User,
pkgbase: PackageBase):
def test_orphan_as_maintainer(client: TestClient, auser: User, pkgbase: PackageBase):
endpoint = f"/pkgbase/{pkgbase.Name}/disown"
data = {"confirm": True}
with client as request:
@ -620,9 +663,10 @@ def test_orphan_as_maintainer(client: TestClient, auser: User,
assert pkgbase.Maintainer is None
def test_orphan_without_requests(client: TestClient, tu_user: User,
pkgbase: PackageBase):
""" Test orphans are automatically accepted past a certain date. """
def test_orphan_without_requests(
client: TestClient, tu_user: User, pkgbase: PackageBase
):
"""Test orphans are automatically accepted past a certain date."""
endpoint = f"/pkgbase/{pkgbase.Name}/disown"
data = {"confirm": True}
with client as request:
@ -637,7 +681,7 @@ def test_orphan_without_requests(client: TestClient, tu_user: User,
def test_closure_factory_invalid_reqtype_id():
""" Test providing an invalid reqtype_id raises NotImplementedError. """
"""Test providing an invalid reqtype_id raises NotImplementedError."""
automated = ClosureFactory()
match = r"^Unsupported '.+' value\.$"
with pytest.raises(NotImplementedError, match=match):
@ -657,19 +701,25 @@ def test_requests_unauthorized(client: TestClient):
assert resp.status_code == int(HTTPStatus.SEE_OTHER)
def test_requests(client: TestClient,
tu_user: User,
packages: list[Package],
requests: list[PackageRequest]):
def test_requests(
client: TestClient,
tu_user: User,
packages: list[Package],
requests: list[PackageRequest],
):
cookies = {"AURSID": tu_user.login(Request(), "testPassword")}
with client as request:
resp = request.get("/requests", params={
# Pass in url query parameters O, SeB and SB to exercise
# their paths inside of the pager_nav used in this request.
"O": 0, # Page 1
"SeB": "nd",
"SB": "n"
}, cookies=cookies)
resp = request.get(
"/requests",
params={
# Pass in url query parameters O, SeB and SB to exercise
# their paths inside of the pager_nav used in this request.
"O": 0, # Page 1
"SeB": "nd",
"SB": "n",
},
cookies=cookies,
)
assert resp.status_code == int(HTTPStatus.OK)
assert "Next " in resp.text
@ -682,9 +732,7 @@ def test_requests(client: TestClient,
# Request page 2 of the requests page.
with client as request:
resp = request.get("/requests", params={
"O": 50 # Page 2
}, cookies=cookies)
resp = request.get("/requests", params={"O": 50}, cookies=cookies) # Page 2
assert resp.status_code == int(HTTPStatus.OK)
assert " Previous" in resp.text
@ -695,8 +743,9 @@ def test_requests(client: TestClient,
assert len(rows) == 5 # There are five records left on the second page.
def test_requests_selfmade(client: TestClient, user: User,
requests: list[PackageRequest]):
def test_requests_selfmade(
client: TestClient, user: User, requests: list[PackageRequest]
):
cookies = {"AURSID": user.login(Request(), "testPassword")}
with client as request:
resp = request.get("/requests", cookies=cookies)
@ -710,46 +759,52 @@ def test_requests_selfmade(client: TestClient, user: User,
# Our first and only link in the last row should be "Close".
for row in rows:
last_row = row.xpath('./td')[-1].xpath('./a')[0]
last_row = row.xpath("./td")[-1].xpath("./a")[0]
assert last_row.text.strip() == "Close"
def test_requests_close(client: TestClient, user: User,
pkgreq: PackageRequest):
def test_requests_close(client: TestClient, user: User, pkgreq: PackageRequest):
cookies = {"AURSID": user.login(Request(), "testPassword")}
with client as request:
resp = request.get(f"/requests/{pkgreq.ID}/close", cookies=cookies,
allow_redirects=False)
resp = request.get(
f"/requests/{pkgreq.ID}/close", cookies=cookies, allow_redirects=False
)
assert resp.status_code == int(HTTPStatus.OK)
def test_requests_close_unauthorized(client: TestClient, maintainer: User,
pkgreq: PackageRequest):
def test_requests_close_unauthorized(
client: TestClient, maintainer: User, pkgreq: PackageRequest
):
cookies = {"AURSID": maintainer.login(Request(), "testPassword")}
with client as request:
resp = request.get(f"/requests/{pkgreq.ID}/close", cookies=cookies,
allow_redirects=False)
resp = request.get(
f"/requests/{pkgreq.ID}/close", cookies=cookies, allow_redirects=False
)
assert resp.status_code == int(HTTPStatus.SEE_OTHER)
assert resp.headers.get("location") == "/"
def test_requests_close_post_unauthorized(client: TestClient, maintainer: User,
pkgreq: PackageRequest):
def test_requests_close_post_unauthorized(
client: TestClient, maintainer: User, pkgreq: PackageRequest
):
cookies = {"AURSID": maintainer.login(Request(), "testPassword")}
with client as request:
resp = request.post(f"/requests/{pkgreq.ID}/close", data={
"reason": ACCEPTED_ID
}, cookies=cookies, allow_redirects=False)
resp = request.post(
f"/requests/{pkgreq.ID}/close",
data={"reason": ACCEPTED_ID},
cookies=cookies,
allow_redirects=False,
)
assert resp.status_code == int(HTTPStatus.SEE_OTHER)
assert resp.headers.get("location") == "/"
def test_requests_close_post(client: TestClient, user: User,
pkgreq: PackageRequest):
def test_requests_close_post(client: TestClient, user: User, pkgreq: PackageRequest):
cookies = {"AURSID": user.login(Request(), "testPassword")}
with client as request:
resp = request.post(f"/requests/{pkgreq.ID}/close",
cookies=cookies, allow_redirects=False)
resp = request.post(
f"/requests/{pkgreq.ID}/close", cookies=cookies, allow_redirects=False
)
assert resp.status_code == int(HTTPStatus.SEE_OTHER)
assert pkgreq.Status == REJECTED_ID
@ -757,12 +812,14 @@ def test_requests_close_post(client: TestClient, user: User,
assert pkgreq.ClosureComment == str()
def test_requests_close_post_rejected(client: TestClient, user: User,
pkgreq: PackageRequest):
def test_requests_close_post_rejected(
client: TestClient, user: User, pkgreq: PackageRequest
):
cookies = {"AURSID": user.login(Request(), "testPassword")}
with client as request:
resp = request.post(f"/requests/{pkgreq.ID}/close",
cookies=cookies, allow_redirects=False)
resp = request.post(
f"/requests/{pkgreq.ID}/close", cookies=cookies, allow_redirects=False
)
assert resp.status_code == int(HTTPStatus.SEE_OTHER)
assert pkgreq.Status == REJECTED_ID