aboutsummaryrefslogtreecommitdiffstats
path: root/tests/middleware/test_validate_method.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/middleware/test_validate_method.py')
-rw-r--r--tests/middleware/test_validate_method.py44
1 files changed, 44 insertions, 0 deletions
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"