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 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146
|
import pytest
from werkzeug.datastructures import Headers
from werkzeug.datastructures import ImmutableMultiDict
from openapi_core.contrib.requests import RequestsOpenAPIRequest
from openapi_core.datatypes import RequestParameters
class TestRequestsOpenAPIRequest:
def test_type_invalid(self):
with pytest.raises(TypeError):
RequestsOpenAPIRequest(None)
def test_simple(self, request_factory, request):
request = request_factory("GET", "/", subdomain="www")
openapi_request = RequestsOpenAPIRequest(request)
path = {}
query = ImmutableMultiDict([])
headers = Headers(dict(request.headers))
cookies = {}
prepared = request.prepare()
assert openapi_request.parameters == RequestParameters(
path=path,
query=query,
header=headers,
cookie=cookies,
)
assert openapi_request.method == request.method.lower()
assert openapi_request.host_url == "http://localhost"
assert openapi_request.path == "/"
assert openapi_request.body == prepared.body
assert openapi_request.content_type == "application/json"
def test_multiple_values(self, request_factory, request):
request = request_factory(
"GET", "/", subdomain="www", query_string="a=b&a=c"
)
openapi_request = RequestsOpenAPIRequest(request)
path = {}
query = ImmutableMultiDict(
[
("a", "b"),
("a", "c"),
]
)
headers = Headers(dict(request.headers))
cookies = {}
assert openapi_request.parameters == RequestParameters(
path=path,
query=query,
header=headers,
cookie=cookies,
)
prepared = request.prepare()
assert openapi_request.method == request.method.lower()
assert openapi_request.host_url == "http://localhost"
assert openapi_request.path == "/"
assert openapi_request.body == prepared.body
assert openapi_request.content_type == "application/json"
def test_url_rule(self, request_factory, request):
request = request_factory("GET", "/browse/12/", subdomain="kb")
openapi_request = RequestsOpenAPIRequest(request)
# empty when not bound to spec
path = {}
query = ImmutableMultiDict([])
headers = Headers(
{
"Content-Type": "application/json",
}
)
cookies = {}
assert openapi_request.parameters == RequestParameters(
path=path,
query=query,
header=headers,
cookie=cookies,
)
prepared = request.prepare()
assert openapi_request.method == request.method.lower()
assert openapi_request.host_url == "http://localhost"
assert openapi_request.path == "/browse/12/"
assert openapi_request.body == prepared.body
assert openapi_request.content_type == "application/json"
def test_hash_param(self, request_factory, request):
request = request_factory("GET", "/browse/#12", subdomain="kb")
openapi_request = RequestsOpenAPIRequest(request)
# empty when not bound to spec
path = {}
query = ImmutableMultiDict([])
headers = Headers(
{
"Content-Type": "application/json",
}
)
cookies = {}
assert openapi_request.parameters == RequestParameters(
path=path,
query=query,
header=headers,
cookie=cookies,
)
prepared = request.prepare()
assert openapi_request.method == request.method.lower()
assert openapi_request.host_url == "http://localhost"
assert openapi_request.path == "/browse/#12"
assert openapi_request.body == prepared.body
assert openapi_request.content_type == "application/json"
def test_content_type_with_charset(self, request_factory, request):
request = request_factory(
"GET",
"/",
subdomain="www",
content_type="application/json; charset=utf-8",
)
openapi_request = RequestsOpenAPIRequest(request)
path = {}
query = ImmutableMultiDict([])
headers = Headers(dict(request.headers))
cookies = {}
prepared = request.prepare()
assert openapi_request.parameters == RequestParameters(
path=path,
query=query,
header=headers,
cookie=cookies,
)
assert openapi_request.method == request.method.lower()
assert openapi_request.host_url == "http://localhost"
assert openapi_request.path == "/"
assert openapi_request.body == prepared.body
assert (
openapi_request.content_type == "application/json; charset=utf-8"
)
|