mirror of
				https://github.com/arcan1s/ahriman.git
				synced 2025-11-04 07:43:42 +00:00 
			
		
		
		
	rename classes in order to make documentation reference work
This commit is contained in:
		@ -2,15 +2,15 @@ import pytest
 | 
			
		||||
 | 
			
		||||
from pytest_mock import MockerFixture
 | 
			
		||||
 | 
			
		||||
from ahriman.application.application.packages import Packages
 | 
			
		||||
from ahriman.application.application.properties import Properties
 | 
			
		||||
from ahriman.application.application.repository import Repository
 | 
			
		||||
from ahriman.application.application.application_packages import ApplicationPackages
 | 
			
		||||
from ahriman.application.application.application_properties import ApplicationProperties
 | 
			
		||||
from ahriman.application.application.application_repository import ApplicationRepository
 | 
			
		||||
from ahriman.core.configuration import Configuration
 | 
			
		||||
from ahriman.core.database.sqlite import SQLite
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@pytest.fixture
 | 
			
		||||
def application_packages(configuration: Configuration, database: SQLite, mocker: MockerFixture) -> Packages:
 | 
			
		||||
def application_packages(configuration: Configuration, database: SQLite, mocker: MockerFixture) -> ApplicationPackages:
 | 
			
		||||
    """
 | 
			
		||||
    fixture for application with package functions
 | 
			
		||||
 | 
			
		||||
@ -20,15 +20,16 @@ def application_packages(configuration: Configuration, database: SQLite, mocker:
 | 
			
		||||
        mocker(MockerFixture): mocker object
 | 
			
		||||
 | 
			
		||||
    Returns:
 | 
			
		||||
        Packages: application test instance
 | 
			
		||||
        ApplicationPackages: application test instance
 | 
			
		||||
    """
 | 
			
		||||
    mocker.patch("ahriman.models.repository_paths.RepositoryPaths.tree_create")
 | 
			
		||||
    mocker.patch("ahriman.core.database.sqlite.SQLite.load", return_value=database)
 | 
			
		||||
    return Packages("x86_64", configuration, no_report=True, unsafe=False)
 | 
			
		||||
    return ApplicationPackages("x86_64", configuration, no_report=True, unsafe=False)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@pytest.fixture
 | 
			
		||||
def application_properties(configuration: Configuration, database: SQLite, mocker: MockerFixture) -> Properties:
 | 
			
		||||
def application_properties(configuration: Configuration, database: SQLite,
 | 
			
		||||
                           mocker: MockerFixture) -> ApplicationProperties:
 | 
			
		||||
    """
 | 
			
		||||
    fixture for application with properties only
 | 
			
		||||
 | 
			
		||||
@ -38,15 +39,16 @@ def application_properties(configuration: Configuration, database: SQLite, mocke
 | 
			
		||||
        mocker(MockerFixture): mocker object
 | 
			
		||||
 | 
			
		||||
    Returns:
 | 
			
		||||
        Properties: application test instance
 | 
			
		||||
        ApplicationProperties: application test instance
 | 
			
		||||
    """
 | 
			
		||||
    mocker.patch("ahriman.models.repository_paths.RepositoryPaths.tree_create")
 | 
			
		||||
    mocker.patch("ahriman.core.database.sqlite.SQLite.load", return_value=database)
 | 
			
		||||
    return Properties("x86_64", configuration, no_report=True, unsafe=False)
 | 
			
		||||
    return ApplicationProperties("x86_64", configuration, no_report=True, unsafe=False)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@pytest.fixture
 | 
			
		||||
def application_repository(configuration: Configuration, database: SQLite, mocker: MockerFixture) -> Repository:
 | 
			
		||||
def application_repository(configuration: Configuration, database: SQLite,
 | 
			
		||||
                           mocker: MockerFixture) -> ApplicationRepository:
 | 
			
		||||
    """
 | 
			
		||||
    fixture for application with repository functions
 | 
			
		||||
 | 
			
		||||
@ -56,8 +58,8 @@ def application_repository(configuration: Configuration, database: SQLite, mocke
 | 
			
		||||
        mocker(MockerFixture): mocker object
 | 
			
		||||
 | 
			
		||||
    Returns:
 | 
			
		||||
        Repository: application test instance
 | 
			
		||||
        ApplicationRepository: application test instance
 | 
			
		||||
    """
 | 
			
		||||
    mocker.patch("ahriman.models.repository_paths.RepositoryPaths.tree_create")
 | 
			
		||||
    mocker.patch("ahriman.core.database.sqlite.SQLite.load", return_value=database)
 | 
			
		||||
    return Repository("x86_64", configuration, no_report=True, unsafe=False)
 | 
			
		||||
    return ApplicationRepository("x86_64", configuration, no_report=True, unsafe=False)
 | 
			
		||||
 | 
			
		||||
@ -4,14 +4,14 @@ from pathlib import Path
 | 
			
		||||
from pytest_mock import MockerFixture
 | 
			
		||||
from unittest.mock import MagicMock
 | 
			
		||||
 | 
			
		||||
from ahriman.application.application.packages import Packages
 | 
			
		||||
from ahriman.application.application.application_packages import ApplicationPackages
 | 
			
		||||
from ahriman.models.package import Package
 | 
			
		||||
from ahriman.models.package_description import PackageDescription
 | 
			
		||||
from ahriman.models.package_source import PackageSource
 | 
			
		||||
from ahriman.models.result import Result
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def test_finalize(application_packages: Packages) -> None:
 | 
			
		||||
def test_finalize(application_packages: ApplicationPackages) -> None:
 | 
			
		||||
    """
 | 
			
		||||
    must raise NotImplemented for missing finalize method
 | 
			
		||||
    """
 | 
			
		||||
@ -19,7 +19,7 @@ def test_finalize(application_packages: Packages) -> None:
 | 
			
		||||
        application_packages._finalize([])
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def test_known_packages(application_packages: Packages) -> None:
 | 
			
		||||
def test_known_packages(application_packages: ApplicationPackages) -> None:
 | 
			
		||||
    """
 | 
			
		||||
    must raise NotImplemented for missing known_packages method
 | 
			
		||||
    """
 | 
			
		||||
@ -27,7 +27,10 @@ def test_known_packages(application_packages: Packages) -> None:
 | 
			
		||||
        application_packages._known_packages()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def test_add_archive(application_packages: Packages, package_ahriman: Package, mocker: MockerFixture) -> None:
 | 
			
		||||
def test_add_archive(
 | 
			
		||||
        application_packages: ApplicationPackages,
 | 
			
		||||
        package_ahriman: Package,
 | 
			
		||||
        mocker: MockerFixture) -> None:
 | 
			
		||||
    """
 | 
			
		||||
    must add package from archive
 | 
			
		||||
    """
 | 
			
		||||
