55 lines
1.6 KiB
Python
55 lines
1.6 KiB
Python
"""A credential in a query string stays out of uvicorn's request lines."""
|
|
|
|
import logging
|
|
|
|
import fluksio.main # noqa: F401 - installs the filter
|
|
|
|
|
|
def test_a_token_in_the_query_is_not_logged() -> None:
|
|
records: list[logging.LogRecord] = []
|
|
handler = logging.Handler()
|
|
handler.emit = records.append # type: ignore[method-assign]
|
|
log = logging.getLogger("uvicorn.error")
|
|
level = log.level
|
|
log.addHandler(handler)
|
|
log.setLevel(logging.INFO)
|
|
try:
|
|
log.info(
|
|
'%s - "WebSocket %s" [accepted]',
|
|
"192.0.2.1:0",
|
|
"/api/v1/flows/ws?token=s3cr3t&x=1",
|
|
)
|
|
finally:
|
|
log.removeHandler(handler)
|
|
log.setLevel(level)
|
|
|
|
assert [record.getMessage() for record in records] == [
|
|
'192.0.2.1:0 - "WebSocket /api/v1/flows/ws?token=***&x=1" [accepted]'
|
|
]
|
|
|
|
|
|
def test_the_pairing_secret_is_not_logged() -> None:
|
|
records: list[logging.LogRecord] = []
|
|
handler = logging.Handler()
|
|
handler.emit = records.append # type: ignore[method-assign]
|
|
log = logging.getLogger("uvicorn.access")
|
|
level = log.level
|
|
log.addHandler(handler)
|
|
log.setLevel(logging.INFO)
|
|
try:
|
|
log.info(
|
|
'%s - "%s %s HTTP/%s" %d',
|
|
"192.0.2.1:0",
|
|
"GET",
|
|
"/api/v1/devices/pair/ABCD2345?secret=s3cr3t",
|
|
"1.1",
|
|
202,
|
|
)
|
|
finally:
|
|
log.removeHandler(handler)
|
|
log.setLevel(level)
|
|
|
|
assert [record.getMessage() for record in records] == [
|
|
'192.0.2.1:0 - "GET /api/v1/devices/pair/ABCD2345?secret=*** HTTP/1.1" 202'
|
|
]
|