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"