@ -37,13 +40,14 @@ def test_add_archive(application_packages: Packages, package_ahriman: Package, m
 | 
			
		||||
        Path(package_ahriman.base), application_packages.repository.paths.packages / package_ahriman.base)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def test_add_aur(application_packages: Packages, package_ahriman: Package, mocker: MockerFixture) -> None:
 | 
			
		||||
def test_add_aur(application_packages: ApplicationPackages, package_ahriman: Package, mocker: MockerFixture) -> None:
 | 
			
		||||
    """
 | 
			
		||||
    must add package from AUR
 | 
			
		||||
    """
 | 
			
		||||
    mocker.patch("ahriman.models.package.Package.load", return_value=package_ahriman)
 | 
			
		||||
    load_mock = mocker.patch("ahriman.core.build_tools.sources.Sources.load")
 | 
			
		||||
    dependencies_mock = mocker.patch("ahriman.application.application.packages.Packages._process_dependencies")
 | 
			
		||||
    dependencies_mock = mocker.patch(
 | 
			
		||||
        "ahriman.application.application.application_packages.ApplicationPackages._process_dependencies")
 | 
			
		||||
    build_queue_mock = mocker.patch("ahriman.core.database.sqlite.SQLite.build_queue_insert")
 | 
			
		||||
 | 
			
		||||
    application_packages._add_aur(package_ahriman.base, set(), False)
 | 
			
		||||
