mirror of
https://gitlab.com/buildroot.org/buildroot.git
synced 2026-10-03 07:21:45 -09:00
package/python-flask-expects-json: new package
This commit adds a new package called python-flask-expects-json, which also to validate the JSON blurbs submitted to a Flask web application. A runtime test is added as well, making sure that the package minimally works with an example Flask application. The files added by this commit are associated both to Nicolas Carrier and myself in the DEVELOPERS file, as Nicolas is also interested in this package. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com> Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
This commit is contained in:
committed by
Arnout Vandecappelle (Essensium/Mind)
parent
57260dab0c
commit
e6ee07f41a
@@ -0,0 +1,18 @@
|
||||
from flask import Flask
|
||||
from flask_expects_json import expects_json
|
||||
app = Flask(__name__)
|
||||
|
||||
schema = {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'name': {'type': 'string'},
|
||||
'email': {'type': 'string'},
|
||||
},
|
||||
'required': ['name', 'email']
|
||||
}
|
||||
|
||||
|
||||
@app.route('/', methods=['POST'])
|
||||
@expects_json(schema)
|
||||
def hello_world():
|
||||
return 'Hello, World!'
|
||||
@@ -0,0 +1,38 @@
|
||||
from tests.package.test_python import TestPythonPackageBase
|
||||
import os
|
||||
import time
|
||||
|
||||
|
||||
class TestPythonPy3FlaskExpectsJson(TestPythonPackageBase):
|
||||
__test__ = True
|
||||
config = TestPythonPackageBase.config + \
|
||||
"""
|
||||
BR2_PACKAGE_LIBCURL=y
|
||||
BR2_PACKAGE_LIBCURL_CURL=y
|
||||
BR2_PACKAGE_PYTHON3=y
|
||||
BR2_PACKAGE_PYTHON_FLASK=y
|
||||
BR2_PACKAGE_PYTHON_FLASK_EXPECTS_JSON=y
|
||||
"""
|
||||
sample_scripts = ["tests/package/sample_python_flask_expects_json.py"]
|
||||
timeout = 60
|
||||
|
||||
def try_json(self, payload, expects):
|
||||
cmd = """curl -s -o /dev/null -w "%%{http_code}\\n" -X POST """
|
||||
cmd += """-H "Content-Type: application/json" -d '%s' http://127.0.0.1:5000""" % payload
|
||||
output, exit_code = self.emulator.run(cmd, timeout=self.timeout)
|
||||
self.assertEqual(exit_code, 0)
|
||||
self.assertEqual(output[-1], str(expects))
|
||||
|
||||
def test_run(self):
|
||||
self.login()
|
||||
self.check_sample_scripts_exist()
|
||||
cmd = "FLASK_APP=%s %s -m flask run > /dev/null 2>&1 &" % (os.path.basename(self.sample_scripts[0]),
|
||||
self.interpreter)
|
||||
_, exit_code = self.emulator.run(cmd, timeout=self.timeout)
|
||||
|
||||
# Give enough time for the flask server to start up
|
||||
time.sleep(15)
|
||||
|
||||
self.try_json("""{"email": "test", "name": "test"}""", 200)
|
||||
self.try_json("""{"email": "test", "name": 2}""", 400)
|
||||
self.try_json("""{"email": "test"}""", 400)
|
||||
Reference in New Issue
Block a user