test_DomainModel.py 4.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  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. def test_model():
  8. # Create an instance of DomainModel
  9. model = DomainModel(
  10. domain="mailcow.local",
  11. )
  12. # Test the parser_command attribute
  13. assert model.parser_command == "domain", "Parser command should be 'domain'"
  14. # 1. Domain add tests, should success
  15. r_add = model.add()
  16. assert isinstance(r_add, list), f"Expected a array but received: {json.dumps(r_add, indent=2)}"
  17. assert len(r_add) > 0 and len(r_add) >= 2, f"Wrong array received: {json.dumps(r_add, indent=2)}"
  18. assert "type" in r_add[1], f"'type' key missing in response: {json.dumps(r_add, indent=2)}"
  19. assert r_add[1]['type'] == "success", f"Wrong 'type' received: {r_add[1]['type']}\n{json.dumps(r_add, indent=2)}"
  20. assert "msg" in r_add[1], f"'msg' key missing in response: {json.dumps(r_add, indent=2)}"
  21. assert isinstance(r_add[1]['msg'], list), f"Expected a 'msg' array but received: {json.dumps(r_add, indent=2)}"
  22. assert len(r_add[1]['msg']) > 0 and len(r_add[1]['msg']) <= 2, f"Wrong 'msg' array received: {json.dumps(r_add, indent=2)}"
  23. assert r_add[1]['msg'][0] == "domain_added", f"Wrong 'msg' received: {r_add[1]['msg'][0]}, expected: 'domain_added'\n{json.dumps(r_add, indent=2)}"
  24. # 2. Domain add tests, should fail because the domain already exists
  25. r_add = model.add()
  26. assert isinstance(r_add, list), f"Expected a array but received: {json.dumps(r_add, indent=2)}"
  27. assert len(r_add) > 0, f"Wrong array received: {json.dumps(r_add, indent=2)}"
  28. assert "type" in r_add[0], f"'type' key missing in response: {json.dumps(r_add, indent=2)}"
  29. assert r_add[0]['type'] == "danger", f"Wrong 'type' received: {r_add[0]['type']}\n{json.dumps(r_add, indent=2)}"
  30. assert "msg" in r_add[0], f"'msg' key missing in response: {json.dumps(r_add, indent=2)}"
  31. assert isinstance(r_add[0]['msg'], list), f"Expected a 'msg' array but received: {json.dumps(r_add, indent=2)}"
  32. 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)}"
  33. assert r_add[0]['msg'][0] == "domain_exists", f"Wrong 'msg' received: {r_add[0]['msg'][0]}, expected: 'domain_exists'\n{json.dumps(r_add, indent=2)}"
  34. # 3. Domain get tests
  35. r_get = model.get()
  36. assert isinstance(r_get, dict), f"Expected a dict but received: {json.dumps(r_get, indent=2)}"
  37. assert "domain_name" in r_get, f"'domain_name' key missing in response: {json.dumps(r_get, indent=2)}"
  38. assert r_get['domain_name'] == model.domain, f"Wrong 'domain_name' received: {r_get['domain_name']}, expected: {model.domain}\n{json.dumps(r_get, indent=2)}"
  39. # 4. Domain edit tests
  40. model.active = 0
  41. r_edit = model.edit()
  42. assert isinstance(r_edit, list), f"Expected a array but received: {json.dumps(r_edit, indent=2)}"
  43. assert len(r_edit) > 0, f"Wrong array received: {json.dumps(r_edit, indent=2)}"
  44. assert "type" in r_edit[0], f"'type' key missing in response: {json.dumps(r_edit, indent=2)}"
  45. assert r_edit[0]['type'] == "success", f"Wrong 'type' received: {r_edit[0]['type']}\n{json.dumps(r_edit, indent=2)}"
  46. assert "msg" in r_edit[0], f"'msg' key missing in response: {json.dumps(r_edit, indent=2)}"
  47. assert isinstance(r_edit[0]['msg'], list), f"Expected a 'msg' array but received: {json.dumps(r_edit, indent=2)}"
  48. 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)}"
  49. assert r_edit[0]['msg'][0] == "domain_modified", f"Wrong 'msg' received: {r_edit[0]['msg'][0]}, expected: 'domain_modified'\n{json.dumps(r_edit, indent=2)}"
  50. # 5. Domain delete tests
  51. r_delete = model.delete()
  52. assert isinstance(r_delete, list), f"Expected a array but received: {json.dumps(r_delete, indent=2)}"
  53. assert len(r_delete) > 0, f"Wrong array received: {json.dumps(r_delete, indent=2)}"
  54. assert "type" in r_delete[0], f"'type' key missing in response: {json.dumps(r_delete, indent=2)}"
  55. assert r_delete[0]['type'] == "success", f"Wrong 'type' received: {r_delete[0]['type']}\n{json.dumps(r_delete, indent=2)}"
  56. assert "msg" in r_delete[0], f"'msg' key missing in response: {json.dumps(r_delete, indent=2)}"
  57. assert isinstance(r_delete[0]['msg'], list), f"Expected a 'msg' array but received: {json.dumps(r_delete, indent=2)}"
  58. 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)}"
  59. assert r_delete[0]['msg'][0] == "domain_removed", f"Wrong 'msg' received: {r_delete[0]['msg'][0]}, expected: 'domain_removed'\n{json.dumps(r_delete, indent=2)}"
  60. if __name__ == "__main__":
  61. print("Running DomainModel tests...")
  62. test_model()
  63. print("All tests passed!")