Files
supervisor/tests/host/test_apparmor_control.py
Stefan Agner f6faa18409 Bump pre-commit ruff to 0.5.7 and reformat (#5242)
It seems that the codebase is not formatted with the latest ruff
version. This PR reformats the codebase with ruff 0.5.7.
2024-08-13 20:53:56 +02:00

64 lines
2.3 KiB
Python

"""Test host apparmor control."""
import errno
from pathlib import Path
from unittest.mock import patch
from pytest import raises
from supervisor.coresys import CoreSys
from supervisor.exceptions import HostAppArmorError
async def test_load_profile_error(coresys: CoreSys):
"""Test error loading apparmor profile."""
test_path = Path("test")
with (
patch("supervisor.host.apparmor.validate_profile"),
patch(
"supervisor.host.apparmor.shutil.copyfile", side_effect=(err := OSError())
),
):
err.errno = errno.EBUSY
with raises(HostAppArmorError):
await coresys.host.apparmor.load_profile("test", test_path)
assert coresys.core.healthy is True
err.errno = errno.EBADMSG
with raises(HostAppArmorError):
await coresys.host.apparmor.load_profile("test", test_path)
assert coresys.core.healthy is False
async def test_remove_profile_error(coresys: CoreSys, path_extern):
"""Test error removing apparmor profile."""
coresys.host.apparmor._profiles.add("test") # pylint: disable=protected-access
with patch("supervisor.host.apparmor.Path.unlink", side_effect=(err := OSError())):
err.errno = errno.EBUSY
with raises(HostAppArmorError):
await coresys.host.apparmor.remove_profile("test")
assert coresys.core.healthy is True
err.errno = errno.EBADMSG
with raises(HostAppArmorError):
await coresys.host.apparmor.remove_profile("test")
assert coresys.core.healthy is False
async def test_backup_profile_error(coresys: CoreSys, path_extern):
"""Test error while backing up apparmor profile."""
test_path = Path("test")
coresys.host.apparmor._profiles.add("test") # pylint: disable=protected-access
with patch(
"supervisor.host.apparmor.shutil.copyfile", side_effect=(err := OSError())
):
err.errno = errno.EBUSY
with raises(HostAppArmorError):
await coresys.host.apparmor.backup_profile("test", test_path)
assert coresys.core.healthy is True
err.errno = errno.EBADMSG
with raises(HostAppArmorError):
await coresys.host.apparmor.backup_profile("test", test_path)
assert coresys.core.healthy is False