From 8a754e0858d922e955e71b253c139e071ecec432 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 28 Apr 2024 18:04:21 +0200 Subject: Adding upstream version 2.14.3. Signed-off-by: Daniel Baumann --- .../targets/dict_transformations/aliases | 2 + .../library/convert_camelCase.py | 48 +++++++++++++++++++ .../library/convert_snake_case.py | 55 ++++++++++++++++++++++ .../targets/dict_transformations/tasks/main.yml | 3 ++ .../tasks/test_convert_camelCase.yml | 33 +++++++++++++ .../tasks/test_convert_snake_case.yml | 35 ++++++++++++++ 6 files changed, 176 insertions(+) create mode 100644 test/integration/targets/dict_transformations/aliases create mode 100644 test/integration/targets/dict_transformations/library/convert_camelCase.py create mode 100644 test/integration/targets/dict_transformations/library/convert_snake_case.py create mode 100644 test/integration/targets/dict_transformations/tasks/main.yml create mode 100644 test/integration/targets/dict_transformations/tasks/test_convert_camelCase.yml create mode 100644 test/integration/targets/dict_transformations/tasks/test_convert_snake_case.yml (limited to 'test/integration/targets/dict_transformations') diff --git a/test/integration/targets/dict_transformations/aliases b/test/integration/targets/dict_transformations/aliases new file mode 100644 index 0000000..8278ec8 --- /dev/null +++ b/test/integration/targets/dict_transformations/aliases @@ -0,0 +1,2 @@ +shippable/posix/group3 +context/controller diff --git a/test/integration/targets/dict_transformations/library/convert_camelCase.py b/test/integration/targets/dict_transformations/library/convert_camelCase.py new file mode 100644 index 0000000..50ca34c --- /dev/null +++ b/test/integration/targets/dict_transformations/library/convert_camelCase.py @@ -0,0 +1,48 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +# 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 + + +DOCUMENTATION = ''' +--- +module: convert_camelCase +short_description: test converting data to camelCase +description: test converting data to camelCase +options: + data: + description: Data to modify + type: dict + required: True + capitalize_first: + description: Whether to capitalize the first character + default: False + type: bool +''' + + +from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.common.dict_transformations import snake_dict_to_camel_dict + + +def main(): + module = AnsibleModule( + argument_spec=dict( + data=dict(type='dict', required=True), + capitalize_first=dict(type='bool', default=False), + ), + ) + + result = snake_dict_to_camel_dict( + module.params['data'], + module.params['capitalize_first'] + ) + + module.exit_json(data=result) + + +if __name__ == '__main__': + main() diff --git a/test/integration/targets/dict_transformations/library/convert_snake_case.py b/test/integration/targets/dict_transformations/library/convert_snake_case.py new file mode 100644 index 0000000..4c13fbc --- /dev/null +++ b/test/integration/targets/dict_transformations/library/convert_snake_case.py @@ -0,0 +1,55 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +# 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 + + +DOCUMENTATION = ''' +--- +module: convert_snake_case +short_description: test converting data to snake_case +description: test converting data to snake_case +options: + data: + description: Data to modify + type: dict + required: True + reversible: + description: + - Make the snake_case conversion in a way that can be converted back to the original value + - For example, convert IAMUser to i_a_m_user instead of iam_user + default: False + ignore_list: + description: list of top level keys that should not have their contents converted + type: list + default: [] +''' + + +from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.common.dict_transformations import camel_dict_to_snake_dict + + +def main(): + module = AnsibleModule( + argument_spec=dict( + data=dict(type='dict', required=True), + reversible=dict(type='bool', default=False), + ignore_list=dict(type='list', default=[]), + ), + ) + + result = camel_dict_to_snake_dict( + module.params['data'], + module.params['reversible'], + module.params['ignore_list'] + ) + + module.exit_json(data=result) + + +if __name__ == '__main__': + main() diff --git a/test/integration/targets/dict_transformations/tasks/main.yml b/test/integration/targets/dict_transformations/tasks/main.yml new file mode 100644 index 0000000..03aa6e1 --- /dev/null +++ b/test/integration/targets/dict_transformations/tasks/main.yml @@ -0,0 +1,3 @@ +- include_tasks: test_convert_snake_case.yml + +- include_tasks: test_convert_camelCase.yml diff --git a/test/integration/targets/dict_transformations/tasks/test_convert_camelCase.yml b/test/integration/targets/dict_transformations/tasks/test_convert_camelCase.yml new file mode 100644 index 0000000..666e8d3 --- /dev/null +++ b/test/integration/targets/dict_transformations/tasks/test_convert_camelCase.yml @@ -0,0 +1,33 @@ +- convert_camelCase: + data: {'top_level_key': {'nested_key': 'do_not_convert'}} + register: result + +- assert: + that: + - "result.data == {'topLevelKey': {'nestedKey': 'do_not_convert'}}" + +- convert_camelCase: + data: {'t_o_p_level_key': {'n_e_s_t_e_d_key': 'do_not_convert'}} + register: result + +- assert: + that: + - "result.data == {'tOPLevelKey': {'nESTEDKey': 'do_not_convert'}}" + +- convert_camelCase: + data: {'t_o_p_level_key': {'n_e_s_t_e_d_key': 'do_not_convert'}} + capitalize_first: True + register: result + +- assert: + that: + - "result.data == {'TOPLevelKey': {'NESTEDKey': 'do_not_convert'}}" + +- convert_camelCase: + data: {'results': [{'i_a_m_user': 'user_name', 'tags': {'do_convert': 'do_not_convert'}}]} + capitalize_first: True + register: result + +- assert: + that: + - "result.data == {'Results': [{'IAMUser': 'user_name', 'Tags': {'DoConvert': 'do_not_convert'}}]}" diff --git a/test/integration/targets/dict_transformations/tasks/test_convert_snake_case.yml b/test/integration/targets/dict_transformations/tasks/test_convert_snake_case.yml new file mode 100644 index 0000000..cf700bc --- /dev/null +++ b/test/integration/targets/dict_transformations/tasks/test_convert_snake_case.yml @@ -0,0 +1,35 @@ +- convert_snake_case: + data: {'TOPLevelKey': {'NESTEDKey': 'DoNotConvert'}} + register: result + +- assert: + that: + - "result.data == {'top_level_key': {'nested_key': 'DoNotConvert'}}" + +- convert_snake_case: + data: {'TOPLevelKey': {'NESTEDKey': 'DoNotConvert'}} + reversible: True + register: result + +- assert: + that: + - "result.data == {'t_o_p_level_key': {'n_e_s_t_e_d_key': 'DoNotConvert'}}" + +- convert_snake_case: + data: {'Results': [{'IAMUser': 'UserName', 'Tags': {'DoConvert': 'DoNotConvert'}}], 'Tags': {'DoNotConvert': 'DoNotConvert'}} + reversible: True + ignore_list: ['Tags'] # Ignore top level 'Tags' key if found + register: result + +- assert: + that: + - "result.data == {'results': [{'i_a_m_user': 'UserName', 'tags': {'do_convert': 'DoNotConvert'}}], 'tags': {'DoNotConvert': 'DoNotConvert'}}" + +- name: Test converting dict keys in lists within lists + convert_snake_case: + data: {'Results': [{'Changes': [{'DoConvert': 'DoNotConvert', 'Details': ['DoNotConvert']}]}]} + register: result + +- assert: + that: + - "result.data == {'results': [{'changes': [{'do_convert': 'DoNotConvert', 'details': ['DoNotConvert']}]}]}" -- cgit v1.2.3