diff --git a/test/io-tests/test_io.py b/test/io-tests/test_io.py index 404c23fe9..9a4f7961c 100644 --- a/test/io-tests/test_io.py +++ b/test/io-tests/test_io.py @@ -7,6 +7,7 @@ from itertools import repeat from operator import attrgetter import os import pathlib +import re import shutil import signal import socket @@ -801,3 +802,46 @@ def test_admin_live_dependent_on_main_app(defaultenv): os.remove(defaultenv["PGRST_SERVER_UNIX_SOCKET"]) response = postgrest.admin.get("/live") assert response.status_code == 503 + + +@pytest.mark.parametrize( + "level, has_output", + [ + ("info", [True, True, True]), + ("warn", [False, True, True]), + ("error", [False, False, True]), + ("crit", [False, False, False]), + ], +) +def test_log_level(level, has_output, defaultenv): + "log_level should filter request logging" + + env = { + **defaultenv, + "PGRST_LOG_LEVEL": level + } + + with run(env=env) as postgrest: + response = postgrest.session.get("/") + assert response.status_code == 200 + if has_output[0]: + assert re.match( + r'unknownSocket - - \[.+\] "GET / HTTP/1.1" 200 - "" "python-requests/.+"', + postgrest.process.stdout.readline().decode(), + ) + + response = postgrest.session.get("/unknown") + assert response.status_code == 404 + if has_output[1]: + assert re.match( + r'unknownSocket - - \[.+\] "GET /unknown HTTP/1.1" 404 - "" "python-requests/.+"', + postgrest.process.stdout.readline().decode(), + ) + + response = postgrest.session.get("/rpc/raise_bad_pt") + assert response.status_code == 500 + if has_output[2]: + assert re.match( + r'unknownSocket - - \[.+\] "GET /rpc/raise_bad_pt HTTP/1.1" 500 - "" "python-requests/.+"', + postgrest.process.stdout.readline().decode(), + )