| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 | 
							- from flexmock import flexmock
 
- from borgmatic.borg import environment as module
 
- def test_make_environment_with_passcommand_should_call_it_and_set_passphrase_file_descriptor_in_environment():
 
-     flexmock(module.os).should_receive('environ').and_return(
 
-         {'USER': 'root', 'BORG_PASSCOMMAND': 'nope'}
 
-     )
 
-     flexmock(module.borgmatic.hooks.credential.parse).should_receive(
 
-         'resolve_credential'
 
-     ).and_return(None)
 
-     flexmock(module.borgmatic.borg.passcommand).should_receive(
 
-         'get_passphrase_from_passcommand'
 
-     ).and_return('passphrase')
 
-     flexmock(module.os).should_receive('pipe').and_return((3, 4))
 
-     flexmock(module.os).should_receive('write')
 
-     flexmock(module.os).should_receive('close')
 
-     flexmock(module.os).should_receive('set_inheritable')
 
-     environment = module.make_environment({'encryption_passcommand': 'command'})
 
-     assert environment.get('BORG_PASSPHRASE') is None
 
-     assert environment.get('BORG_PASSCOMMAND') is None
 
-     assert environment.get('BORG_PASSPHRASE_FD') == '3'
 
- def test_make_environment_with_passphrase_should_set_passphrase_file_descriptor_in_environment():
 
-     flexmock(module.os).should_receive('environ').and_return(
 
-         {'USER': 'root', 'BORG_PASSPHRASE': 'nope', 'BORG_PASSCOMMAND': 'nope'}
 
-     )
 
-     flexmock(module.borgmatic.hooks.credential.parse).should_receive(
 
-         'resolve_credential'
 
-     ).replace_with(lambda value, config: value)
 
-     flexmock(module.borgmatic.borg.passcommand).should_receive(
 
-         'get_passphrase_from_passcommand'
 
-     ).and_return(None)
 
-     flexmock(module.os).should_receive('pipe').and_return((3, 4))
 
-     flexmock(module.os).should_receive('write')
 
-     flexmock(module.os).should_receive('close')
 
-     flexmock(module.os).should_receive('set_inheritable')
 
-     environment = module.make_environment({'encryption_passphrase': 'pass'})
 
-     assert environment.get('BORG_PASSPHRASE') is None
 
-     assert environment.get('BORG_PASSCOMMAND') is None
 
-     assert environment.get('BORG_PASSPHRASE_FD') == '3'
 
- def test_make_environment_with_credential_tag_passphrase_should_load_it_and_set_passphrase_file_descriptor_in_environment():
 
-     flexmock(module.os).should_receive('environ').and_return({'USER': 'root'})
 
-     config = {'encryption_passphrase': '{credential systemd pass}'}
 
-     flexmock(module.borgmatic.hooks.credential.parse).should_receive(
 
-         'resolve_credential',
 
-     ).with_args('{credential systemd pass}', config).and_return('pass')
 
-     flexmock(module.borgmatic.borg.passcommand).should_receive(
 
-         'get_passphrase_from_passcommand'
 
-     ).never()
 
-     flexmock(module.os).should_receive('pipe').and_return((3, 4))
 
-     flexmock(module.os).should_receive('write')
 
-     flexmock(module.os).should_receive('close')
 
-     flexmock(module.os).should_receive('set_inheritable')
 
-     environment = module.make_environment(config)
 
-     assert environment.get('BORG_PASSPHRASE') is None
 
-     assert environment.get('BORG_PASSPHRASE_FD') == '3'
 
- def test_make_environment_with_ssh_command_should_set_environment():
 
-     flexmock(module.os).should_receive('environ').and_return({'USER': 'root'})
 
-     flexmock(module.borgmatic.hooks.credential.parse).should_receive(
 
-         'resolve_credential'
 
-     ).and_return(None)
 
-     flexmock(module.os).should_receive('pipe').never()
 
-     environment = module.make_environment({'ssh_command': 'ssh -C'})
 
-     assert environment.get('BORG_RSH') == 'ssh -C'
 
- def test_make_environment_without_configuration_sets_certain_environment_variables():
 
-     flexmock(module.os).should_receive('environ').and_return({'USER': 'root'})
 
-     flexmock(module.borgmatic.hooks.credential.parse).should_receive(
 
-         'resolve_credential'
 
-     ).and_return(None)
 
-     flexmock(module.os).should_receive('pipe').never()
 
