summaryrefslogtreecommitdiffstats
path: root/test/integration/targets/dict_transformations
diff options
context:
space:
mode:
Diffstat (limited to 'test/integration/targets/dict_transformations')
-rw-r--r--test/integration/targets/dict_transformations/aliases2
-rw-r--r--test/integration/targets/dict_transformations/library/convert_camelCase.py48
-rw-r--r--test/integration/targets/dict_transformations/library/convert_snake_case.py55
-rw-r--r--test/integration/targets/dict_transformations/tasks/main.yml3
-rw-r--r--test/integration/targets/dict_transformations/tasks/test_convert_camelCase.yml33
-rw-r--r--test/integration/targets/dict_transformations/tasks/test_convert_snake_case.yml35
6 files changed, 176 insertions, 0 deletions
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']}]}]}"