hc
2024-03-22 a0752693d998599af469473b8dc239ef973a012f
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
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[0], 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)