50 lines
1.2 KiB
Python
50 lines
1.2 KiB
Python
"""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
|