2
0

test_base_helpers.py 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. import unittest
  2. from cloudbridge.cloud.base import helpers as cb_helpers
  3. from cloudbridge.cloud.interfaces.exceptions import InvalidParamException
  4. class BaseHelpersTestCase(unittest.TestCase):
  5. _multiprocess_can_split_ = True
  6. def test_cleanup_action_body_has_no_exception(self):
  7. invoke_order = [""]
  8. def cleanup_func():
  9. invoke_order[0] += "cleanup"
  10. with cb_helpers.cleanup_action(lambda: cleanup_func()):
  11. invoke_order[0] += "body_"
  12. self.assertEqual(invoke_order[0], "body_cleanup")
  13. def test_cleanup_action_body_has_exception(self):
  14. invoke_order = [""]
  15. def cleanup_func():
  16. invoke_order[0] += "cleanup"
  17. class CustomException(Exception):
  18. pass
  19. with self.assertRaises(CustomException):
  20. with cb_helpers.cleanup_action(lambda: cleanup_func()):
  21. invoke_order[0] += "body_"
  22. raise CustomException()
  23. self.assertEqual(invoke_order[0], "body_cleanup")
  24. def test_cleanup_action_cleanup_has_exception(self):
  25. invoke_order = [""]
  26. def cleanup_func():
  27. invoke_order[0] += "cleanup"
  28. raise Exception("test")
  29. with cb_helpers.cleanup_action(lambda: cleanup_func()):
  30. invoke_order[0] += "body_"
  31. self.assertEqual(invoke_order[0], "body_cleanup")
  32. def test_cleanup_action_body_and_cleanup_has_exception(self):
  33. invoke_order = [""]
  34. def cleanup_func():
  35. invoke_order[0] += "cleanup"
  36. raise Exception("test")
  37. class CustomException(Exception):
  38. pass
  39. with self.assertRaises(CustomException):
  40. with cb_helpers.cleanup_action(lambda: cleanup_func()):
  41. invoke_order[0] += "body_"
  42. raise CustomException()
  43. self.assertEqual(invoke_order[0], "body_cleanup")
  44. def test_deprecated_alias_no_rename(self):
  45. param_values = {}
  46. @cb_helpers.deprecated_alias(old_param='new_param')
  47. def custom_func(new_param=None, old_param=None):
  48. param_values['new_param'] = new_param
  49. param_values['old_param'] = old_param
  50. custom_func(new_param="hello")
  51. self.assertDictEqual(param_values,
  52. {
  53. 'new_param': "hello",
  54. 'old_param': None
  55. })
  56. def test_deprecated_alias_force_rename(self):
  57. param_values = {}
  58. @cb_helpers.deprecated_alias(old_param='new_param')
  59. def custom_func(new_param=None, old_param=None):
  60. param_values['new_param'] = new_param
  61. param_values['old_param'] = old_param
  62. custom_func(old_param="hello")
  63. self.assertDictEqual(param_values,
  64. {
  65. 'new_param': "hello",
  66. 'old_param': None
  67. })
  68. def test_deprecated_alias_force_conflict(self):
  69. param_values = {}
  70. @cb_helpers.deprecated_alias(old_param='new_param')
  71. def custom_func(new_param=None, old_param=None):
  72. param_values['new_param'] = new_param
  73. param_values['old_param'] = old_param
  74. with self.assertRaises(InvalidParamException):
  75. custom_func(new_param="world", old_param="hello")