test_file.py 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. import io
  2. import sys
  3. import pytest
  4. from flexmock import flexmock
  5. from borgmatic.hooks.credential import file as module
  6. @pytest.mark.parametrize('credential_parameters', ((), ('foo', 'bar')))
  7. def test_load_credential_with_invalid_credential_parameters_raises(credential_parameters):
  8. with pytest.raises(ValueError):
  9. module.load_credential(
  10. hook_config={}, config={}, credential_parameters=credential_parameters
  11. )
  12. def test_load_credential_with_invalid_credential_name_raises():
  13. with pytest.raises(ValueError):
  14. module.load_credential(
  15. hook_config={}, config={}, credential_parameters=('this is invalid',)
  16. )
  17. def test_load_credential_reads_named_credential_from_file():
  18. credential_stream = io.StringIO('password')
  19. credential_stream.name = '/credentials/mycredential'
  20. builtins = flexmock(sys.modules['builtins'])
  21. builtins.should_receive('open').with_args('/credentials/mycredential').and_return(
  22. credential_stream
  23. )
  24. assert (
  25. module.load_credential(
  26. hook_config={}, config={}, credential_parameters=('/credentials/mycredential',)
  27. )
  28. == 'password'
  29. )
  30. def test_load_credential_reads_named_credential_from_file_using_working_directory():
  31. credential_stream = io.StringIO('password')
  32. credential_stream.name = '/working/credentials/mycredential'
  33. builtins = flexmock(sys.modules['builtins'])
  34. builtins.should_receive('open').with_args('/working/credentials/mycredential').and_return(
  35. credential_stream
  36. )
  37. assert (
  38. module.load_credential(
  39. hook_config={},
  40. config={'working_directory': '/working'},
  41. credential_parameters=('credentials/mycredential',),
  42. )
  43. == 'password'
  44. )
  45. def test_load_credential_with_file_not_found_error_raises():
  46. builtins = flexmock(sys.modules['builtins'])
  47. builtins.should_receive('open').with_args('/credentials/mycredential').and_raise(
  48. FileNotFoundError
  49. )
  50. with pytest.raises(ValueError):
  51. module.load_credential(
  52. hook_config={}, config={}, credential_parameters=('/credentials/mycredential',)
  53. )