test_borgmatic.py 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. import json
  2. import sys
  3. from flexmock import flexmock
  4. from borgmatic.commands import borgmatic as module
  5. def test_run_commands_handles_multiple_json_outputs_in_array():
  6. (
  7. flexmock(module)
  8. .should_receive('_run_commands_on_repository')
  9. .times(3)
  10. .replace_with(
  11. lambda args, consistency, json_results, local_path, location, remote_path, retention, storage, unexpanded_repository: json_results.append(
  12. {"whatever": unexpanded_repository}
  13. )
  14. )
  15. )
  16. (
  17. flexmock(sys.stdout)
  18. .should_call("write")
  19. .with_args(
  20. json.dumps(
  21. json.loads(
  22. '''
  23. [
  24. {"whatever": "fake_repo1"},
  25. {"whatever": "fake_repo2"},
  26. {"whatever": "fake_repo3"}
  27. ]
  28. '''
  29. )
  30. )
  31. )
  32. )
  33. module._run_commands(
  34. args=flexmock(json=True),
  35. consistency=None,
  36. local_path=None,
  37. location={'repositories': ['fake_repo1', 'fake_repo2', 'fake_repo3']},
  38. remote_path=None,
  39. retention=None,
  40. storage=None,
  41. )
  42. def test_collect_configuration_run_summary_logs_info_for_success():
  43. flexmock(module.validate).should_receive('parse_configuration').and_return({'test.yaml': {}})
  44. flexmock(module).should_receive('run_configuration')
  45. args = flexmock(extract=False, list=False)
  46. logs = tuple(module.collect_configuration_run_summary_logs(('test.yaml',), args=args))
  47. assert all(log for log in logs if log.levelno == module.logging.INFO)
  48. def test_collect_configuration_run_summary_logs_info_for_success_with_extract():
  49. flexmock(module.validate).should_receive('parse_configuration').and_return({'test.yaml': {}})
  50. flexmock(module.validate).should_receive('guard_configuration_contains_repository')
  51. flexmock(module).should_receive('run_configuration')
  52. args = flexmock(extract=True, list=False, repository='repo')
  53. logs = tuple(module.collect_configuration_run_summary_logs(('test.yaml',), args=args))
  54. assert all(log for log in logs if log.levelno == module.logging.INFO)
  55. def test_collect_configuration_run_summary_logs_critical_for_extract_with_repository_error():
  56. flexmock(module.validate).should_receive('parse_configuration').and_return({'test.yaml': {}})
  57. flexmock(module.validate).should_receive('guard_configuration_contains_repository').and_raise(
  58. ValueError
  59. )
  60. args = flexmock(extract=True, list=False, repository='repo')
  61. logs = tuple(module.collect_configuration_run_summary_logs(('test.yaml',), args=args))
  62. assert any(log for log in logs if log.levelno == module.logging.CRITICAL)
  63. def test_collect_configuration_run_summary_logs_critical_for_list_with_archive_and_repository_error():
  64. flexmock(module.validate).should_receive('parse_configuration').and_return({'test.yaml': {}})
  65. flexmock(module.validate).should_receive('guard_configuration_contains_repository').and_raise(
  66. ValueError
  67. )
  68. args = flexmock(extract=False, list=True, repository='repo', archive='test')
  69. logs = tuple(module.collect_configuration_run_summary_logs(('test.yaml',), args=args))
  70. assert any(log for log in logs if log.levelno == module.logging.CRITICAL)
  71. def test_collect_configuration_run_summary_logs_info_for_success_with_list():
  72. flexmock(module.validate).should_receive('parse_configuration').and_return({'test.yaml': {}})
  73. flexmock(module).should_receive('run_configuration')
  74. args = flexmock(extract=False, list=True, repository='repo', archive=None)
  75. logs = tuple(module.collect_configuration_run_summary_logs(('test.yaml',), args=args))
  76. assert all(log for log in logs if log.levelno == module.logging.INFO)
  77. def test_collect_configuration_run_summary_logs_critical_for_parse_error():
  78. flexmock(module.validate).should_receive('parse_configuration').and_raise(ValueError)
  79. args = flexmock(extract=False, list=False)
  80. logs = tuple(module.collect_configuration_run_summary_logs(('test.yaml',), args=args))
  81. assert any(log for log in logs if log.levelno == module.logging.CRITICAL)
  82. def test_collect_configuration_run_summary_logs_critical_for_run_error():
  83. flexmock(module.validate).should_receive('parse_configuration').and_return({'test.yaml': {}})
  84. flexmock(module.validate).should_receive('guard_configuration_contains_repository')
  85. flexmock(module).should_receive('run_configuration').and_raise(ValueError)
  86. args = flexmock(extract=False, list=False)
  87. logs = tuple(module.collect_configuration_run_summary_logs(('test.yaml',), args=args))
  88. assert any(log for log in logs if log.levelno == module.logging.CRITICAL)
  89. def test_collect_configuration_run_summary_logs_critical_for_missing_configs():
  90. flexmock(module.validate).should_receive('parse_configuration').and_return({'test.yaml': {}})
  91. flexmock(module).should_receive('run_configuration')
  92. args = flexmock(config_paths=(), extract=False, list=False)
  93. logs = tuple(module.collect_configuration_run_summary_logs(config_filenames=(), args=args))
  94. assert any(log for log in logs if log.levelno == module.logging.CRITICAL)