test_status.py 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. # Copyright 2021-2025 Avaiga Private Limited
  2. #
  3. # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
  4. # the License. You may obtain a copy of the License at
  5. #
  6. # http://www.apache.org/licenses/LICENSE-2.0
  7. #
  8. # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
  9. # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
  10. # specific language governing permissions and limitations under the License.
  11. import inspect
  12. from os import path
  13. from taipy.gui import Gui
  14. def test_get_status(gui: Gui, helpers, gui_server):
  15. gui.run(run_server=False)
  16. server_client = gui._server.test_client()
  17. ret = server_client.get("/taipy.status.json")
  18. assert ret.status_code == 200, f"status_code => {ret.status_code} != 200"
  19. if gui_server == "flask":
  20. assert ret.mimetype == "application/json", f"mimetype => {ret.mimetype} != application/json"
  21. elif gui_server == "fastapi":
  22. mimetype = ret.headers["content-type"]
  23. assert mimetype == "application/json", f"mimetype => {mimetype} != application/json"
  24. ret_json = helpers.get_response_data(ret)
  25. assert ret_json, "json is not defined"
  26. assert "gui" in ret_json, "json has no key gui"
  27. gui = ret_json.get("gui")
  28. assert isinstance(gui, dict), "json.gui is not a dict"
  29. assert "user_status" in gui, "json.gui has no key user_status"
  30. assert gui.get("user_status") == "", "json.gui.user_status is not empty"
  31. def test_get_extended_status(gui: Gui, helpers, gui_server):
  32. gui.run(run_server=False, extended_status=True)
  33. server_client = gui._server.test_client()
  34. ret = server_client.get("/taipy.status.json")
  35. assert ret.status_code == 200, f"status_code => {ret.status_code} != 200"
  36. if gui_server == "flask":
  37. assert ret.mimetype == "application/json", f"mimetype => {ret.mimetype} != application/json"
  38. elif gui_server == "fastapi":
  39. mimetype = ret.headers["content-type"]
  40. assert mimetype == "application/json", f"mimetype => {mimetype} != application/json"
  41. ret_json = helpers.get_response_data(ret)
  42. assert ret_json, "json is not defined"
  43. gui_json = ret_json.get("gui")
  44. assert "backend_version" in gui_json, "json.gui has no key backend_version"
  45. assert "flask_version" in gui_json, "json.gui has no key flask_version"
  46. if path.exists(gui._get_webapp_path()):
  47. assert "frontend_version" in gui_json, "json.gui has no key frontend_version"
  48. assert "host" in gui_json, "json.gui has no key host"
  49. assert "python_version" in gui_json, "json.gui has no key python_version"
  50. assert "user_status" in gui_json, "json.gui has no key user_status"
  51. assert gui_json.get("user_status") == "", "json.gui.user_status is not empty"
  52. def test_get_status_with_user_status(gui: Gui, helpers):
  53. user_status = "user_status"
  54. def on_status(state):
  55. return user_status
  56. gui._set_frame(inspect.currentframe())
  57. gui.run(run_server=False)
  58. server_client = gui._server.test_client()
  59. ret = server_client.get("/taipy.status.json")
  60. ret_json = helpers.get_response_data(ret)
  61. assert ret.status_code == 200, f"status_code => {ret.status_code} != 200"
  62. assert ret_json, "json is not defined"
  63. gui_ret = ret_json.get("gui")
  64. assert "user_status" in gui_ret, "json.gui has no key user_status"
  65. assert gui_ret.get("user_status") == user_status
  66. assert f"json.gui.user_status => {gui_ret.get('user_status')} != {user_status}"