mirror of
https://github.com/LukeHagar/connexion.git
synced 2025-12-09 20:37:46 +00:00
Co-authored-by: Robbe Sneyders <robbe.sneyders@ml6.eu>
This commit is contained in:
@@ -362,7 +362,8 @@ class AioHttpApi(AbstractAPI):
|
|||||||
json_getter=lambda: cls.jsonifier.loads(body),
|
json_getter=lambda: cls.jsonifier.loads(body),
|
||||||
form=form,
|
form=form,
|
||||||
files=files,
|
files=files,
|
||||||
context=req)
|
context=req,
|
||||||
|
cookies=req.cookies)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
async def get_response(cls, response, mimetype=None, request=None):
|
async def get_response(cls, response, mimetype=None, request=None):
|
||||||
|
|||||||
@@ -245,7 +245,8 @@ class FlaskApi(AbstractAPI):
|
|||||||
json_getter=lambda: flask_request.get_json(silent=True),
|
json_getter=lambda: flask_request.get_json(silent=True),
|
||||||
files=flask_request.files,
|
files=flask_request.files,
|
||||||
path_params=params,
|
path_params=params,
|
||||||
context=context_dict
|
context=context_dict,
|
||||||
|
cookies=flask_request.cookies,
|
||||||
)
|
)
|
||||||
logger.debug('Getting data and status code',
|
logger.debug('Getting data and status code',
|
||||||
extra={
|
extra={
|
||||||
|
|||||||
@@ -16,7 +16,8 @@ class ConnexionRequest:
|
|||||||
body=None,
|
body=None,
|
||||||
json_getter=None,
|
json_getter=None,
|
||||||
files=None,
|
files=None,
|
||||||
context=None):
|
context=None,
|
||||||
|
cookies=None):
|
||||||
self.url = url
|
self.url = url
|
||||||
self.method = method
|
self.method = method
|
||||||
self.path_params = path_params or {}
|
self.path_params = path_params or {}
|
||||||
@@ -27,6 +28,7 @@ class ConnexionRequest:
|
|||||||
self.json_getter = json_getter
|
self.json_getter = json_getter
|
||||||
self.files = files
|
self.files = files
|
||||||
self.context = context if context is not None else {}
|
self.context = context if context is not None else {}
|
||||||
|
self.cookies = cookies or {}
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def json(self):
|
def json(self):
|
||||||
|
|||||||
@@ -189,6 +189,19 @@ async def test_pythonic_path_param(aiohttp_api_spec_dir, aiohttp_client):
|
|||||||
assert j['id_'] == 100
|
assert j['id_'] == 100
|
||||||
|
|
||||||
|
|
||||||
|
async def test_cookie_param(aiohttp_api_spec_dir, aiohttp_client):
|
||||||
|
app = AioHttpApp(__name__, port=5001,
|
||||||
|
specification_dir=aiohttp_api_spec_dir,
|
||||||
|
debug=True)
|
||||||
|
app.add_api('openapi_simple.yaml', pass_context_arg_name="request")
|
||||||
|
|
||||||
|
app_client = await aiohttp_client(app.app)
|
||||||
|
response = await app_client.get('/v1.0/test-cookie-param', headers={"Cookie": "test_cookie=hello"})
|
||||||
|
assert response.status == 200
|
||||||
|
j = await response.json()
|
||||||
|
assert j['cookie_value'] == "hello"
|
||||||
|
|
||||||
|
|
||||||
async def test_swagger_ui_static(aiohttp_api_spec_dir, aiohttp_client):
|
async def test_swagger_ui_static(aiohttp_api_spec_dir, aiohttp_client):
|
||||||
app = AioHttpApp(__name__, port=5001,
|
app = AioHttpApp(__name__, port=5001,
|
||||||
specification_dir=aiohttp_api_spec_dir,
|
specification_dir=aiohttp_api_spec_dir,
|
||||||
|
|||||||
@@ -509,3 +509,11 @@ def test_get_unicode_request(simple_app):
|
|||||||
resp = app_client.get('/v1.0/get_unicode_request?price=%C2%A319.99') # £19.99
|
resp = app_client.get('/v1.0/get_unicode_request?price=%C2%A319.99') # £19.99
|
||||||
assert resp.status_code == 200
|
assert resp.status_code == 200
|
||||||
assert json.loads(resp.data.decode('utf-8'))['price'] == '£19.99'
|
assert json.loads(resp.data.decode('utf-8'))['price'] == '£19.99'
|
||||||
|
|
||||||
|
|
||||||
|
def test_cookie_param(simple_app):
|
||||||
|
app_client = simple_app.app.test_client()
|
||||||
|
app_client.set_cookie("localhost", "test_cookie", "hello")
|
||||||
|
response = app_client.get("/v1.0/test-cookie-param")
|
||||||
|
assert response.status_code == 200
|
||||||
|
assert response.json == {"cookie_value": "hello"}
|
||||||
|
|||||||
@@ -147,3 +147,7 @@ async def aiohttp_multipart_mixed_many_files(myfiles, body):
|
|||||||
'myfiles_content': [ f.file.read().decode('utf8') for f in myfiles ]
|
'myfiles_content': [ f.file.read().decode('utf8') for f in myfiles ]
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
async def test_cookie_param(request):
|
||||||
|
return {"cookie_value": request.cookies["test_cookie"]}
|
||||||
|
|||||||
@@ -330,6 +330,10 @@ def test_required_param(simple):
|
|||||||
return simple
|
return simple
|
||||||
|
|
||||||
|
|
||||||
|
def test_cookie_param():
|
||||||
|
return {"cookie_value": request.cookies["test_cookie"]}
|
||||||
|
|
||||||
|
|
||||||
def test_exploded_deep_object_param(id):
|
def test_exploded_deep_object_param(id):
|
||||||
return id
|
return id
|
||||||
|
|
||||||
|
|||||||
13
tests/fixtures/aiohttp/openapi_simple.yaml
vendored
13
tests/fixtures/aiohttp/openapi_simple.yaml
vendored
@@ -20,3 +20,16 @@ paths:
|
|||||||
'200':
|
'200':
|
||||||
description: ok
|
description: ok
|
||||||
security: []
|
security: []
|
||||||
|
/test-cookie-param:
|
||||||
|
get:
|
||||||
|
summary: Test cookie parameter support.
|
||||||
|
operationId: fakeapi.aiohttp_handlers.test_cookie_param
|
||||||
|
parameters:
|
||||||
|
- name: test_cookie
|
||||||
|
in: cookie
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: OK
|
||||||
|
|||||||
13
tests/fixtures/simple/openapi.yaml
vendored
13
tests/fixtures/simple/openapi.yaml
vendored
@@ -663,6 +663,19 @@ paths:
|
|||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
description: OK
|
description: OK
|
||||||
|
/test-cookie-param:
|
||||||
|
get:
|
||||||
|
summary: Test cookie parameter support.
|
||||||
|
operationId: fakeapi.hello.test_cookie_param
|
||||||
|
parameters:
|
||||||
|
- name: test_cookie
|
||||||
|
in: cookie
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: OK
|
||||||
/parameters-in-root-path:
|
/parameters-in-root-path:
|
||||||
parameters:
|
parameters:
|
||||||
- in: query
|
- in: query
|
||||||
|
|||||||
9
tests/fixtures/simple/swagger.yaml
vendored
9
tests/fixtures/simple/swagger.yaml
vendored
@@ -518,6 +518,15 @@ paths:
|
|||||||
200:
|
200:
|
||||||
description: OK
|
description: OK
|
||||||
|
|
||||||
|
/test-cookie-param:
|
||||||
|
get:
|
||||||
|
summary: Test cookie parameter support.
|
||||||
|
operationId: fakeapi.hello.test_cookie_param
|
||||||
|
# No parameters because swagger / openapi 2.0 does not support describing cookie parameters.
|
||||||
|
responses:
|
||||||
|
200:
|
||||||
|
description: OK
|
||||||
|
|
||||||
/parameters-in-root-path:
|
/parameters-in-root-path:
|
||||||
parameters:
|
parameters:
|
||||||
- in: query
|
- in: query
|
||||||
|
|||||||
Reference in New Issue
Block a user