summaryrefslogtreecommitdiffstats
path: root/test/units/module_utils/common/validation/test_check_required_if.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/units/module_utils/common/validation/test_check_required_if.py')
-rw-r--r--test/units/module_utils/common/validation/test_check_required_if.py79
1 files changed, 79 insertions, 0 deletions
diff --git a/test/units/module_utils/common/validation/test_check_required_if.py b/test/units/module_utils/common/validation/test_check_required_if.py
new file mode 100644
index 0000000..4189164
--- /dev/null
+++ b/test/units/module_utils/common/validation/test_check_required_if.py
@@ -0,0 +1,79 @@
+# -*- coding: utf-8 -*-
+# Copyright: (c) 2021, Ansible Project
+# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import absolute_import, division, print_function
+
+__metaclass__ = type
+
+import pytest
+
+from ansible.module_utils._text import to_native
+from ansible.module_utils.common.validation import check_required_if
+
+
+def test_check_required_if():
+ arguments_terms = {}
+ params = {}
+ assert check_required_if(arguments_terms, params) == []
+
+
+def test_check_required_if_missing():
+ arguments_terms = [["state", "present", ("path",)]]
+ params = {"state": "present"}
+ expected = "state is present but all of the following are missing: path"
+
+ with pytest.raises(TypeError) as e:
+ check_required_if(arguments_terms, params)
+
+ assert to_native(e.value) == expected
+
+
+def test_check_required_if_missing_required():
+ arguments_terms = [["state", "present", ("path", "owner"), True]]
+ params = {"state": "present"}
+ expected = "state is present but any of the following are missing: path, owner"
+
+ with pytest.raises(TypeError) as e:
+ check_required_if(arguments_terms, params)
+
+ assert to_native(e.value) == expected
+
+
+def test_check_required_if_missing_multiple():
+ arguments_terms = [["state", "present", ("path", "owner")]]
+ params = {
+ "state": "present",
+ }
+ expected = "state is present but all of the following are missing: path, owner"
+
+ with pytest.raises(TypeError) as e:
+ check_required_if(arguments_terms, params)
+
+ assert to_native(e.value) == expected
+
+
+def test_check_required_if_missing_multiple_with_context():
+ arguments_terms = [["state", "present", ("path", "owner")]]
+ params = {
+ "state": "present",
+ }
+ options_context = ["foo_context"]
+ expected = "state is present but all of the following are missing: path, owner found in foo_context"
+
+ with pytest.raises(TypeError) as e:
+ check_required_if(arguments_terms, params, options_context)
+
+ assert to_native(e.value) == expected
+
+
+def test_check_required_if_multiple():
+ arguments_terms = [["state", "present", ("path", "owner")]]
+ params = {
+ "state": "present",
+ "path": "/foo",
+ "owner": "root",
+ }
+ options_context = ["foo_context"]
+ assert check_required_if(arguments_terms, params) == []
+ assert check_required_if(arguments_terms, params, options_context) == []