Files
ansible-role-collect-logs/tests/common/utils.py
Sorin Sbarnea b1d1684f05 Convert flatten_nested_dict filter into a module
Fixed failure to run on Zuul controller due its security protections.
Modules are not affected by the same limitations as plugins or filters.

This also adds 3 module unittests.

Change-Id: Ida2f71a5077e56bf245060268d725eecac0a3e5b
Story: https://tree.taiga.io/project/tripleo-ci-board/task/1627
2020-04-09 11:32:14 +01:00

57 lines
1.3 KiB
Python

from __future__ import absolute_import, division, print_function
__metaclass__ = type
import json
from ansible.module_utils import basic
from ansible.module_utils._text import to_bytes
try:
from unittest.mock import patch # Python 3
except ImportError:
from mock import patch # Python 2 needs mock package installed
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:
def setup_method(self):
self.mock_module = patch.multiple(
basic.AnsibleModule, exit_json=exit_json, fail_json=fail_json,
)
self.mock_module.start()
def teardown_method(self):
self.mock_module.stop()
def generate_name(test_case):
return test_case['name']