Skip to content

Commit 0728b81

Browse files
committed
Remove required_ from core & added tests to ensure both are working
1 parent 6d19cb4 commit 0728b81

File tree

2 files changed

+59
-5
lines changed

2 files changed

+59
-5
lines changed

src/tirith/core/core.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -226,14 +226,14 @@ def start_policy_evaluation_from_dict(policy_dict: Dict, input_dict: Dict) -> Di
226226
policy_meta = policy_dict.get("meta")
227227
eval_objects = policy_dict.get("evaluators")
228228
final_evaluation_policy_string = policy_dict.get("eval_expression")
229-
provider_module = policy_meta.get("required_provider", "core")
230-
# TODO: Write functionality for dynamically importing evaluators from other modules.
229+
230+
provider_module = policy_meta.get("provider", policy_meta.get("required_provider", "core"))
231+
231232
eval_results = []
232233
eval_results_obj = {}
233234
for eval_obj in eval_objects:
234235
eval_id = eval_obj.get("id")
235236
eval_description = eval_obj.get("description")
236-
logger.debug(f"Processing evaluator '{eval_id}'")
237237
eval_result = generate_evaluator_result(eval_obj, input_dict, provider_module)
238238
eval_result["id"] = eval_id
239239
eval_result["description"] = eval_description
@@ -242,10 +242,11 @@ def start_policy_evaluation_from_dict(policy_dict: Dict, input_dict: Dict) -> Di
242242
final_evaluation_result, errors = final_evaluator(final_evaluation_policy_string, eval_results_obj)
243243

244244
final_output = {
245-
"meta": {"version": policy_meta.get("version"), "required_provider": provider_module},
245+
"meta": {"version": policy_meta.get("version"), "provider": provider_module},
246246
"final_result": final_evaluation_result,
247247
"evaluators": eval_results,
248248
"errors": errors,
249249
"eval_expression": final_evaluation_policy_string,
250250
}
251251
return final_output
252+

tests/core/test_core.py

Lines changed: 54 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
from pytest import mark
33

44
from tirith.core.core import final_evaluator
5-
5+
from tirith.core.core import start_policy_evaluation_from_dict
66

77
@mark.passing
88
def test_final_evaluator_skipped_check_should_be_removed():
@@ -38,3 +38,56 @@ def test_final_evaluator_malicious_eval_should_err():
3838
"!skipped_check && passing_check || [].__class__.__base__", dict(skipped_check=None, passing_check=True)
3939
)
4040
assert actual_result == (False, ["The following symbols are not allowed: __class__, __base__"])
41+
42+
43+
@mark.passing
44+
def test_start_policy_evaluation_with_required_provider():
45+
policy_dict = {
46+
"meta": {"version": "1.0", "required_provider": "legacy_provider"},
47+
"evaluators": [],
48+
"eval_expression": "True",
49+
}
50+
input_dict = {}
51+
52+
result = start_policy_evaluation_from_dict(policy_dict, input_dict)
53+
54+
assert result["meta"]["provider"] == "legacy_provider"
55+
56+
@mark.passing
57+
def test_start_policy_evaluation_with_provider():
58+
policy_dict = {
59+
"meta": {"version": "1.0", "provider": "new_provider"},
60+
"evaluators": [],
61+
"eval_expression": "True",
62+
}
63+
input_dict = {}
64+
65+
result = start_policy_evaluation_from_dict(policy_dict, input_dict)
66+
67+
assert result["meta"]["provider"] == "new_provider"
68+
69+
@mark.passing
70+
def test_start_policy_evaluation_with_both_providers():
71+
policy_dict = {
72+
"meta": {"version": "1.0", "provider": "new_provider", "required_provider": "legacy_provider"},
73+
"evaluators": [],
74+
"eval_expression": "True",
75+
}
76+
input_dict = {}
77+
78+
result = start_policy_evaluation_from_dict(policy_dict, input_dict)
79+
80+
assert result["meta"]["provider"] == "new_provider"
81+
82+
@mark.passing
83+
def test_start_policy_evaluation_with_neither_provider():
84+
policy_dict = {
85+
"meta": {"version": "1.0"},
86+
"evaluators": [],
87+
"eval_expression": "True",
88+
}
89+
input_dict = {}
90+
91+
result = start_policy_evaluation_from_dict(policy_dict, input_dict)
92+
93+
assert result["meta"]["provider"] == "core"

0 commit comments

Comments
 (0)