diff options
Diffstat (limited to 'testing/mozbase/mozhttpd/tests/requestlog.py')
-rw-r--r-- | testing/mozbase/mozhttpd/tests/requestlog.py | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/testing/mozbase/mozhttpd/tests/requestlog.py b/testing/mozbase/mozhttpd/tests/requestlog.py new file mode 100644 index 0000000000..8e7b065f3d --- /dev/null +++ b/testing/mozbase/mozhttpd/tests/requestlog.py @@ -0,0 +1,62 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this file, +# You can obtain one at http://mozilla.org/MPL/2.0/. + +import os + +import mozhttpd +import mozunit +import pytest +from six.moves.urllib.request import urlopen + + +def log_requests(enabled): + """Decorator to change the log_requests parameter for MozHttpd.""" + param_id = "enabled" if enabled else "disabled" + return pytest.mark.parametrize("log_requests", [enabled], ids=[param_id]) + + +@pytest.fixture(name="docroot") +def fixture_docroot(): + """Return a docroot path.""" + return os.path.dirname(os.path.abspath(__file__)) + + +@pytest.fixture(name="request_log") +def fixture_request_log(docroot, log_requests): + """Yields the request log of a started MozHttpd server.""" + httpd = mozhttpd.MozHttpd( + port=0, + docroot=docroot, + log_requests=log_requests, + ) + httpd.start(block=False) + + url = "http://{host}:{port}/".format( + host="127.0.0.1", + port=httpd.httpd.server_port, + ) + f = urlopen(url) + f.read() + + yield httpd.request_log + + httpd.stop() + + +@log_requests(True) +def test_logging_enabled(request_log): + assert len(request_log) == 1 + log_entry = request_log[0] + assert log_entry["method"] == "GET" + assert log_entry["path"] == "/" + assert type(log_entry["time"]) == float + + +@log_requests(False) +def test_logging_disabled(request_log): + assert len(request_log) == 0 + + +if __name__ == "__main__": + mozunit.main() |