From 077b80d3458ac69c3a70d3fa28f09b5cc465822b Mon Sep 17 00:00:00 2001 From: Evgeniy Alekseev Date: Fri, 26 Mar 2021 04:36:13 +0300 Subject: [PATCH] add sign tests --- src/ahriman/core/sign/gpg.py | 2 +- .../ahriman/core/repository/test_executor.py | 3 +- .../core/repository/test_repository.py | 1 - tests/ahriman/core/sign/conftest.py | 9 +++ tests/ahriman/core/sign/gpg.py | 61 +++++++++++++++++++ tests/ahriman/core/upload/test_rsync.py | 0 tests/ahriman/core/upload/test_s3.py | 0 tests/ahriman/core/upload/test_uploader.py | 0 8 files changed, 72 insertions(+), 4 deletions(-) create mode 100644 tests/ahriman/core/sign/conftest.py create mode 100644 tests/ahriman/core/sign/gpg.py create mode 100644 tests/ahriman/core/upload/test_rsync.py create mode 100644 tests/ahriman/core/upload/test_s3.py create mode 100644 tests/ahriman/core/upload/test_uploader.py diff --git a/src/ahriman/core/sign/gpg.py b/src/ahriman/core/sign/gpg.py index ecb6278d..e26e2a3e 100644 --- a/src/ahriman/core/sign/gpg.py +++ b/src/ahriman/core/sign/gpg.py @@ -49,7 +49,7 @@ class GPG: self.logger = logging.getLogger("build_details") self.config = config self.section = config.get_section_name("sign", architecture) - self.target = [SignSettings.from_option(opt) for opt in config.getlist(self.section, "target")] + self.target = {SignSettings.from_option(opt) for opt in config.getlist(self.section, "target")} self.default_key = config.get(self.section, "key") if self.target else "" @property diff --git a/tests/ahriman/core/repository/test_executor.py b/tests/ahriman/core/repository/test_executor.py index 1f2bd79f..a96f67d3 100644 --- a/tests/ahriman/core/repository/test_executor.py +++ b/tests/ahriman/core/repository/test_executor.py @@ -1,7 +1,6 @@ from pathlib import Path -from unittest import mock - from pytest_mock import MockerFixture +from unittest import mock from ahriman.core.repository.executor import Executor from ahriman.models.package import Package diff --git a/tests/ahriman/core/repository/test_repository.py b/tests/ahriman/core/repository/test_repository.py index 8f9a74d2..e2d56b2f 100644 --- a/tests/ahriman/core/repository/test_repository.py +++ b/tests/ahriman/core/repository/test_repository.py @@ -1,5 +1,4 @@ from pathlib import Path - from pytest_mock import MockerFixture from ahriman.core.repository.repository import Repository diff --git a/tests/ahriman/core/sign/conftest.py b/tests/ahriman/core/sign/conftest.py new file mode 100644 index 00000000..5aa798b7 --- /dev/null +++ b/tests/ahriman/core/sign/conftest.py @@ -0,0 +1,9 @@ +import pytest + +from ahriman.core.configuration import Configuration +from ahriman.core.sign.gpg import GPG + + +@pytest.fixture +def gpg(configuration: Configuration) -> GPG: + return GPG("x86_64", configuration) diff --git a/tests/ahriman/core/sign/gpg.py b/tests/ahriman/core/sign/gpg.py new file mode 100644 index 00000000..bb8def2c --- /dev/null +++ b/tests/ahriman/core/sign/gpg.py @@ -0,0 +1,61 @@ +from pathlib import Path +from pytest_mock import MockerFixture + +from ahriman.core.sign.gpg import GPG +from ahriman.models.sign_settings import SignSettings + + +def test_repository_sign_args(gpg: GPG) -> None: + """ + must generate correct sign args + """ + gpg.target = {SignSettings.SignRepository} + assert gpg.repository_sign_args + + +def test_sign_package(gpg: GPG, mocker: MockerFixture) -> None: + """ + must sign package + """ + result = [Path("a"), Path("a.sig")] + process_mock = mocker.patch("ahriman.core.sign.gpg.process", return_value=result) + + for target in ({SignSettings.SignPackages}, {SignSettings.SignPackages, SignSettings.SignRepository}): + gpg.target = target + assert gpg.sign_package(Path("a"), "a") == result + process_mock.assert_called_once() + + +def test_sign_package_skip(gpg: GPG, mocker: MockerFixture) -> None: + """ + must not sign package if it is not set + """ + process_mock = mocker.patch("ahriman.core.sign.gpg.process") + + for target in ({}, {SignSettings.SignRepository}): + gpg.target = target + process_mock.assert_not_called() + + +def test_sign_repository(gpg: GPG, mocker: MockerFixture) -> None: + """ + must sign repository + """ + result = [Path("a"), Path("a.sig")] + process_mock = mocker.patch("ahriman.core.sign.gpg.process", return_value=result) + + for target in ({SignSettings.SignRepository}, {SignSettings.SignPackages, SignSettings.SignRepository}): + gpg.target = target + assert gpg.sign_repository(Path("a")) == result + process_mock.assert_called_once() + + +def test_sign_repository_skip(gpg: GPG, mocker: MockerFixture) -> None: + """ + must not sign repository if it is not set + """ + process_mock = mocker.patch("ahriman.core.sign.gpg.process") + + for target in ({}, {SignSettings.SignPackages}): + gpg.target = target + process_mock.assert_not_called() diff --git a/tests/ahriman/core/upload/test_rsync.py b/tests/ahriman/core/upload/test_rsync.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/ahriman/core/upload/test_s3.py b/tests/ahriman/core/upload/test_s3.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/ahriman/core/upload/test_uploader.py b/tests/ahriman/core/upload/test_uploader.py new file mode 100644 index 00000000..e69de29b