diff options
Diffstat (limited to 'tests/unit/modules/utils.py')
| -rw-r--r-- | tests/unit/modules/utils.py | 48 | 
1 files changed, 48 insertions, 0 deletions
| diff --git a/tests/unit/modules/utils.py b/tests/unit/modules/utils.py new file mode 100644 index 00000000..2c9c602e --- /dev/null +++ b/tests/unit/modules/utils.py @@ -0,0 +1,48 @@ +import json + +from ansible_collections.vyos.vyos.tests.unit.compat import unittest +from ansible_collections.vyos.vyos.tests.unit.compat.mock import patch +from ansible.module_utils import basic +from ansible.module_utils._text import to_bytes + + +def set_module_args(args): +    if "_ansible_remote_tmp" not in args: +        args["_ansible_remote_tmp"] = "/tmp" +    if "_ansible_keep_remote_files" not in args: +        args["_ansible_keep_remote_files"] = False + +    args = json.dumps({"ANSIBLE_MODULE_ARGS": args}) +    basic._ANSIBLE_ARGS = to_bytes(args) + + +class AnsibleExitJson(Exception): +    pass + + +class AnsibleFailJson(Exception): +    pass + + +def exit_json(*args, **kwargs): +    if "changed" not in kwargs: +        kwargs["changed"] = False +    raise AnsibleExitJson(kwargs) + + +def fail_json(*args, **kwargs): +    kwargs["failed"] = True +    raise AnsibleFailJson(kwargs) + + +class ModuleTestCase(unittest.TestCase): +    def setUp(self): +        self.mock_module = patch.multiple( +            basic.AnsibleModule, exit_json=exit_json, fail_json=fail_json +        ) +        self.mock_module.start() +        self.mock_sleep = patch("time.sleep") +        self.mock_sleep.start() +        set_module_args({}) +        self.addCleanup(self.mock_module.stop) +        self.addCleanup(self.mock_sleep.stop) | 
