1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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"
|