-     environment = module.make_environment({})
 
-     # Default environment variables.
 
-     assert environment == {
 
-         'USER': 'root',
 
-         'BORG_EXIT_CODES': 'modern',
 
-         'BORG_RELOCATED_REPO_ACCESS_IS_OK': 'no',
 
-         'BORG_UNKNOWN_UNENCRYPTED_REPO_ACCESS_IS_OK': 'no',
 
-     }
 
- def test_make_environment_without_configuration_passes_through_default_environment_variables_untouched():
 
-     flexmock(module.os).should_receive('environ').and_return(
 
-         {
 
-             'USER': 'root',
 
-             'BORG_RELOCATED_REPO_ACCESS_IS_OK': 'yup',
 
-             'BORG_UNKNOWN_UNENCRYPTED_REPO_ACCESS_IS_OK': 'nah',
 
-         }
 
-     )
 
-     flexmock(module.borgmatic.hooks.credential.parse).should_receive(
 
-         'resolve_credential'
 
-     ).and_return(None)
 
-     flexmock(module.os).should_receive('pipe').never()
 
-     environment = module.make_environment({})
 
-     assert environment == {
 
-         'USER': 'root',
 
-         'BORG_RELOCATED_REPO_ACCESS_IS_OK': 'yup',
 
-         'BORG_UNKNOWN_UNENCRYPTED_REPO_ACCESS_IS_OK': 'nah',
 
-         'BORG_EXIT_CODES': 'modern',
 
-     }
 
- def test_make_environment_with_relocated_repo_access_true_should_set_environment_yes():
 
-     flexmock(module.os).should_receive('environ').and_return({'USER': 'root'})
 
-     flexmock(module.borgmatic.hooks.credential.parse).should_receive(
 
-         'resolve_credential'
 
-     ).and_return(None)
 
-     flexmock(module.os).should_receive('pipe').never()
 
-     environment = module.make_environment({'relocated_repo_access_is_ok': True})
 
-     assert environment.get('BORG_RELOCATED_REPO_ACCESS_IS_OK') == 'yes'
 
- def test_make_environment_with_relocated_repo_access_false_should_set_environment_no():
 
-     flexmock(module.os).should_receive('environ').and_return({'USER': 'root'})
 
-     flexmock(module.borgmatic.hooks.credential.parse).should_receive(
 
-         'resolve_credential'
 
-     ).and_return(None)
 
-     flexmock(module.os).should_receive('pipe').never()
 
-     environment = module.make_environment({'relocated_repo_access_is_ok': False})
 
-     assert environment.get('BORG_RELOCATED_REPO_ACCESS_IS_OK') == 'no'
 
- def test_make_environment_check_i_know_what_i_am_doing_true_should_set_environment_YES():
 
-     flexmock(module.os).should_receive('environ').and_return({'USER': 'root'})
 
-     flexmock(module.borgmatic.hooks.credential.parse).should_receive(
 
-         'resolve_credential'
 
-     ).and_return(None)
 
-     flexmock(module.os).should_receive('pipe').never()
 
-     environment = module.make_environment({'check_i_know_what_i_am_doing': True})
 
-     assert environment.get('BORG_CHECK_I_KNOW_WHAT_I_AM_DOING') == 'YES'
 
- def test_make_environment_check_i_know_what_i_am_doing_false_should_set_environment_NO():
 
-     flexmock(module.os).should_receive('environ').and_return({'USER': 'root'})
 
-     flexmock(module.borgmatic.hooks.credential.parse).should_receive(
 
-         'resolve_credential'
 
-     ).and_return(None)
 
-     flexmock(module.os).should_receive('pipe').never()
 
-     environment = module.make_environment({'check_i_know_what_i_am_doing': False})
 
-     assert environment.get('BORG_CHECK_I_KNOW_WHAT_I_AM_DOING') == 'NO'
 
- def test_make_environment_with_integer_variable_value():
 
-     flexmock(module.os).should_receive('environ').and_return({'USER': 'root'})
 
-     flexmock(module.borgmatic.hooks.credential.parse).should_receive(
 
-         'resolve_credential'
 
-     ).and_return(None)
 
-     flexmock(module.os).should_receive('pipe').never()
 
-     environment = module.make_environment({'borg_files_cache_ttl': 40})
 
-     assert environment.get('BORG_FILES_CACHE_TTL') == '40'
 
 
  |