From 4e50fc1befd95bb70656fa725fa2005b1d8eb367 Mon Sep 17 00:00:00 2001 From: derekpierre Date: Fri, 10 May 2024 08:44:16 -0400 Subject: [PATCH] Additional unit test for sequential conditions. --- .../conditions/test_sequential_condition.py | 58 +++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/tests/unit/conditions/test_sequential_condition.py b/tests/unit/conditions/test_sequential_condition.py index 131ef38d9..1cdeafaf0 100644 --- a/tests/unit/conditions/test_sequential_condition.py +++ b/tests/unit/conditions/test_sequential_condition.py @@ -90,3 +90,61 @@ def test_sequential_condition(mocker, mock_execution_variables): assert value == (1 * 2 * 3 * 4 * 5) # only a copy of the context is modified internally assert len(original_context) == 0, "original context remains unchanged" + + +def test_sequential_condition_all_prior_vars_passed_to_subsequent_calls( + mocker, mock_execution_variables +): + var_1, var_2, var_3, var_4 = mock_execution_variables + + var_1.call.execute.return_value = 1 + + var_2.call.execute = lambda providers, **context: context[f":{var_1.var_name}"] + 1 + + var_3.call.execute = ( + lambda providers, **context: context[f":{var_1.var_name}"] + + context[f":{var_2.var_name}"] + + 1 + ) + + var_4.call.execute = ( + lambda providers, **context: context[f":{var_1.var_name}"] + + context[f":{var_2.var_name}"] + + context[f":{var_3.var_name}"] + + 1 + ) + + condition = mocker.Mock(spec=AccessControlCondition) + condition.verify = lambda providers, **context: ( + True, + context[f":{var_1.var_name}"] + + context[f":{var_2.var_name}"] + + context[f":{var_3.var_name}"] + + context[f":{var_4.var_name}"] + + 1, + ) + + sequential_condition = SequentialAccessControlCondition( + variables=[var_1, var_2, var_3, var_4], + condition=condition, + ) + + expected_var_1_value = 1 + expected_var_2_value = expected_var_1_value + 1 + expected_var_3_value = expected_var_1_value + expected_var_2_value + 1 + expected_var_4_value = ( + expected_var_1_value + expected_var_2_value + expected_var_3_value + 1 + ) + + original_context = dict() + result, value = sequential_condition.verify(providers={}, **original_context) + assert result is True + assert value == ( + expected_var_1_value + + expected_var_2_value + + expected_var_3_value + + expected_var_4_value + + 1 + ) + # only a copy of the context is modified internally + assert len(original_context) == 0, "original context remains unchanged"