setools/tests/library/util.py
Thiébaud Weksteen ab4cce4fb9 Rename IoctlSet to XpermSet
The same class can be used for both ioctl and nlmsg extended
permissions. Rename the current class and mark IoctlSet as deprecated.

Signed-off-by: Thiébaud Weksteen <tweek@google.com>
2024-11-01 14:32:28 +11:00

51 lines
1.5 KiB
Python

"""Unit test mixin classes."""
# Copyright 2015, Tresys Technology, LLC
#
# SPDX-License-Identifier: GPL-2.0-only
#
# pylint: disable=too-few-public-methods
import pytest
import setools
def validate_rule(rule: setools.policyrep.PolicyRule,
ruletype: setools.policyrep.PolicyEnum | str,
source: setools.policyrep.PolicySymbol | str,
target: setools.policyrep.PolicySymbol | str,
/, *,
tclass: setools.ObjClass | str | None = None,
perms: set[str] | setools.XpermSet | None = None,
default: setools.policyrep.PolicySymbol | str | None = None,
cond: str | None = None,
cond_block: bool | None = None,
xperm: str | None = None) -> None:
"""Validate a rule."""
assert ruletype == rule.ruletype
assert source == rule.source
assert target == rule.target
if tclass is not None:
assert tclass == rule.tclass
if perms is not None:
assert perms == rule.perms
elif default is not None:
assert default == rule.default
if cond:
assert cond == rule.conditional
assert cond_block == rule.conditional_block
else:
with pytest.raises(setools.exception.RuleNotConditional):
rule.conditional
with pytest.raises(setools.exception.RuleNotConditional):
rule.conditional_block
if xperm:
assert xperm == rule.xperm_type
assert rule.extended
else:
assert not rule.extended