From 7bc36edb7b15cae90bbfa81187b63821466cdd59 Mon Sep 17 00:00:00 2001 From: Tomasz Kramkowski Date: Fri, 24 Mar 2023 19:45:17 +0000 Subject: add middleware tests --- tests/middleware/test_validate_method.py | 44 ++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 tests/middleware/test_validate_method.py (limited to 'tests/middleware/test_validate_method.py') diff --git a/tests/middleware/test_validate_method.py b/tests/middleware/test_validate_method.py new file mode 100644 index 0000000..1a51bca --- /dev/null +++ b/tests/middleware/test_validate_method.py @@ -0,0 +1,44 @@ +from wsgiref.validate import validator + +import pytest + +from paste import validate_method + +from ..common_wsgi import call_app + + +@pytest.fixture +def app(): + @validator + @validate_method + @validator + def app(_, start_response): + start_response("200 OK", [("Content-type", "text/plain")]) + return [b"Hello, world!"] + + return app + + +@pytest.mark.parametrize("method", ["GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS"]) +def test_valid_method(app, method): + environ = {"REQUEST_METHOD": method} + response = call_app(app, environ) + assert response.status == "200 OK" + assert response.data == b"Hello, world!" + + +@pytest.mark.filterwarnings("ignore:Unknown REQUEST_METHOD") +@pytest.mark.parametrize("method", ["CONNECT", "PATCH", "TRACE"]) +def test_disallowed_method(app, method): + environ = {"REQUEST_METHOD": method} + response = call_app(app, environ) + assert response.status == "405 Method Not Allowed" + assert response.data == b"405 Method Not Allowed\n" + + +@pytest.mark.filterwarnings("ignore:Unknown REQUEST_METHOD") +def test_invalid_method(app): + environ = {"REQUEST_METHOD": "INVALID"} + response = call_app(app, environ) + assert response.status == "501 Not Implemented" + assert response.data == b"501 Not Implemented\n" -- cgit v1.2.3-54-g00ecf