test_file.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  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_with_file_not_found_error_raises():
  31. builtins = flexmock(sys.modules['builtins'])
  32. builtins.should_receive('open').with_args('/credentials/mycredential').and_raise(
  33. FileNotFoundError
  34. )
  35. with pytest.raises(ValueError):
  36. module.load_credential(
  37. hook_config={}, config={}, credential_parameters=('/credentials/mycredential',)
  38. )