test_SyncjobModel.py 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  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.MailboxModel import MailboxModel
  8. from models.SyncjobModel import SyncjobModel
  9. def test_model():
  10. # Generate random Mailbox
  11. random_username = f"mbox_test@mailcow.local"
  12. random_password = f"{os.urandom(4).hex()}"
  13. # Create an instance of SyncjobModel
  14. model = SyncjobModel(
  15. username=random_username,
  16. host1="mailcow.local",
  17. port1=993,
  18. user1="testuser@mailcow.local",
  19. password1="testpassword",
  20. enc1="SSL",
  21. )
  22. # Test the parser_command attribute
  23. assert model.parser_command == "syncjob", "Parser command should be 'syncjob'"
  24. # add Domain and Mailbox for testing
  25. domain_model = DomainModel(domain="mailcow.local")
  26. domain_model.add()
  27. mbox_model = MailboxModel(username=random_username, password=random_password)
  28. mbox_model.add()
  29. # 1. Syncjob add tests, should success
  30. r_add = model.add()
  31. assert isinstance(r_add, list), f"Expected a array but received: {json.dumps(r_add, indent=2)}"
  32. assert len(r_add) > 0 and len(r_add) <= 2, f"Wrong array received: {json.dumps(r_add, indent=2)}"
  33. assert "type" in r_add[0], f"'type' key missing in response: {json.dumps(r_add, indent=2)}"
  34. assert r_add[0]['type'] == "success", f"Wrong 'type' received: {r_add[0]['type']}\n{json.dumps(r_add, indent=2)}"
  35. assert "msg" in r_add[0], f"'msg' key missing in response: {json.dumps(r_add, indent=2)}"
  36. assert isinstance(r_add[0]['msg'], list), f"Expected a 'msg' array but received: {json.dumps(r_add, indent=2)}"
  37. 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)}"
  38. assert r_add[0]['msg'][0] == "mailbox_modified", f"Wrong 'msg' received: {r_add[0]['msg'][0]}, expected: 'mailbox_modified'\n{json.dumps(r_add, indent=2)}"
  39. # Assign created syncjob ID for further tests
  40. model.id = r_add[0]['msg'][2]
  41. # 2. Syncjob add tests, should fail because the syncjob already exists
  42. r_add = model.add()
  43. assert isinstance(r_add, list), f"Expected a array but received: {json.dumps(r_add, indent=2)}"
  44. assert len(r_add) > 0, f"Wrong array received: {json.dumps(r_add, indent=2)}"
  45. assert "type" in r_add[0], f"'type' key missing in response: {json.dumps(r_add, indent=2)}"
  46. assert r_add[0]['type'] == "danger", f"Wrong 'type' received: {r_add[0]['type']}\n{json.dumps(r_add, indent=2)}"
  47. assert "msg" in r_add[0], f"'msg' key missing in response: {json.dumps(r_add, indent=2)}"
  48. assert isinstance(r_add[0]['msg'], list), f"Expected a 'msg' array but received: {json.dumps(r_add, indent=2)}"
  49. 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)}"
  50. 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)}"
  51. # 3. Syncjob get tests
  52. r_get = model.get()
  53. assert isinstance(r_get, list), f"Expected a list but received: {json.dumps(r_get, indent=2)}"
  54. assert "user2" in r_get[0], f"'user2' key missing in response: {json.dumps(r_get, indent=2)}"
  55. assert "host1" in r_get[0], f"'host1' key missing in response: {json.dumps(r_get, indent=2)}"
  56. assert "port1" in r_get[0], f"'port1' key missing in response: {json.dumps(r_get, indent=2)}"
  57. assert "user1" in r_get[0], f"'user1' key missing in response: {json.dumps(r_get, indent=2)}"
  58. assert "enc1" in r_get[0], f"'enc1' key missing in response: {json.dumps(r_get, indent=2)}"
  59. assert r_get[0]['user2'] == model.username, f"Wrong 'user2' received: {r_get[0]['user2']}, expected: {model.username}\n{json.dumps(r_get, indent=2)}"
  60. assert r_get[0]['host1'] == model.host1, f"Wrong 'host1' received: {r_get[0]['host1']}, expected: {model.host1}\n{json.dumps(r_get, indent=2)}"
  61. assert r_get[0]['port1'] == model.port1, f"Wrong 'port1' received: {r_get[0]['port1']}, expected: {model.port1}\n{json.dumps(r_get, indent=2)}"
  62. assert r_get[0]['user1'] == model.user1, f"Wrong 'user1' received: {r_get[0]['user1']}, expected: {model.user1}\n{json.dumps(r_get, indent=2)}"
  63. assert r_get[0]['enc1'] == model.enc1, f"Wrong 'enc1' received: {r_get[0]['enc1']}, expected: {model.enc1}\n{json.dumps(r_get, indent=2)}"
  64. # 4. Syncjob edit tests
  65. model.active = 1
  66. r_edit = model.edit()
  67. assert isinstance(r_edit, list), f"Expected a array but received: {json.dumps(r_edit, indent=2)}"
  68. assert len(r_edit) > 0, f"Wrong array received: {json.dumps(r_edit, indent=2)}"
  69. assert "type" in r_edit[0], f"'type' key missing in response: {json.dumps(r_edit, indent=2)}"
  70. assert r_edit[0]['type'] == "success", f"Wrong 'type' received: {r_edit[0]['type']}\n{json.dumps(r_edit, indent=2)}"
  71. assert "msg" in r_edit[0], f"'msg' key missing in response: {json.dumps(r_edit, indent=2)}"
  72. assert isinstance(r_edit[0]['msg'], list), f"Expected a 'msg' array but received: {json.dumps(r_edit, indent=2)}"
  73. 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)}"
  74. assert r_edit[0]['msg'][0] == "mailbox_modified", f"Wrong 'msg' received: {r_edit[0]['msg'][0]}, expected: 'mailbox_modified'\n{json.dumps(r_edit, indent=2)}"
  75. # 5. Syncjob delete tests
  76. r_delete = model.delete()
  77. assert isinstance(r_delete, list), f"Expected a array but received: {json.dumps(r_delete, indent=2)}"
  78. assert len(r_delete) > 0, f"Wrong array received: {json.dumps(r_delete, indent=2)}"
  79. assert "type" in r_delete[0], f"'type' key missing in response: {json.dumps(r_delete, indent=2)}"
  80. assert r_delete[0]['type'] == "success", f"Wrong 'type' received: {r_delete[0]['type']}\n{json.dumps(r_delete, indent=2)}"
  81. assert "msg" in r_delete[0], f"'msg' key missing in response: {json.dumps(r_delete, indent=2)}"
  82. assert isinstance(r_delete[0]['msg'], list), f"Expected a 'msg' array but received: {json.dumps(r_delete, indent=2)}"
  83. 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)}"
  84. assert r_delete[0]['msg'][0] == "deleted_syncjob", f"Wrong 'msg' received: {r_delete[0]['msg'][0]}, expected: 'deleted_syncjob'\n{json.dumps(r_delete, indent=2)}"
  85. # delete testing Domain and Mailbox
  86. mbox_model.delete()
  87. domain_model.delete()
  88. if __name__ == "__main__":
  89. print("Running SyncjobModel tests...")
  90. test_model()
  91. print("All tests passed!")