From 81f8c2326566f993fcbcb2f0ef189c13657b0676 Mon Sep 17 00:00:00 2001 From: Kevin Morris Date: Thu, 2 Dec 2021 23:42:13 -0800 Subject: [PATCH] fix(fastapi): log out IntegrityError from failed SID generation Signed-off-by: Kevin Morris --- aurweb/models/user.py | 5 ++++- test/test_auth_routes.py | 6 +++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/aurweb/models/user.py b/aurweb/models/user.py index dcf5f519..8e66b490 100644 --- a/aurweb/models/user.py +++ b/aurweb/models/user.py @@ -15,11 +15,13 @@ import aurweb.config import aurweb.models.account_type import aurweb.schema -from aurweb import db, schema +from aurweb import db, logging, schema from aurweb.models.account_type import AccountType as _AccountType from aurweb.models.ban import is_banned from aurweb.models.declarative import Base +logger = logging.get_logger(__name__) + SALT_ROUNDS_DEFAULT = 12 @@ -146,6 +148,7 @@ class User(Base): if exc: detail = ("Unable to generate a unique session ID in " f"{tries} iterations.") + logger.error(str(exc)) raise HTTPException(status_code=HTTPStatus.INTERNAL_SERVER_ERROR, detail=detail) diff --git a/test/test_auth_routes.py b/test/test_auth_routes.py index 3455a019..3ae8a56c 100644 --- a/test/test_auth_routes.py +++ b/test/test_auth_routes.py @@ -285,7 +285,8 @@ def test_login_bad_referer(client: TestClient): assert "AURSID" not in response.cookies -def test_generate_unique_sid_exhausted(client: TestClient, user: User): +def test_generate_unique_sid_exhausted(client: TestClient, user: User, + caplog: pytest.LogCaptureFixture): """ In this test, we mock up generate_unique_sid() to infinitely return the same SessionID given to `user`. Within that mocking, we try @@ -328,3 +329,6 @@ def test_generate_unique_sid_exhausted(client: TestClient, user: User): expected = "Unable to generate a unique session ID" assert expected in response.text assert "500 - Internal Server Error" in response.text + + # Make sure an IntegrityError from the DB got logged out. + assert "IntegrityError" in caplog.text