forked from orbit-oss/flask
Updates after code review
This commit is contained in:
parent
f0f458e0c5
commit
f0d3b71a94
3 changed files with 17 additions and 15 deletions
2
CHANGES
2
CHANGES
|
|
@ -14,6 +14,8 @@ Version 0.12
|
||||||
- Added `json` keyword argument to :meth:`flask.testing.FlaskClient.open`
|
- Added `json` keyword argument to :meth:`flask.testing.FlaskClient.open`
|
||||||
(and related ``get``, ``post``, etc.), which makes it more convenient to
|
(and related ``get``, ``post``, etc.), which makes it more convenient to
|
||||||
send JSON requests from the test client.
|
send JSON requests from the test client.
|
||||||
|
- Added ``is_json`` and ``get_json`` to :class:``flask.wrappers.Response``
|
||||||
|
in order to make it easier to build assertions when testing JSON responses.
|
||||||
|
|
||||||
Version 0.11.2
|
Version 0.11.2
|
||||||
--------------
|
--------------
|
||||||
|
|
|
||||||
|
|
@ -360,24 +360,24 @@ Testing JSON APIs
|
||||||
|
|
||||||
.. versionadded:: 1.0
|
.. versionadded:: 1.0
|
||||||
|
|
||||||
Flask has a great support for JSON, and is a popular choice for building REST
|
Flask has great support for JSON, and is a popular choice for building REST
|
||||||
APIs. Testing both JSON requests and responses using the test client is very
|
APIs. Testing both JSON requests and responses using the test client is very
|
||||||
convenient:
|
convenient:
|
||||||
|
|
||||||
from flask import json, jsonify
|
from flask import jsonify
|
||||||
|
|
||||||
@app.route('/api/auth')
|
@app.route('/api/auth')
|
||||||
def auth():
|
def auth():
|
||||||
email = request.json['email']
|
email = request.get_json()['email']
|
||||||
password = request.json['password']
|
password = request.get_json()['password']
|
||||||
return jsonify(token=generate_token(email, password))
|
return jsonify(token=generate_token(email, password))
|
||||||
|
|
||||||
with app.test_client() as c:
|
with app.test_client() as c:
|
||||||
email = 'john@example.com'
|
email = 'john@example.com'
|
||||||
password = 'secret'
|
password = 'secret'
|
||||||
resp = c.post('/api/auth', json={'email': email, 'password': password})
|
resp = c.post('/api/auth', json={'login': email, 'password': password})
|
||||||
assert verify_token(email, resp.json['token'])
|
assert verify_token(email, resp.get_json()['token'])
|
||||||
|
|
||||||
Note that if the ``json`` argument is provided then the test client will put
|
Note that if the ``json`` argument is provided then the test client will put
|
||||||
the JSON-serialized object in the request body, and also set the
|
JSON-serialized data in the request body, and also set the
|
||||||
``Content-Type: application/json`` header.
|
``Content-Type: application/json`` HTTP header.
|
||||||
|
|
|
||||||
|
|
@ -50,11 +50,11 @@ class JSONMixin(object):
|
||||||
'Use get_json() instead.'), stacklevel=2)
|
'Use get_json() instead.'), stacklevel=2)
|
||||||
return self.get_json()
|
return self.get_json()
|
||||||
|
|
||||||
def _get_data_for_json(req, cache):
|
def _get_data_for_json(self, cache):
|
||||||
getter = getattr(req, 'get_data', None)
|
getter = getattr(self, 'get_data', None)
|
||||||
if getter is not None:
|
if getter is not None:
|
||||||
return getter(cache=cache)
|
return getter(cache=cache)
|
||||||
return req.data
|
return self.data
|
||||||
|
|
||||||
def get_json(self, force=False, silent=False, cache=True):
|
def get_json(self, force=False, silent=False, cache=True):
|
||||||
"""Parses the incoming JSON request data and returns it. By default
|
"""Parses the incoming JSON request data and returns it. By default
|
||||||
|
|
@ -215,9 +215,9 @@ class Response(ResponseBase, JSONMixin):
|
||||||
"""
|
"""
|
||||||
default_mimetype = 'text/html'
|
default_mimetype = 'text/html'
|
||||||
|
|
||||||
def _get_data_for_json(req, cache):
|
def _get_data_for_json(self, cache):
|
||||||
# Ignore the cache flag since response doesn't support it
|
getter = getattr(self, 'get_data', None)
|
||||||
getter = getattr(req, 'get_data', None)
|
|
||||||
if getter is not None:
|
if getter is not None:
|
||||||
|
# Ignore the cache flag since response doesn't support it
|
||||||
return getter()
|
return getter()
|
||||||
return req.data
|
return self.data
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue