Skip to content

Commit 71bc018

Browse files
committed
test: achieve 100% coverage on app code
Add lifespan test for SECRETS_DIR warning logging and validator test for None admin encryption key, covering the last two uncovered branches. Signed-off-by: Grant Ramsay <seapagan@gmail.com>
1 parent 104f9a7 commit 71bc018

2 files changed

Lines changed: 37 additions & 0 deletions

File tree

tests/unit/test_lifespan.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -238,6 +238,36 @@ async def test_lifespan_warns_on_cors_wildcard(
238238
)
239239
loguru_warning.assert_called_once()
240240

241+
async def test_lifespan_warns_on_secrets_dir_issues(
242+
self, caplog, mocker
243+
) -> None:
244+
"""Ensure warnings are logged when SECRETS_DIR has issues."""
245+
app = FastAPI()
246+
mock_session = mocker.patch(self.mock_session)
247+
mock_connection = (
248+
mock_session.return_value.__aenter__.return_value.connection
249+
)
250+
mock_connection.return_value = None
251+
252+
mocker.patch("app.main.get_settings").return_value.cache_enabled = False
253+
mocker.patch("app.main.cors_list", ["https://example.com"])
254+
mocker.patch(
255+
"app.main.check_secrets_dir",
256+
return_value=["SECRETS_DIR is writable by the current process."],
257+
)
258+
loguru_warning = mocker.patch("app.main.loguru_logger.warning")
259+
260+
caplog.set_level(logging.WARNING)
261+
262+
async with lifespan(app):
263+
pass # NOSONAR
264+
265+
assert any(
266+
"SECRETS_DIR is writable" in record.message
267+
for record in caplog.records
268+
)
269+
loguru_warning.assert_called_once()
270+
241271
async def test_lifespan_initializes_redis_and_closes_client(
242272
self, caplog, mocker
243273
) -> None:

tests/unit/test_validation.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -481,6 +481,13 @@ def test_empty_admin_encryption_key_generates_default(
481481
assert encryption_key
482482
assert Fernet(encryption_key.encode())
483483

484+
def test_none_admin_encryption_key_generates_default(self) -> None:
485+
"""None admin encryption key should generate a valid key."""
486+
result = Settings.validate_admin_pages_encryption_key(None)
487+
488+
assert isinstance(result, SecretStr)
489+
assert Fernet(unwrap_secret(result).encode())
490+
484491
def test_get_settings_uses_secrets_dir_env_var(
485492
self, monkeypatch, mocker
486493
) -> None:

0 commit comments

Comments
 (0)