diff options
Diffstat (limited to 'test/test_ext_crypt.py')
-rw-r--r-- | test/test_ext_crypt.py | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/test/test_ext_crypt.py b/test/test_ext_crypt.py new file mode 100644 index 0000000..cb74afc --- /dev/null +++ b/test/test_ext_crypt.py @@ -0,0 +1,48 @@ +"""Test external encryption commands""" + +import pytest + + +@pytest.mark.parametrize( + 'crypt', + [False, 'installed', 'installed-but-failed'], + ids=['not-installed', 'installed', 'installed-but-failed'] +) +@pytest.mark.parametrize( + 'cmd,var', [ + ['git_crypt', 'GIT_CRYPT_PROGRAM'], + ['transcrypt', 'TRANSCRYPT_PROGRAM'], + ], + ids=['git-crypt', 'transcrypt']) +def test_ext_encryption(runner, yadm, paths, tmpdir, crypt, cmd, var): + """External encryption tests""" + + paths.repo.ensure(dir=True) + bindir = tmpdir.mkdir('bin') + pgm = bindir.join('test-ext-crypt') + + if crypt: + pgm.write('#!/bin/sh\necho ext-crypt ran\n') + pgm.chmod(0o775) + if crypt == 'installed-but-failed': + pgm.write('false\n', mode='a') + + script = f""" + YADM_TEST=1 source {yadm} + YADM_REPO={paths.repo} + {var}="{pgm}" + {cmd} "param1" + """ + + run = runner(command=['bash'], inp=script) + + if crypt: + if crypt == 'installed-but-failed': + assert run.failure + else: + assert run.success + assert run.out.strip() == 'ext-crypt ran' + assert run.err == '' + else: + assert run.failure + assert f"command '{pgm}' cannot be located" in run.err |