| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 | import pytestfrom flexmock import flexmockfrom borgmatic.hooks.credential import parse as moduledef test_hash_adapter_is_always_equal():    assert module.Hash_adapter({1: 2}) == module.Hash_adapter({3: 4})def test_hash_adapter_alwaysh_hashes_the_same():    assert hash(module.Hash_adapter({1: 2})) == hash(module.Hash_adapter({3: 4}))def test_cache_ignoring_unhashable_arguments_caches_arguments_after_first_call():    hashable = 3    unhashable = {1, 2}    calls = 0    @module.cache_ignoring_unhashable_arguments    def function(first, second, third):        nonlocal calls        calls += 1        assert first == hashable        assert second == unhashable        assert third == unhashable        return first    assert function(hashable, unhashable, third=unhashable) == hashable    assert calls == 1    assert function(hashable, unhashable, third=unhashable) == hashable    assert calls == 1def test_resolve_credential_passes_through_string_without_credential():    module.resolve_credential.cache_clear()    flexmock(module.borgmatic.hooks.dispatch).should_receive('call_hook').never()    assert module.resolve_credential('{no credentials here}', config={}) == '{no credentials here}'def test_resolve_credential_passes_through_none():    module.resolve_credential.cache_clear()    flexmock(module.borgmatic.hooks.dispatch).should_receive('call_hook').never()    assert module.resolve_credential(None, config={}) is None@pytest.mark.parametrize('invalid_value', ('{credential}', '{credential }', '{credential systemd}'))def test_resolve_credential_with_invalid_credential_raises(invalid_value):    module.resolve_credential.cache_clear()    flexmock(module.borgmatic.hooks.dispatch).should_receive('call_hook').never()    with pytest.raises(ValueError):        module.resolve_credential(invalid_value, config={})def test_resolve_credential_with_valid_credential_loads_credential():    module.resolve_credential.cache_clear()    flexmock(module.borgmatic.hooks.dispatch).should_receive('call_hook').with_args(        'load_credential',        {},        'systemd',        ('mycredential',),    ).and_return('result').once()    assert module.resolve_credential('{credential systemd mycredential}', config={}) == 'result'def test_resolve_credential_with_valid_credential_and_quoted_parameters_loads_credential():    module.resolve_credential.cache_clear()    flexmock(module.borgmatic.hooks.dispatch).should_receive('call_hook').with_args(        'load_credential',        {},        'systemd',        ('my credential',),    ).and_return('result').once()    assert module.resolve_credential('{credential systemd "my credential"}', config={}) == 'result'def test_resolve_credential_caches_credential_after_first_call():    module.resolve_credential.cache_clear()    flexmock(module.borgmatic.hooks.dispatch).should_receive('call_hook').with_args(        'load_credential',        {},        'systemd',        ('mycredential',),    ).and_return('result').once()    assert module.resolve_credential('{credential systemd mycredential}', config={}) == 'result'    assert module.resolve_credential('{credential systemd mycredential}', config={}) == 'result'
 |