summaryrefslogtreecommitdiff
path: root/test/test_ext_crypt.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/test_ext_crypt.py')
-rw-r--r--test/test_ext_crypt.py48
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