utils.py 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. from __future__ import annotations
  2. import copy
  3. from flask import url_for
  4. def login(the_client, email, password):
  5. auth_data = dict(email=email, password=password)
  6. login_response = the_client.post(
  7. url_for("security.login"), data=auth_data, follow_redirects=True
  8. )
  9. assert login_response.status_code == 200
  10. assert b"Please log in" not in login_response.data
  11. return login_response
  12. def logout(client):
  13. return client.get(url_for("security.logout"), follow_redirects=True)
  14. def mock_asset_response(
  15. asset_id: int = 2,
  16. account_id: int = 1,
  17. as_list: bool = True,
  18. multiple: bool = False,
  19. ) -> dict | list[dict]:
  20. """
  21. Mock response from asset API.
  22. Does not mock output of paginated assets endpoint!
  23. """
  24. asset = dict(
  25. id=asset_id,
  26. name="TestAsset",
  27. generic_asset_type={"id": 1, "name": "battery"},
  28. account_id=int(account_id),
  29. latitude=70.4,
  30. longitude=30.9,
  31. )
  32. if as_list:
  33. asset_list = [asset]
  34. if multiple:
  35. asset2 = copy.deepcopy(asset)
  36. asset2["name"] = "TestAsset2"
  37. asset2["id"] += 1
  38. asset_list.append(asset2)
  39. return asset_list
  40. return asset
  41. def mock_user_response(
  42. user_id: int = 1,
  43. username: str = "Alex",
  44. email="alex@seita.nl",
  45. active: bool = True,
  46. as_list: bool = True,
  47. multiple: bool = False,
  48. ) -> dict | list[dict]:
  49. user = dict(
  50. id=user_id,
  51. username=username,
  52. email=email,
  53. active=active,
  54. password="secret",
  55. flexmeasures_roles=[1],
  56. last_login_at="2021-05-14T20:00:00+02:00",
  57. account_id=1,
  58. )
  59. if as_list:
  60. user_list = [user]
  61. if multiple:
  62. user2 = copy.deepcopy(user)
  63. user2["id"] = 2
  64. user2["username"] = "Bert"
  65. user2["email"] = "bert@seita.nl"
  66. user_list.append(user2)
  67. return user_list
  68. return user
  69. def mock_api_data_as_form_input(api_data: dict) -> dict:
  70. form_input = copy.deepcopy(api_data)
  71. form_input["account"] = api_data["account_id"]
  72. return form_input
  73. def mock_account_response(
  74. account_id: int = 1,
  75. account_name: str = "test_account",
  76. account_roles: list = [{"id": 1, "name": "Prosumer"}],
  77. as_list: bool = True,
  78. multiple: bool = False,
  79. ) -> dict | list[dict]:
  80. account = dict(
  81. id=account_id,
  82. name=account_name,
  83. account_roles=account_roles,
  84. )
  85. if as_list:
  86. account_list = [account]
  87. if multiple:
  88. account2 = copy.deepcopy(account)
  89. account2["id"] = 2
  90. account2["name"] = "test_account2"
  91. account2["account_roles"] = []
  92. account_list.append(account2)
  93. return account_list
  94. return account