test_repo_create.py 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. import pytest
  2. from flexmock import flexmock
  3. from borgmatic.actions import repo_create as module
  4. def test_run_repo_create_with_encryption_mode_argument_does_not_raise():
  5. flexmock(module.logger).answer = lambda message: None
  6. flexmock(module.borgmatic.borg.repo_create).should_receive('create_repository')
  7. arguments = flexmock(
  8. encryption_mode=flexmock(),
  9. source_repository=flexmock(),
  10. repository=flexmock(),
  11. copy_crypt_key=flexmock(),
  12. append_only=flexmock(),
  13. storage_quota=flexmock(),
  14. make_parent_directories=flexmock(),
  15. )
  16. module.run_repo_create(
  17. repository={'path': 'repo'},
  18. config={},
  19. local_borg_version=None,
  20. repo_create_arguments=arguments,
  21. global_arguments=flexmock(dry_run=False),
  22. local_path=None,
  23. remote_path=None,
  24. )
  25. def test_run_repo_create_with_encryption_mode_option_does_not_raise():
  26. flexmock(module.logger).answer = lambda message: None
  27. flexmock(module.borgmatic.borg.repo_create).should_receive('create_repository')
  28. arguments = flexmock(
  29. encryption_mode=None,
  30. source_repository=flexmock(),
  31. repository=flexmock(),
  32. copy_crypt_key=flexmock(),
  33. append_only=flexmock(),
  34. storage_quota=flexmock(),
  35. make_parent_directories=flexmock(),
  36. )
  37. module.run_repo_create(
  38. repository={'path': 'repo', 'encryption': flexmock()},
  39. config={},
  40. local_borg_version=None,
  41. repo_create_arguments=arguments,
  42. global_arguments=flexmock(dry_run=False),
  43. local_path=None,
  44. remote_path=None,
  45. )
  46. def test_run_repo_create_without_encryption_mode_raises():
  47. flexmock(module.logger).answer = lambda message: None
  48. flexmock(module.borgmatic.borg.repo_create).should_receive('create_repository')
  49. arguments = flexmock(
  50. encryption_mode=None,
  51. source_repository=flexmock(),
  52. repository=flexmock(),
  53. copy_crypt_key=flexmock(),
  54. append_only=flexmock(),
  55. storage_quota=flexmock(),
  56. make_parent_directories=flexmock(),
  57. )
  58. with pytest.raises(ValueError):
  59. module.run_repo_create(
  60. repository={'path': 'repo'},
  61. config={},
  62. local_borg_version=None,
  63. repo_create_arguments=arguments,
  64. global_arguments=flexmock(dry_run=False),
  65. local_path=None,
  66. remote_path=None,
  67. )
  68. def test_run_repo_create_favors_flags_over_config():
  69. flexmock(module.logger).answer = lambda message: None
  70. flexmock(module.borgmatic.borg.repo_create).should_receive('create_repository').with_args(
  71. object,
  72. object,
  73. object,
  74. object,
  75. object,
  76. object,
  77. object,
  78. object,
  79. append_only=False,
  80. storage_quota=0,
  81. make_parent_directories=False,
  82. local_path=object,
  83. remote_path=object,
  84. ).once()
  85. arguments = flexmock(
  86. encryption_mode=flexmock(),
  87. source_repository=flexmock(),
  88. repository=flexmock(),
  89. copy_crypt_key=flexmock(),
  90. append_only=False,
  91. storage_quota=0,
  92. make_parent_directories=False,
  93. )
  94. module.run_repo_create(
  95. repository={
  96. 'path': 'repo',
  97. 'append_only': True,
  98. 'storage_quota': '10G',
  99. 'make_parent_directories': True,
  100. },
  101. config={},
  102. local_borg_version=None,
  103. repo_create_arguments=arguments,
  104. global_arguments=flexmock(dry_run=False),
  105. local_path=None,
  106. remote_path=None,
  107. )
  108. def test_run_repo_create_defaults_to_config():
  109. flexmock(module.logger).answer = lambda message: None
  110. flexmock(module.borgmatic.borg.repo_create).should_receive('create_repository').with_args(
  111. object,
  112. object,
  113. object,
  114. object,
  115. object,
  116. object,
  117. object,
  118. object,
  119. append_only=True,
  120. storage_quota='10G',
  121. make_parent_directories=True,
  122. local_path=object,
  123. remote_path=object,
  124. ).once()
  125. arguments = flexmock(
  126. encryption_mode=flexmock(),
  127. source_repository=flexmock(),
  128. repository=flexmock(),
  129. copy_crypt_key=flexmock(),
  130. append_only=None,
  131. storage_quota=None,
  132. make_parent_directories=None,
  133. )
  134. module.run_repo_create(
  135. repository={
  136. 'path': 'repo',
  137. 'append_only': True,
  138. 'storage_quota': '10G',
  139. 'make_parent_directories': True,
  140. },
  141. config={},
  142. local_borg_version=None,
  143. repo_create_arguments=arguments,
  144. global_arguments=flexmock(dry_run=False),
  145. local_path=None,
  146. remote_path=None,
  147. )