test_pagerduty.py 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. from flexmock import flexmock
  2. from borgmatic.hooks import pagerduty as module
  3. def test_ping_monitor_ignores_start_state():
  4. flexmock(module.requests).should_receive('post').never()
  5. module.ping_monitor(
  6. {'integration_key': 'abc123'},
  7. {},
  8. 'config.yaml',
  9. module.monitor.State.START,
  10. monitoring_log_level=1,
  11. dry_run=False,
  12. )
  13. def test_ping_monitor_ignores_finish_state():
  14. flexmock(module.requests).should_receive('post').never()
  15. module.ping_monitor(
  16. {'integration_key': 'abc123'},
  17. {},
  18. 'config.yaml',
  19. module.monitor.State.FINISH,
  20. monitoring_log_level=1,
  21. dry_run=False,
  22. )
  23. def test_ping_monitor_calls_api_for_fail_state():
  24. flexmock(module.requests).should_receive('post').and_return(flexmock(ok=True))
  25. module.ping_monitor(
  26. {'integration_key': 'abc123'},
  27. {},
  28. 'config.yaml',
  29. module.monitor.State.FAIL,
  30. monitoring_log_level=1,
  31. dry_run=False,
  32. )
  33. def test_ping_monitor_dry_run_does_not_call_api():
  34. flexmock(module.requests).should_receive('post').never()
  35. module.ping_monitor(
  36. {'integration_key': 'abc123'},
  37. {},
  38. 'config.yaml',
  39. module.monitor.State.FAIL,
  40. monitoring_log_level=1,
  41. dry_run=True,
  42. )
  43. def test_ping_monitor_with_connection_error_logs_warning():
  44. flexmock(module.requests).should_receive('post').and_raise(
  45. module.requests.exceptions.ConnectionError
  46. )
  47. flexmock(module.logger).should_receive('warning').once()
  48. module.ping_monitor(
  49. {'integration_key': 'abc123'},
  50. {},
  51. 'config.yaml',
  52. module.monitor.State.FAIL,
  53. monitoring_log_level=1,
  54. dry_run=False,
  55. )
  56. def test_ping_monitor_with_other_error_logs_warning():
  57. response = flexmock(ok=False)
  58. response.should_receive('raise_for_status').and_raise(
  59. module.requests.exceptions.RequestException
  60. )
  61. flexmock(module.requests).should_receive('post').and_return(response)
  62. flexmock(module.logger).should_receive('warning')
  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. )