Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 53 additions & 0 deletions tests/providers/kubernetes/test_attribute.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,16 @@
import os

import yaml

from tirith.core.core import start_policy_evaluation
from tirith.providers.common import ProviderError
from tirith.providers.kubernetes.handler import provide


def _load_input():
test_dir = os.path.dirname(os.path.realpath(__file__))
with open(os.path.join(test_dir, "input.yml")) as f:
return list(yaml.safe_load_all(f))


def test_get_value():
Expand All @@ -15,3 +25,46 @@ def test_get_value():
for item in result["evaluators"][0]["result"]:
assert "context" not in item
assert item["message"].startswith("Found ")


def test_kind_not_found():
result = provide(
{"operation_type": "attribute", "kubernetes_kind": "ConfigMap", "attribute_path": "metadata.name"},
_load_input(),
)

assert len(result) == 1
assert result[0]["err"] == "kind: ConfigMap is not found"
assert isinstance(result[0]["value"], ProviderError)
assert result[0]["value"].severity_value == 1


def test_plain_path():
result = provide(
{"operation_type": "attribute", "kubernetes_kind": "Role", "attribute_path": "metadata.name"},
_load_input(),
)

assert result == [{"value": "access-role", "meta": None, "err": None}]


def test_wildcard_path():
result = provide(
{
"operation_type": "attribute",
"kubernetes_kind": "Deployment",
"attribute_path": "spec.selector.matchLabels.*",
},
_load_input(),
)

assert result == [{"value": ["wfs-demo", "wfs-demp"], "meta": None, "err": None}]


def test_missing_attribute():
result = provide(
{"operation_type": "attribute", "kubernetes_kind": "RoleBinding", "attribute_path": "metadata.labels"},
_load_input(),
)

assert result == [{"value": None, "meta": None, "err": None}]