@ -55,7 +59,10 @@ def test_add_aur(application_packages: Packages, package_ahriman: Package, mocke
 | 
			
		||||
    build_queue_mock.assert_called_once_with(package_ahriman)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def test_add_directory(application_packages: Packages, package_ahriman: Package, mocker: MockerFixture) -> None:
 | 
			
		||||
def test_add_directory(
 | 
			
		||||
        application_packages: ApplicationPackages,
 | 
			
		||||
        package_ahriman: Package,
 | 
			
		||||
        mocker: MockerFixture) -> None:
 | 
			
		||||
    """
 | 
			
		||||
    must add packages from directory
 | 
			
		||||
    """
 | 
			
		||||
@ -69,14 +76,15 @@ def test_add_directory(application_packages: Packages, package_ahriman: Package,
 | 
			
		||||
    copy_mock.assert_called_once_with(filename, application_packages.repository.paths.packages / filename.name)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def test_add_local(application_packages: Packages, package_ahriman: Package, mocker: MockerFixture) -> None:
 | 
			
		||||
def test_add_local(application_packages: ApplicationPackages, package_ahriman: Package, mocker: MockerFixture) -> None:
 | 
			
		||||
    """
 | 
			
		||||
    must add package from local sources
 | 
			
		||||
    """
 | 
			
		||||
    mocker.patch("ahriman.models.package.Package.load", return_value=package_ahriman)
 | 
			
		||||
    init_mock = mocker.patch("ahriman.core.build_tools.sources.Sources.init")
 | 
			
		||||
    copytree_mock = mocker.patch("shutil.copytree")
 | 
			
		||||
    dependencies_mock = mocker.patch("ahriman.application.application.packages.Packages._process_dependencies")
 | 
			
		||||
    dependencies_mock = mocker.patch(
 | 
			
		||||
        "ahriman.application.application.application_packages.ApplicationPackages._process_dependencies")
 | 
			
		||||
    build_queue_mock = mocker.patch("ahriman.core.database.sqlite.SQLite.build_queue_insert")
 | 
			
		||||
 | 
			
		||||
    application_packages._add_local(package_ahriman.base, set(), False)
 | 
			
		||||
@ -87,7 +95,7 @@ def test_add_local(application_packages: Packages, package_ahriman: Package, moc
 | 
			
		||||
    build_queue_mock.assert_called_once_with(package_ahriman)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def test_add_remote(application_packages: Packages, package_description_ahriman: PackageDescription,
 | 
			
		||||
def test_add_remote(application_packages: ApplicationPackages, package_description_ahriman: PackageDescription,
 | 
			
		||||
                    mocker: MockerFixture) -> None:
 | 
			
		||||
    """
 | 
			
		||||
    must add package from remote source
 | 
			
		||||
@ -104,109 +112,120 @@ def test_add_remote(application_packages: Packages, package_description_ahriman:
 | 
			
		||||
    response_mock.raise_for_status.assert_called_once_with()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def test_process_dependencies(application_packages: Packages, mocker: MockerFixture) -> None:
 | 
			
		||||
def test_process_dependencies(application_packages: ApplicationPackages, mocker: MockerFixture) -> None:
 | 
			
		||||
    """
 | 
			
		||||
    must process dependencies addition
 | 
			
		||||
    """
 | 
			
		||||
    missing = {"python"}
 | 
			
		||||
    path = Path("local")
 | 
			
		||||
    dependencies_mock = mocker.patch("ahriman.models.package.Package.dependencies", return_value=missing)
 | 
			
		||||
    add_mock = mocker.patch("ahriman.application.application.packages.Packages.add")
 | 
			
		||||
    add_mock = mocker.patch("ahriman.application.application.application_packages.ApplicationPackages.add")
 | 
			
		||||
 | 
			
		||||
    application_packages._process_dependencies(path, set(), False)
 | 
			
		||||
    dependencies_mock.assert_called_once_with(path)
 | 
			
		||||
    add_mock.assert_called_once_with(missing, PackageSource.AUR, False)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def test_process_dependencies_missing(application_packages: Packages, mocker: MockerFixture) -> None:
 | 
			
		||||
def test_process_dependencies_missing(application_packages: ApplicationPackages, mocker: MockerFixture) -> None:
 | 
			
		||||
    """
 | 
			
		||||
    must process dependencies addition only for missing packages
 | 
			
		||||
    """
 | 
			
		||||
    path = Path("local")
 | 
			
		||||
    dependencies_mock = mocker.patch("ahriman.models.package.Package.dependencies",
 | 
			
		||||
                                     return_value={"python", "python-aiohttp"})
 | 
			
		||||
    add_mock = mocker.patch("ahriman.application.application.packages.Packages.add")
 | 
			
		||||
    add_mock = mocker.patch("ahriman.application.application.application_packages.ApplicationPackages.add")
 | 
			
		||||
 | 
			
		||||
    application_packages._process_dependencies(path, {"python"}, False)
 | 
			
		||||
    dependencies_mock.assert_called_once_with(path)
 | 
			
		||||
    add_mock.assert_called_once_with({"python-aiohttp"}, PackageSource.AUR, False)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def test_process_dependencies_skip(application_packages: Packages, mocker: MockerFixture) -> None:
 | 
			
		||||
def test_process_dependencies_skip(application_packages: ApplicationPackages, mocker: MockerFixture) -> None:
 | 
			
		||||
    """
 | 
			
		||||
    must skip dependencies processing
 | 
			
		||||
    """
 | 
			
		||||
    dependencies_mock = mocker.patch("ahriman.models.package.Package.dependencies")
 | 
			
		||||
    add_mock = mocker.patch("ahriman.application.application.packages.Packages.add")
 | 
			
		||||
    add_mock = mocker.patch("ahriman.application.application.application_packages.ApplicationPackages.add")
 | 
			
		||||
 | 
			
		||||
    application_packages._process_dependencies(Path("local"), set(), True)
 | 
			
		||||
    dependencies_mock.assert_not_called()
 | 
			
		||||
    add_mock.assert_not_called()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def test_add_add_archive(application_packages: Packages, package_ahriman: Package, mocker: MockerFixture) -> None:
 | 
			
		||||
def test_add_add_archive(application_packages: ApplicationPackages, package_ahriman: Package,
 | 
			
		||||
                         mocker: MockerFixture) -> None:
 | 
			
		||||
    """
 | 
			
		||||
    must add package from archive via add function
 | 
			
		||||
    """
 | 
			
		||||
    mocker.patch("ahriman.application.application.packages.Packages._known_packages", return_value=set())
 | 
			
		||||
    add_mock = mocker.patch("ahriman.application.application.packages.Packages._add_archive")
 | 
			
		||||
    mocker.patch("ahriman.application.application.application_packages.ApplicationPackages._known_packages",
 | 
			
		||||
                 return_value=set())
 | 
			
		||||
    add_mock = mocker.patch("ahriman.application.application.application_packages.ApplicationPackages._add_archive")
 | 
			
		||||
 | 
			
		||||
    application_packages.add([package_ahriman.base], PackageSource.Archive, False)
 | 
			
		||||
    add_mock.assert_called_once_with(package_ahriman.base, set(), False)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def test_add_add_aur(application_packages: Packages, package_ahriman: Package, mocker: MockerFixture) -> None:
 | 
			
		||||
def test_add_add_aur(
 | 
			
		||||
        application_packages: ApplicationPackages,
 | 
			
		||||
        package_ahriman: Package,
 | 
			
		||||
        mocker: MockerFixture) -> None:
 | 
			
		||||
    """
 | 
			
		||||
    must add package from AUR via add function
 | 
			
		||||
    """
 | 
			
		||||
    mocker.patch("ahriman.application.application.packages.Packages._known_packages", return_value=set())
 | 
			
		||||
    add_mock = mocker.patch("ahriman.application.application.packages.Packages._add_aur")
 | 
			
		||||
    mocker.patch("ahriman.application.application.application_packages.ApplicationPackages._known_packages",
 | 
			
		||||
                 return_value=set())
 | 
			
		||||
    add_mock = mocker.patch("ahriman.application.application.application_packages.ApplicationPackages._add_aur")
 | 
			
		||||
 | 
			
		||||
    application_packages.add([package_ahriman.base], PackageSource.AUR, True)
 | 
			
		||||
    add_mock.assert_called_once_with(package_ahriman.base, set(), True)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def test_add_add_directory(application_packages: Packages, package_ahriman: Package, mocker: MockerFixture) -> None:
 | 
			
		||||
def test_add_add_directory(application_packages: ApplicationPackages, package_ahriman: Package,
 | 
			
		||||
                           mocker: MockerFixture) -> None:
 | 
			
		||||
    """
 | 
			
		||||
    must add packages from directory via add function
 | 
			
		||||
    """
 | 
			
		||||
    mocker.patch("ahriman.application.application.packages.Packages._known_packages", return_value=set())
 | 
			
		||||
    add_mock = mocker.patch("ahriman.application.application.packages.Packages._add_directory")
 | 
			
		||||
    mocker.patch("ahriman.application.application.application_packages.ApplicationPackages._known_packages",
 | 
			
		||||
                 return_value=set())
 | 
			
		||||
    add_mock = mocker.patch("ahriman.application.application.application_packages.ApplicationPackages._add_directory")
 | 
			
		||||
 | 
			
		||||
    application_packages.add([package_ahriman.base], PackageSource.Directory, False)
 | 
			
		||||
    add_mock.assert_called_once_with(package_ahriman.base, set(), False)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def test_add_add_local(application_packages: Packages, package_ahriman: Package, mocker: MockerFixture) -> None:
 | 
			
		||||
def test_add_add_local(application_packages: ApplicationPackages, package_ahriman: Package,
 | 
			
		||||
                       mocker: MockerFixture) -> None:
 | 
			
		||||
    """
 | 
			
		||||
    must add package from local sources via add function
 | 
			
		||||
    """
 | 
			
		||||
    mocker.patch("ahriman.application.application.packages.Packages._known_packages", return_value=set())
 | 
			
		||||
    add_mock = mocker.patch("ahriman.application.application.packages.Packages._add_local")
 | 
			
		||||
    mocker.patch("ahriman.application.application.application_packages.ApplicationPackages._known_packages",
 | 
			
		||||
                 return_value=set())
 | 
			
		||||
    add_mock = mocker.patch("ahriman.application.application.application_packages.ApplicationPackages._add_local")
 | 
			
		||||
 | 
			
		||||
    application_packages.add([package_ahriman.base], PackageSource.Local, False)
 | 
			
		||||
    add_mock.assert_called_once_with(package_ahriman.base, set(), False)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def test_add_add_remote(application_packages: Packages, package_description_ahriman: PackageDescription,
 | 
			
		||||
def test_add_add_remote(application_packages: ApplicationPackages, package_description_ahriman: PackageDescription,
 | 
			
		||||
                        mocker: MockerFixture) -> None:
 | 
			
		||||
    """
 | 
			
		||||
    must add package from remote source via add function
 | 
			
		||||
    """
 | 
			
		||||
    mocker.patch("ahriman.application.application.packages.Packages._known_packages", return_value=set())
 | 
			
		||||
    add_mock = mocker.patch("ahriman.application.application.packages.Packages._add_remote")
 | 
			
		||||
    mocker.patch("ahriman.application.application.application_packages.ApplicationPackages._known_packages",
 | 
			
		||||
                 return_value=set())
 | 
			
		||||
    add_mock = mocker.patch("ahriman.application.application.application_packages.ApplicationPackages._add_remote")
 | 
			
		||||
    url = f"https://host/{package_description_ahriman.filename}"
 | 
			
		||||
 | 
			
		||||
    application_packages.add([url], PackageSource.Remote, False)
 | 
			
		||||
    add_mock.assert_called_once_with(url, set(), False)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def test_remove(application_packages: Packages, mocker: MockerFixture) -> None:
 | 
			
		||||
def test_remove(application_packages: ApplicationPackages, mocker: MockerFixture) -> None:
 | 
			
		||||
    """
 | 
			
		||||
    must remove package
 | 
			
		||||
    """
 | 
			
		||||
    executor_mock = mocker.patch("ahriman.core.repository.executor.Executor.process_remove")
 | 
			
		||||
    finalize_mock = mocker.patch("ahriman.application.application.packages.Packages._finalize")
 | 
			
		||||
    finalize_mock = mocker.patch("ahriman.application.application.application_packages.ApplicationPackages._finalize")
 | 
			
		||||
 | 
			
		||||
    application_packages.remove([])
 | 
			
		||||
    executor_mock.assert_called_once_with([])
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,7 @@
 | 
			
		||||
from ahriman.application.application.properties import Properties
 | 
			
		||||
from ahriman.application.application.application_properties import ApplicationProperties
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def test_create_tree(application_properties: Properties) -> None:
 | 
			
		||||
def test_create_tree(application_properties: ApplicationProperties) -> None:
 | 
			
		||||
    """
 | 
			
		||||
    must have repository attribute
 | 
			
		||||
    """
 | 
			
		||||
 | 
			
		||||
@ -3,13 +3,13 @@ import pytest
 | 
			
		||||
from pytest_mock import MockerFixture
 | 
			
		||||
from unittest import mock
 | 
			
		||||
 | 
			
		||||
from ahriman.application.application.repository import Repository
 | 
			
		||||
from ahriman.application.application.application_repository import ApplicationRepository
 | 
			
		||||
from ahriman.core.tree import Leaf, Tree
 | 
			
		||||
from ahriman.models.package import Package
 | 
			
		||||
from ahriman.models.result import Result
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def test_finalize(application_repository: Repository) -> None:
 | 
			
		||||
def test_finalize(application_repository: ApplicationRepository) -> None:
 | 
			
		||||
    """
 | 
			
		||||
    must raise NotImplemented for missing finalize method
 | 
			
		||||
    """
 | 
			
		||||
@ -17,7 +17,7 @@ def test_finalize(application_repository: Repository) -> None:
 | 
			
		||||
        application_repository._finalize([])
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def test_clean_cache(application_repository: Repository, mocker: MockerFixture) -> None:
 | 
			
		||||
def test_clean_cache(application_repository: ApplicationRepository, mocker: MockerFixture) -> None:
 | 
			
		||||
    """
 | 
			
		||||
    must clean cache directory
 | 
			
		||||
    """
 | 
			
		||||
@ -26,7 +26,7 @@ def test_clean_cache(application_repository: Repository, mocker: MockerFixture)
 | 
			
		||||
    clear_mock.assert_called_once_with()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def test_clean_chroot(application_repository: Repository, mocker: MockerFixture) -> None:
 | 
			
		||||
def test_clean_chroot(application_repository: ApplicationRepository, mocker: MockerFixture) -> None:
 | 
			
		||||
    """
 | 
			
		||||
    must clean chroot directory
 | 
			
		||||
    """
 | 
			
		||||
@ -35,7 +35,7 @@ def test_clean_chroot(application_repository: Repository, mocker: MockerFixture)
 | 
			
		||||
    clear_mock.assert_called_once_with()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def test_clean_manual(application_repository: Repository, mocker: MockerFixture) -> None:
 | 
			
		||||
def test_clean_manual(application_repository: ApplicationRepository, mocker: MockerFixture) -> None:
 | 
			
		||||
    """
 | 
			
		||||
    must clean manual directory
 | 
			
		||||
    """
 | 
			
		||||
@ -44,7 +44,7 @@ def test_clean_manual(application_repository: Repository, mocker: MockerFixture)
 | 
			
		||||
    clear_mock.assert_called_once_with()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def test_clean_packages(application_repository: Repository, mocker: MockerFixture) -> None:
 | 
			
		||||
def test_clean_packages(application_repository: ApplicationRepository, mocker: MockerFixture) -> None:
 | 
			
		||||
    """
 | 
			
		||||
    must clean packages directory
 | 
			
		||||
    """
 | 
			
		||||
@ -53,7 +53,7 @@ def test_clean_packages(application_repository: Repository, mocker: MockerFixtur
 | 
			
		||||
    clear_mock.assert_called_once_with()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def test_report(application_repository: Repository, mocker: MockerFixture) -> None:
 | 
			
		||||
def test_report(application_repository: ApplicationRepository, mocker: MockerFixture) -> None:
 | 
			
		||||
    """
 | 
			
		||||
    must generate report
 | 
			
		||||
    """
 | 
			
		||||
@ -62,7 +62,7 @@ def test_report(application_repository: Repository, mocker: MockerFixture) -> No
 | 
			
		||||
    executor_mock.assert_called_once_with(["a"], [])
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def test_sign(application_repository: Repository, package_ahriman: Package, package_python_schedule: Package,
 | 
			
		||||
def test_sign(application_repository: ApplicationRepository, package_ahriman: Package, package_python_schedule: Package,
 | 
			
		||||
              mocker: MockerFixture) -> None:
 | 
			
		||||
    """
 | 
			
		||||
    must sign world
 | 
			
		||||
@ -70,9 +70,10 @@ def test_sign(application_repository: Repository, package_ahriman: Package, pack
 | 
			
		||||
    mocker.patch("ahriman.core.repository.repository.Repository.packages",
 | 
			
		||||
                 return_value=[package_ahriman, package_python_schedule])
 | 
			
		||||
    copy_mock = mocker.patch("shutil.copy")
 | 
			
		||||
    update_mock = mocker.patch("ahriman.application.application.repository.Repository.update")
 | 
			
		||||
    update_mock = mocker.patch("ahriman.application.application.application_repository.ApplicationRepository.update")
 | 
			
		||||
    sign_repository_mock = mocker.patch("ahriman.core.sign.gpg.GPG.process_sign_repository")
 | 
			
		||||
    finalize_mock = mocker.patch("ahriman.application.application.repository.Repository._finalize")
 | 
			
		||||
    finalize_mock = mocker.patch(
 | 
			
		||||
        "ahriman.application.application.application_repository.ApplicationRepository._finalize")
 | 
			
		||||
 | 
			
		||||
    application_repository.sign([])
 | 
			
		||||
    copy_mock.assert_has_calls([
 | 
			
		||||
@ -84,29 +85,31 @@ def test_sign(application_repository: Repository, package_ahriman: Package, pack
 | 
			
		||||
    finalize_mock.assert_called_once_with(Result())
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def test_sign_skip(application_repository: Repository, package_ahriman: Package, mocker: MockerFixture) -> None:
 | 
			
		||||
def test_sign_skip(application_repository: ApplicationRepository, package_ahriman: Package,
 | 
			
		||||
                   mocker: MockerFixture) -> None:
 | 
			
		||||
    """
 | 
			
		||||
    must skip sign packages with empty filename
 | 
			
		||||
    """
 | 
			
		||||
    package_ahriman.packages[package_ahriman.base].filename = None
 | 
			
		||||
    mocker.patch("ahriman.core.repository.repository.Repository.packages", return_value=[package_ahriman])
 | 
			
		||||
    mocker.patch("ahriman.application.application.repository.Repository.update")
 | 
			
		||||
    mocker.patch("ahriman.application.application.repository.Repository._finalize")
 | 
			
		||||
    mocker.patch("ahriman.application.application.application_repository.ApplicationRepository.update")
 | 
			
		||||
    mocker.patch("ahriman.application.application.application_repository.ApplicationRepository._finalize")
 | 
			
		||||
 | 
			
		||||
    application_repository.sign([])
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def test_sign_specific(application_repository: Repository, package_ahriman: Package, package_python_schedule: Package,
 | 
			
		||||
                       mocker: MockerFixture) -> None:
 | 
			
		||||
def test_sign_specific(application_repository: ApplicationRepository, package_ahriman: Package,
 | 
			
		||||
                       package_python_schedule: Package, mocker: MockerFixture) -> None:
 | 
			
		||||
    """
 | 
			
		||||
    must sign only specified packages
 | 
			
		||||
    """
 | 
			
		||||
    mocker.patch("ahriman.core.repository.repository.Repository.packages",
 | 
			
		||||
                 return_value=[package_ahriman, package_python_schedule])
 | 
			
		||||
    copy_mock = mocker.patch("shutil.copy")
 | 
			
		||||
    update_mock = mocker.patch("ahriman.application.application.repository.Repository.update")
 | 
			
		||||
    update_mock = mocker.patch("ahriman.application.application.application_repository.ApplicationRepository.update")
 | 
			
		||||
    sign_repository_mock = mocker.patch("ahriman.core.sign.gpg.GPG.process_sign_repository")
 | 
			
		||||
    finalize_mock = mocker.patch("ahriman.application.application.repository.Repository._finalize")
 | 
			
		||||
    finalize_mock = mocker.patch(
 | 
			
		||||
        "ahriman.application.application.application_repository.ApplicationRepository._finalize")
 | 
			
		||||
 | 
			
		||||
    filename = package_ahriman.packages[package_ahriman.base].filepath
 | 
			
		||||
    application_repository.sign([package_ahriman.base])
 | 
			
		||||
@ -118,7 +121,7 @@ def test_sign_specific(application_repository: Repository, package_ahriman: Pack
 | 
			
		||||
    finalize_mock.assert_called_once_with(Result())
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def test_sync(application_repository: Repository, mocker: MockerFixture) -> None:
 | 
			
		||||
def test_sync(application_repository: ApplicationRepository, mocker: MockerFixture) -> None:
 | 
			
		||||
    """
 | 
			
		||||
    must sync to remote
 | 
			
		||||
    """
 | 
			
		||||
@ -127,7 +130,8 @@ def test_sync(application_repository: Repository, mocker: MockerFixture) -> None
 | 
			
		||||
    executor_mock.assert_called_once_with(["a"], [])
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def test_unknown_no_aur(application_repository: Repository, package_ahriman: Package, mocker: MockerFixture) -> None:
 | 
			
		||||
def test_unknown_no_aur(application_repository: ApplicationRepository, package_ahriman: Package,
 | 
			
		||||
                        mocker: MockerFixture) -> None:
 | 
			
		||||
    """
 | 
			
		||||
    must return empty list in case if there is locally stored PKGBUILD
 | 
			
		||||
    """
 | 
			
		||||
@ -140,7 +144,7 @@ def test_unknown_no_aur(application_repository: Repository, package_ahriman: Pac
 | 
			
		||||
    assert not application_repository.unknown()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def test_unknown_no_aur_no_local(application_repository: Repository, package_ahriman: Package,
 | 
			
		||||
def test_unknown_no_aur_no_local(application_repository: ApplicationRepository, package_ahriman: Package,
 | 
			
		||||
                                 mocker: MockerFixture) -> None:
 | 
			
		||||
    """
 | 
			
		||||
    must return list of packages missing in aur and in local storage
 | 
			
		||||
@ -153,7 +157,8 @@ def test_unknown_no_aur_no_local(application_repository: Repository, package_ahr
 | 
			
		||||
    assert packages == list(package_ahriman.packages.keys())
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def test_unknown_no_local(application_repository: Repository, package_ahriman: Package, mocker: MockerFixture) -> None:
 | 
			
		||||
def test_unknown_no_local(application_repository: ApplicationRepository, package_ahriman: Package,
 | 
			
		||||
                          mocker: MockerFixture) -> None:
 | 
			
		||||
    """
 | 
			
		||||
    must return empty list in case if there is package in AUR
 | 
			
		||||
    """
 | 
			
		||||
@ -164,7 +169,7 @@ def test_unknown_no_local(application_repository: Repository, package_ahriman: P
 | 
			
		||||
    assert not application_repository.unknown()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def test_update(application_repository: Repository, package_ahriman: Package, result: Result,
 | 
			
		||||
def test_update(application_repository: ApplicationRepository, package_ahriman: Package, result: Result,
 | 
			
		||||
                mocker: MockerFixture) -> None:
 | 
			
		||||
    """
 | 
			
		||||
    must process package updates
 | 
			
		||||
@ -177,7 +182,8 @@ def test_update(application_repository: Repository, package_ahriman: Package, re
 | 
			
		||||
    mocker.patch("ahriman.models.package.Package.load", return_value=package_ahriman)
 | 
			
		||||
    build_mock = mocker.patch("ahriman.core.repository.executor.Executor.process_build", return_value=result)
 | 
			
		||||
    update_mock = mocker.patch("ahriman.core.repository.executor.Executor.process_update", return_value=result)
 | 
			
		||||
    finalize_mock = mocker.patch("ahriman.application.application.repository.Repository._finalize")
 | 
			
		||||
    finalize_mock = mocker.patch(
 | 
			
		||||
        "ahriman.application.application.application_repository.ApplicationRepository._finalize")
 | 
			
		||||
 | 
			
		||||
    application_repository.update([package_ahriman])
 | 
			
		||||
    build_mock.assert_called_once_with([package_ahriman])
 | 
			
		||||
@ -185,7 +191,8 @@ def test_update(application_repository: Repository, package_ahriman: Package, re
 | 
			
		||||
    finalize_mock.assert_has_calls([mock.call(result), mock.call(result)])
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def test_update_empty(application_repository: Repository, package_ahriman: Package, mocker: MockerFixture) -> None:
 | 
			
		||||
def test_update_empty(application_repository: ApplicationRepository, package_ahriman: Package,
 | 
			
		||||
                      mocker: MockerFixture) -> None:
 | 
			
		||||
    """
 | 
			
		||||
    must skip updating repository if no packages supplied
 | 
			
		||||
    """
 | 
			
		||||
@ -202,7 +209,8 @@ def test_update_empty(application_repository: Repository, package_ahriman: Packa
 | 
			
		||||
    update_mock.assert_not_called()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def test_updates_all(application_repository: Repository, package_ahriman: Package, mocker: MockerFixture) -> None:
 | 
			
		||||
def test_updates_all(application_repository: ApplicationRepository, package_ahriman: Package,
 | 
			
		||||
                     mocker: MockerFixture) -> None:
 | 
			
		||||
    """
 | 
			
		||||
    must get updates for all
 | 
			
		||||
    """
 | 
			
		||||
@ -218,7 +226,7 @@ def test_updates_all(application_repository: Repository, package_ahriman: Packag
 | 
			
		||||
    updates_manual_mock.assert_called_once_with()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def test_updates_disabled(application_repository: Repository, mocker: MockerFixture) -> None:
 | 
			
		||||
def test_updates_disabled(application_repository: ApplicationRepository, mocker: MockerFixture) -> None:
 | 
			
		||||
    """
 | 
			
		||||
    must get updates without anything
 | 
			
		||||
    """
 | 
			
		||||
@ -233,7 +241,7 @@ def test_updates_disabled(application_repository: Repository, mocker: MockerFixt
 | 
			
		||||
    updates_manual_mock.assert_not_called()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def test_updates_no_aur(application_repository: Repository, mocker: MockerFixture) -> None:
 | 
			
		||||
def test_updates_no_aur(application_repository: ApplicationRepository, mocker: MockerFixture) -> None:
 | 
			
		||||
    """
 | 
			
		||||
    must get updates without aur
 | 
			
		||||
    """
 | 
			
		||||
@ -248,7 +256,7 @@ def test_updates_no_aur(application_repository: Repository, mocker: MockerFixtur
 | 
			
		||||
    updates_manual_mock.assert_called_once_with()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def test_updates_no_local(application_repository: Repository, mocker: MockerFixture) -> None:
 | 
			
		||||
def test_updates_no_local(application_repository: ApplicationRepository, mocker: MockerFixture) -> None:
 | 
			
		||||
    """
 | 
			
		||||
    must get updates without local packages
 | 
			
		||||
    """
 | 
			
		||||
@ -263,7 +271,7 @@ def test_updates_no_local(application_repository: Repository, mocker: MockerFixt
 | 
			
		||||
    updates_manual_mock.assert_called_once_with()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def test_updates_no_manual(application_repository: Repository, mocker: MockerFixture) -> None:
 | 
			
		||||
def test_updates_no_manual(application_repository: ApplicationRepository, mocker: MockerFixture) -> None:
 | 
			
		||||
    """
 | 
			
		||||
    must get updates without manual
 | 
			
		||||
    """
 | 
			
		||||
@ -278,7 +286,7 @@ def test_updates_no_manual(application_repository: Repository, mocker: MockerFix
 | 
			
		||||
    updates_manual_mock.assert_not_called()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def test_updates_no_vcs(application_repository: Repository, mocker: MockerFixture) -> None:
 | 
			
		||||
def test_updates_no_vcs(application_repository: ApplicationRepository, mocker: MockerFixture) -> None:
 | 
			
		||||
    """
 | 
			
		||||
    must get updates without VCS
 | 
			
		||||
    """
 | 
			
		||||
@ -293,7 +301,7 @@ def test_updates_no_vcs(application_repository: Repository, mocker: MockerFixtur
 | 
			
		||||
    updates_manual_mock.assert_called_once_with()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def test_updates_with_filter(application_repository: Repository, mocker: MockerFixture) -> None:
 | 
			
		||||
def test_updates_with_filter(application_repository: ApplicationRepository, mocker: MockerFixture) -> None:
 | 
			
		||||
    """
 | 
			
		||||
    must get updates with filter
 | 
			
		||||
    """
 | 
			
		||||
 | 
			
		||||
@ -4,12 +4,12 @@ import pytest
 | 
			
		||||
from pathlib import Path
 | 
			
		||||
from pytest_mock import MockerFixture
 | 
			
		||||
 | 
			
		||||
from ahriman.application.handlers import User
 | 
			
		||||
from ahriman.application.handlers import Users
 | 
			
		||||
from ahriman.core.configuration import Configuration
 | 
			
		||||
from ahriman.core.database.sqlite import SQLite
 | 
			
		||||
from ahriman.core.exceptions import InitializeException
 | 
			
		||||
from ahriman.models.action import Action
 | 
			
		||||
from ahriman.models.user import User as MUser
 | 
			
		||||
from ahriman.models.user import User
 | 
			
		||||
from ahriman.models.user_access import UserAccess
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -38,16 +38,16 @@ def test_run(args: argparse.Namespace, configuration: Configuration, database: S
 | 
			
		||||
    must run command
 | 
			
		||||
    """
 | 
			
		||||
    args = _default_args(args)
 | 
			
		||||
    user = MUser(args.username, args.password, args.role)
 | 
			
		||||
    user = User(args.username, args.password, args.role)
 | 
			
		||||
    mocker.patch("ahriman.core.database.sqlite.SQLite.load", return_value=database)
 | 
			
		||||
    mocker.patch("ahriman.models.user.User.hash_password", return_value=user)
 | 
			
		||||
    get_auth_configuration_mock = mocker.patch("ahriman.application.handlers.User.configuration_get")
 | 
			
		||||
    create_configuration_mock = mocker.patch("ahriman.application.handlers.User.configuration_create")
 | 
			
		||||
    create_user_mock = mocker.patch("ahriman.application.handlers.User.user_create", return_value=user)
 | 
			
		||||
    get_salt_mock = mocker.patch("ahriman.application.handlers.User.get_salt", return_value="salt")
 | 
			
		||||
    get_auth_configuration_mock = mocker.patch("ahriman.application.handlers.Users.configuration_get")
 | 
			
		||||
    create_configuration_mock = mocker.patch("ahriman.application.handlers.Users.configuration_create")
 | 
			
		||||
    create_user_mock = mocker.patch("ahriman.application.handlers.Users.user_create", return_value=user)
 | 
			
		||||
    get_salt_mock = mocker.patch("ahriman.application.handlers.Users.get_salt", return_value="salt")
 | 
			
		||||
    update_mock = mocker.patch("ahriman.core.database.sqlite.SQLite.user_update")
 | 
			
		||||
 | 
			
		||||
    User.run(args, "x86_64", configuration, True, False)
 | 
			
		||||
    Users.run(args, "x86_64", configuration, True, False)
 | 
			
		||||
    get_auth_configuration_mock.assert_called_once_with(configuration.include)
 | 
			
		||||
    create_configuration_mock.assert_called_once_with(pytest.helpers.anyvar(int), pytest.helpers.anyvar(int),
 | 
			
		||||
                                                      pytest.helpers.anyvar(int), args.as_service, args.secure)
 | 
			
		||||
@ -67,7 +67,7 @@ def test_run_list(args: argparse.Namespace, configuration: Configuration, databa
 | 
			
		||||
    check_mock = mocker.patch("ahriman.application.handlers.handler.Handler.check_if_empty")
 | 
			
		||||
    list_mock = mocker.patch("ahriman.core.database.sqlite.SQLite.user_list", return_value=[user])
 | 
			
		||||
 | 
			
		||||
    User.run(args, "x86_64", configuration, True, False)
 | 
			
		||||
    Users.run(args, "x86_64", configuration, True, False)
 | 
			
		||||
    list_mock.assert_called_once_with("user", args.role)
 | 
			
		||||
    check_mock.assert_called_once_with(False, False)
 | 
			
		||||
 | 
			
		||||
@ -84,7 +84,7 @@ def test_run_empty_exception(args: argparse.Namespace, configuration: Configurat
 | 
			
		||||
    mocker.patch("ahriman.core.database.sqlite.SQLite.user_list", return_value=[])
 | 
			
		||||
    check_mock = mocker.patch("ahriman.application.handlers.handler.Handler.check_if_empty")
 | 
			
		||||
 | 
			
		||||
    User.run(args, "x86_64", configuration, True, False)
 | 
			
		||||
    Users.run(args, "x86_64", configuration, True, False)
 | 
			
		||||
    check_mock.assert_called_once_with(True, True)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -98,36 +98,36 @@ def test_run_remove(args: argparse.Namespace, configuration: Configuration, data
 | 
			
		||||
    mocker.patch("ahriman.core.database.sqlite.SQLite.load", return_value=database)
 | 
			
		||||
    remove_mock = mocker.patch("ahriman.core.database.sqlite.SQLite.user_remove")
 | 
			
		||||
 | 
			
		||||
    User.run(args, "x86_64", configuration, True, False)
 | 
			
		||||
    Users.run(args, "x86_64", configuration, True, False)
 | 
			
		||||
    remove_mock.assert_called_once_with(args.username)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def test_configuration_create(configuration: Configuration, user: MUser, mocker: MockerFixture) -> None:
 | 
			
		||||
def test_configuration_create(configuration: Configuration, user: User, mocker: MockerFixture) -> None:
 | 
			
		||||
    """
 | 
			
		||||
    must correctly create configuration file
 | 
			
		||||
    """
 | 
			
		||||
    mocker.patch("pathlib.Path.open")
 | 
			
		||||
    set_mock = mocker.patch("ahriman.core.configuration.Configuration.set_option")
 | 
			
		||||
    write_mock = mocker.patch("ahriman.application.handlers.User.configuration_write")
 | 
			
		||||
    write_mock = mocker.patch("ahriman.application.handlers.Users.configuration_write")
 | 
			
		||||
 | 
			
		||||
    User.configuration_create(configuration, user, "salt", False, False)
 | 
			
		||||
    Users.configuration_create(configuration, user, "salt", False, False)
 | 
			
		||||
    set_mock.assert_called_once_with("auth", "salt", pytest.helpers.anyvar(int))
 | 
			
		||||
    write_mock.assert_called_once_with(configuration, False)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def test_configuration_create_with_plain_password(
 | 
			
		||||
        configuration: Configuration,
 | 
			
		||||
        user: MUser,
 | 
			
		||||
        user: User,
 | 
			
		||||
        mocker: MockerFixture) -> None:
 | 
			
		||||
    """
 | 
			
		||||
    must set plain text password and user for the service
 | 
			
		||||
    """
 | 
			
		||||
    mocker.patch("pathlib.Path.open")
 | 
			
		||||
 | 
			
		||||
    User.configuration_create(configuration, user, "salt", True, False)
 | 
			
		||||
    Users.configuration_create(configuration, user, "salt", True, False)
 | 
			
		||||
 | 
			
		||||
    generated = MUser.from_option(user.username, user.password).hash_password("salt")
 | 
			
		||||
    service = MUser.from_option(configuration.get("web", "username"), configuration.get("web", "password"))
 | 
			
		||||
    generated = User.from_option(user.username, user.password).hash_password("salt")
 | 
			
		||||
    service = User.from_option(configuration.get("web", "username"), configuration.get("web", "password"))
 | 
			
		||||
    assert generated.username == service.username
 | 
			
		||||
    assert generated.check_credentials(service.password, configuration.get("auth", "salt"))
 | 
			
		||||
 | 
			
		||||
@ -140,7 +140,7 @@ def test_configuration_get(mocker: MockerFixture) -> None:
 | 
			
		||||
    mocker.patch("pathlib.Path.is_file", return_value=True)
 | 
			
		||||
    read_mock = mocker.patch("ahriman.core.configuration.Configuration.read")
 | 
			
		||||
 | 
			
		||||
    assert User.configuration_get(Path("path"))
 | 
			
		||||
    assert Users.configuration_get(Path("path"))
 | 
			
		||||
    read_mock.assert_called_once_with(Path("path") / "auth.ini")
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -152,7 +152,7 @@ def test_configuration_write(configuration: Configuration, mocker: MockerFixture
 | 
			
		||||
    write_mock = mocker.patch("ahriman.core.configuration.Configuration.write")
 | 
			
		||||
    chmod_mock = mocker.patch("pathlib.Path.chmod")
 | 
			
		||||
 | 
			
		||||
    User.configuration_write(configuration, secure=True)
 | 
			
		||||
    Users.configuration_write(configuration, secure=True)
 | 
			
		||||
    write_mock.assert_called_once_with(pytest.helpers.anyvar(int))
 | 
			
		||||
    chmod_mock.assert_called_once_with(0o600)
 | 
			
		||||
 | 
			
		||||
@ -165,7 +165,7 @@ def test_configuration_write_insecure(configuration: Configuration, mocker: Mock
 | 
			
		||||
    mocker.patch("ahriman.core.configuration.Configuration.write")
 | 
			
		||||
    chmod_mock = mocker.patch("pathlib.Path.chmod")
 | 
			
		||||
 | 
			
		||||
    User.configuration_write(configuration, secure=False)
 | 
			
		||||
    Users.configuration_write(configuration, secure=False)
 | 
			
		||||
    chmod_mock.assert_not_called()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -177,14 +177,14 @@ def test_configuration_write_not_loaded(configuration: Configuration, mocker: Mo
 | 
			
		||||
    mocker.patch("pathlib.Path.open")
 | 
			
		||||
 | 
			
		||||
    with pytest.raises(InitializeException):
 | 
			
		||||
        User.configuration_write(configuration, secure=True)
 | 
			
		||||
        Users.configuration_write(configuration, secure=True)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def test_get_salt_read(configuration: Configuration) -> None:
 | 
			
		||||
    """
 | 
			
		||||
    must read salt from configuration
 | 
			
		||||
    """
 | 
			
		||||
    assert User.get_salt(configuration) == "salt"
 | 
			
		||||
    assert Users.get_salt(configuration) == "salt"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def test_get_salt_generate(configuration: Configuration) -> None:
 | 
			
		||||
@ -193,17 +193,17 @@ def test_get_salt_generate(configuration: Configuration) -> None:
 | 
			
		||||
    """
 | 
			
		||||
    configuration.remove_option("auth", "salt")
 | 
			
		||||
 | 
			
		||||
    salt = User.get_salt(configuration, 16)
 | 
			
		||||
    salt = Users.get_salt(configuration, 16)
 | 
			
		||||
    assert salt
 | 
			
		||||
    assert len(salt) == 16
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def test_user_create(args: argparse.Namespace, user: MUser) -> None:
 | 
			
		||||
def test_user_create(args: argparse.Namespace, user: User) -> None:
 | 
			
		||||
    """
 | 
			
		||||
    must create user
 | 
			
		||||
    """
 | 
			
		||||
    args = _default_args(args)
 | 
			
		||||
    generated = User.user_create(args)
 | 
			
		||||
    generated = Users.user_create(args)
 | 
			
		||||
    assert generated.username == user.username
 | 
			
		||||
    assert generated.access == user.access
 | 
			
		||||
 | 
			
		||||
@ -216,7 +216,7 @@ def test_user_create_getpass(args: argparse.Namespace, mocker: MockerFixture) ->
 | 
			
		||||
    args.password = None
 | 
			
		||||
 | 
			
		||||
    getpass_mock = mocker.patch("getpass.getpass", return_value="password")
 | 
			
		||||
    generated = User.user_create(args)
 | 
			
		||||
    generated = Users.user_create(args)
 | 
			
		||||
 | 
			
		||||
    getpass_mock.assert_called_once_with()
 | 
			
		||||
    assert generated.password == "password"
 | 
			
		||||
@ -226,4 +226,4 @@ def test_disallow_auto_architecture_run() -> None:
 | 
			
		||||
    """
 | 
			
		||||
    must not allow multi architecture run
 | 
			
		||||
    """
 | 
			
		||||
    assert not User.ALLOW_AUTO_ARCHITECTURE_RUN
 | 
			
		||||
    assert not Users.ALLOW_AUTO_ARCHITECTURE_RUN
 | 
			
		||||
@ -7,7 +7,6 @@ from ahriman.core.database.sqlite import SQLite
 | 
			
		||||
from ahriman.core.repository import Repository
 | 
			
		||||
from ahriman.core.repository.cleaner import Cleaner
 | 
			
		||||
from ahriman.core.repository.executor import Executor
 | 
			
		||||
from ahriman.core.repository.properties import Properties
 | 
			
		||||
from ahriman.core.repository.update_handler import UpdateHandler
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -66,21 +65,6 @@ def repository(configuration: Configuration, database: SQLite, mocker: MockerFix
 | 
			
		||||
    return Repository("x86_64", configuration, database, no_report=True, unsafe=False)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@pytest.fixture
 | 
			
		||||
def properties(configuration: Configuration, database: SQLite) -> Properties:
 | 
			
		||||
    """
 | 
			
		||||
    fixture for properties
 | 
			
		||||
 | 
			
		||||
    Args:
 | 
			
		||||
        configuration(Configuration): configuration fixture
 | 
			
		||||
        database(SQLite): database fixture
 | 
			
		||||
 | 
			
		||||
    Returns:
 | 
			
		||||
        Properties: properties test instance
 | 
			
		||||
    """
 | 
			
		||||
    return Properties("x86_64", configuration, database, no_report=True, unsafe=False)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@pytest.fixture
 | 
			
		||||
def update_handler(configuration: Configuration, database: SQLite, mocker: MockerFixture) -> UpdateHandler:
 | 
			
		||||
    """
 | 
			
		||||
 | 
			
		||||
@ -3,7 +3,7 @@ from pytest_mock import MockerFixture
 | 
			
		||||
from ahriman.core.configuration import Configuration
 | 
			
		||||
from ahriman.core.database.sqlite import SQLite
 | 
			
		||||
from ahriman.core.exceptions import UnsafeRun
 | 
			
		||||
from ahriman.core.repository.properties import Properties
 | 
			
		||||
from ahriman.core.repository.repository_properties import RepositoryProperties
 | 
			
		||||
from ahriman.core.status.web_client import WebClient
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -11,9 +11,9 @@ def test_create_tree_on_load(configuration: Configuration, database: SQLite, moc
 | 
			
		||||
    """
 | 
			
		||||
    must create tree on load
 | 
			
		||||
    """
 | 
			
		||||
    mocker.patch("ahriman.core.repository.properties.check_user")
 | 
			
		||||
    mocker.patch("ahriman.core.repository.repository_properties.check_user")
 | 
			
		||||
    tree_create_mock = mocker.patch("ahriman.models.repository_paths.RepositoryPaths.tree_create")
 | 
			
		||||
    Properties("x86_64", configuration, database, True, False)
 | 
			
		||||
    RepositoryProperties("x86_64", configuration, database, True, False)
 | 
			
		||||
 | 
			
		||||
    tree_create_mock.assert_called_once_with()
 | 
			
		||||
 | 
			
		||||
@ -22,9 +22,9 @@ def test_create_tree_on_load_unsafe(configuration: Configuration, database: SQLi
 | 
			
		||||
    """
 | 
			
		||||
    must not create tree on load in case if user differs from the root owner
 | 
			
		||||
    """
 | 
			
		||||
    mocker.patch("ahriman.core.repository.properties.check_user", side_effect=UnsafeRun(0, 1))
 | 
			
		||||
    mocker.patch("ahriman.core.repository.repository_properties.check_user", side_effect=UnsafeRun(0, 1))
 | 
			
		||||
    tree_create_mock = mocker.patch("ahriman.models.repository_paths.RepositoryPaths.tree_create")
 | 
			
		||||
    Properties("x86_64", configuration, database, True, False)
 | 
			
		||||
    RepositoryProperties("x86_64", configuration, database, True, False)
 | 
			
		||||
 | 
			
		||||
    tree_create_mock.assert_not_called()
 | 
			
		||||
 | 
			
		||||
@ -35,7 +35,7 @@ def test_create_dummy_report_client(configuration: Configuration, database: SQLi
 | 
			
		||||
    """
 | 
			
		||||
    mocker.patch("ahriman.models.repository_paths.RepositoryPaths.tree_create")
 | 
			
		||||
    load_mock = mocker.patch("ahriman.core.status.client.Client.load")
 | 
			
		||||
    properties = Properties("x86_64", configuration, database, True, False)
 | 
			
		||||
    properties = RepositoryProperties("x86_64", configuration, database, True, False)
 | 
			
		||||
 | 
			
		||||
    load_mock.assert_not_called()
 | 
			
		||||
    assert not isinstance(properties.reporter, WebClient)
 | 
			
		||||
@ -47,6 +47,6 @@ def test_create_full_report_client(configuration: Configuration, database: SQLit
 | 
			
		||||
    """
 | 
			
		||||
    mocker.patch("ahriman.models.repository_paths.RepositoryPaths.tree_create")
 | 
			
		||||
    load_mock = mocker.patch("ahriman.core.status.client.Client.load")
 | 
			
		||||
    Properties("x86_64", configuration, database, False, False)
 | 
			
		||||
    RepositoryProperties("x86_64", configuration, database, False, False)
 | 
			
		||||
 | 
			
		||||
    load_mock.assert_called_once_with(configuration)
 | 
			
		||||
		Reference in New Issue
	
	Block a user