test_DomainadminModel.py 5.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. import pytest
  2. import json
  3. import sys
  4. import os
  5. sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "../")))
  6. from models.DomainModel import DomainModel
  7. from models.DomainadminModel import DomainadminModel
  8. def test_model():
  9. # Generate random domainadmin
  10. random_username = f"dadmin_test{os.urandom(4).hex()}"
  11. random_password = f"{os.urandom(4).hex()}"
  12. # Create an instance of DomainadminModel
  13. model = DomainadminModel(
  14. username=random_username,
  15. password=random_password,
  16. domains="mailcow.local",
  17. )
  18. # Test the parser_command attribute
  19. assert model.parser_command == "domainadmin", "Parser command should be 'domainadmin'"
  20. # add Domain for testing
  21. domain_model = DomainModel(domain="mailcow.local")
  22. domain_model.add()
  23. # 1. Domainadmin add tests, should success
  24. r_add = model.add()
  25. assert isinstance(r_add, list), f"Expected a array but received: {json.dumps(r_add, indent=2)}"
  26. assert len(r_add) > 0, f"Wrong array received: {json.dumps(r_add, indent=2)}"
  27. assert "type" in r_add[0], f"'type' key missing in response: {json.dumps(r_add, indent=2)}"
  28. assert r_add[0]['type'] == "success", f"Wrong 'type' received: {r_add[0]['type']}\n{json.dumps(r_add, indent=2)}"
  29. assert "msg" in r_add[0], f"'msg' key missing in response: {json.dumps(r_add, indent=2)}"
  30. assert isinstance(r_add[0]['msg'], list), f"Expected a 'msg' array but received: {json.dumps(r_add, indent=2)}"
  31. assert len(r_add[0]['msg']) > 0 and len(r_add[0]['msg']) <= 3, f"Wrong 'msg' array received: {json.dumps(r_add, indent=2)}"
  32. assert r_add[0]['msg'][0] == "domain_admin_added", f"Wrong 'msg' received: {r_add[0]['msg'][0]}, expected: 'domain_admin_added'\n{json.dumps(r_add, indent=2)}"
  33. # 2. Domainadmin add tests, should fail because the domainadmin already exists
  34. r_add = model.add()
  35. assert isinstance(r_add, list), f"Expected a array but received: {json.dumps(r_add, indent=2)}"
  36. assert len(r_add) > 0, f"Wrong array received: {json.dumps(r_add, indent=2)}"
  37. assert "type" in r_add[0], f"'type' key missing in response: {json.dumps(r_add, indent=2)}"
  38. assert r_add[0]['type'] == "danger", f"Wrong 'type' received: {r_add[0]['type']}\n{json.dumps(r_add, indent=2)}"
  39. assert "msg" in r_add[0], f"'msg' key missing in response: {json.dumps(r_add, indent=2)}"
  40. assert isinstance(r_add[0]['msg'], list), f"Expected a 'msg' array but received: {json.dumps(r_add, indent=2)}"
  41. assert len(r_add[0]['msg']) > 0 and len(r_add[0]['msg']) <= 2, f"Wrong 'msg' array received: {json.dumps(r_add, indent=2)}"
  42. assert r_add[0]['msg'][0] == "object_exists", f"Wrong 'msg' received: {r_add[0]['msg'][0]}, expected: 'object_exists'\n{json.dumps(r_add, indent=2)}"
  43. # 3. Domainadmin get tests
  44. r_get = model.get()
  45. assert isinstance(r_get, dict), f"Expected a dict but received: {json.dumps(r_get, indent=2)}"
  46. assert "selected_domains" in r_get, f"'selected_domains' key missing in response: {json.dumps(r_get, indent=2)}"
  47. assert "username" in r_get, f"'username' key missing in response: {json.dumps(r_get, indent=2)}"
  48. assert set(model.domains.replace(" ", "").split(",")) == set(r_get['selected_domains']), f"Wrong 'selected_domains' received: {r_get['selected_domains']}, expected: {model.domains}\n{json.dumps(r_get, indent=2)}"
  49. assert r_get['username'] == model.username, f"Wrong 'username' received: {r_get['username']}, expected: {model.username}\n{json.dumps(r_get, indent=2)}"
  50. # 4. Domainadmin edit tests
  51. model.active = 0
  52. r_edit = model.edit()
  53. assert isinstance(r_edit, list), f"Expected a array but received: {json.dumps(r_edit, indent=2)}"
  54. assert len(r_edit) > 0, f"Wrong array received: {json.dumps(r_edit, indent=2)}"
  55. assert "type" in r_edit[0], f"'type' key missing in response: {json.dumps(r_edit, indent=2)}"
  56. assert r_edit[0]['type'] == "success", f"Wrong 'type' received: {r_edit[0]['type']}\n{json.dumps(r_edit, indent=2)}"
  57. assert "msg" in r_edit[0], f"'msg' key missing in response: {json.dumps(r_edit, indent=2)}"
  58. assert isinstance(r_edit[0]['msg'], list), f"Expected a 'msg' array but received: {json.dumps(r_edit, indent=2)}"
  59. assert len(r_edit[0]['msg']) > 0 and len(r_edit[0]['msg']) <= 2, f"Wrong 'msg' array received: {json.dumps(r_edit, indent=2)}"
  60. assert r_edit[0]['msg'][0] == "domain_admin_modified", f"Wrong 'msg' received: {r_edit[0]['msg'][0]}, expected: 'domain_admin_modified'\n{json.dumps(r_edit, indent=2)}"
  61. # 5. Domainadmin delete tests
  62. r_delete = model.delete()
  63. assert isinstance(r_delete, list), f"Expected a array but received: {json.dumps(r_delete, indent=2)}"
  64. assert len(r_delete) > 0, f"Wrong array received: {json.dumps(r_delete, indent=2)}"
  65. assert "type" in r_delete[0], f"'type' key missing in response: {json.dumps(r_delete, indent=2)}"
  66. assert r_delete[0]['type'] == "success", f"Wrong 'type' received: {r_delete[0]['type']}\n{json.dumps(r_delete, indent=2)}"
  67. assert "msg" in r_delete[0], f"'msg' key missing in response: {json.dumps(r_delete, indent=2)}"
  68. assert isinstance(r_delete[0]['msg'], list), f"Expected a 'msg' array but received: {json.dumps(r_delete, indent=2)}"
  69. assert len(r_delete[0]['msg']) > 0 and len(r_delete[0]['msg']) <= 2, f"Wrong 'msg' array received: {json.dumps(r_delete, indent=2)}"
  70. assert r_delete[0]['msg'][0] == "domain_admin_removed", f"Wrong 'msg' received: {r_delete[0]['msg'][0]}, expected: 'domain_admin_removed'\n{json.dumps(r_delete, indent=2)}"
  71. # delete testing Domain
  72. domain_model.delete()
  73. if __name__ == "__main__":
  74. print("Running DomainadminModel tests...")
  75. test_model()
  76. print("All tests passed!")