test_pagerduty.py 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. from flexmock import flexmock
  2. from borgmatic.hooks.monitoring import pagerduty as module
  3. def test_ping_monitor_ignores_start_state():
  4. flexmock(module.borgmatic.hooks.credential.parse).should_receive(
  5. 'resolve_credential'
  6. ).replace_with(lambda value, config: value)
  7. flexmock(module.requests).should_receive('post').never()
  8. module.ping_monitor(
  9. {'integration_key': 'abc123'},
  10. {},
  11. 'config.yaml',
  12. module.monitor.State.START,
  13. monitoring_log_level=1,
  14. dry_run=False,
  15. )
  16. def test_ping_monitor_ignores_finish_state():
  17. flexmock(module.borgmatic.hooks.credential.parse).should_receive(
  18. 'resolve_credential'
  19. ).replace_with(lambda value, config: value)
  20. flexmock(module.requests).should_receive('post').never()
  21. module.ping_monitor(
  22. {'integration_key': 'abc123'},
  23. {},
  24. 'config.yaml',
  25. module.monitor.State.FINISH,
  26. monitoring_log_level=1,
  27. dry_run=False,
  28. )
  29. def test_ping_monitor_calls_api_for_fail_state():
  30. flexmock(module.borgmatic.hooks.credential.parse).should_receive(
  31. 'resolve_credential'
  32. ).replace_with(lambda value, config: value)
  33. flexmock(module.requests).should_receive('post').and_return(flexmock(ok=True))
  34. module.ping_monitor(
  35. {'integration_key': 'abc123'},
  36. {},
  37. 'config.yaml',
  38. module.monitor.State.FAIL,
  39. monitoring_log_level=1,
  40. dry_run=False,
  41. )
  42. def test_ping_monitor_dry_run_does_not_call_api():
  43. flexmock(module.borgmatic.hooks.credential.parse).should_receive(
  44. 'resolve_credential'
  45. ).replace_with(lambda value, config: value)
  46. flexmock(module.requests).should_receive('post').never()
  47. module.ping_monitor(
  48. {'integration_key': 'abc123'},
  49. {},
  50. 'config.yaml',
  51. module.monitor.State.FAIL,
  52. monitoring_log_level=1,
  53. dry_run=True,
  54. )
  55. def test_ping_monitor_with_connection_error_logs_warning():
  56. flexmock(module.borgmatic.hooks.credential.parse).should_receive(
  57. 'resolve_credential'
  58. ).replace_with(lambda value, config: value)
  59. flexmock(module.requests).should_receive('post').and_raise(
  60. module.requests.exceptions.ConnectionError
  61. )
  62. flexmock(module.logger).should_receive('warning').once()
  63. module.ping_monitor(
  64. {'integration_key': 'abc123'},
  65. {},
  66. 'config.yaml',
  67. module.monitor.State.FAIL,
  68. monitoring_log_level=1,
  69. dry_run=False,
  70. )
  71. def test_ping_monitor_with_credential_error_logs_warning():
  72. flexmock(module.borgmatic.hooks.credential.parse).should_receive(
  73. 'resolve_credential'
  74. ).and_raise(ValueError)
  75. flexmock(module.requests).should_receive('post').never()
  76. flexmock(module.logger).should_receive('warning')
  77. module.ping_monitor(
  78. {'integration_key': 'abc123'},
  79. {},
  80. 'config.yaml',
  81. module.monitor.State.FAIL,
  82. monitoring_log_level=1,
  83. dry_run=False,
  84. )
  85. def test_ping_monitor_with_other_error_logs_warning():
  86. response = flexmock(ok=False)
  87. flexmock(module.borgmatic.hooks.credential.parse).should_receive(
  88. 'resolve_credential'
  89. ).replace_with(lambda value, config: value)
  90. response.should_receive('raise_for_status').and_raise(
  91. module.requests.exceptions.RequestException
  92. )
  93. flexmock(module.requests).should_receive('post').and_return(response)
  94. flexmock(module.logger).should_receive('warning')
  95. module.ping_monitor(
  96. {'integration_key': 'abc123'},
  97. {},
  98. 'config.yaml',
  99. module.monitor.State.FAIL,
  100. monitoring_log_level=1,
  101. dry_run=False,
  102. )