summaryrefslogtreecommitdiffstats
path: root/test/integration/targets/module_utils/module_utils_test.yml
diff options
context:
space:
mode:
Diffstat (limited to 'test/integration/targets/module_utils/module_utils_test.yml')
-rw-r--r--test/integration/targets/module_utils/module_utils_test.yml121
1 files changed, 121 insertions, 0 deletions
diff --git a/test/integration/targets/module_utils/module_utils_test.yml b/test/integration/targets/module_utils/module_utils_test.yml
new file mode 100644
index 0000000..4e948bd
--- /dev/null
+++ b/test/integration/targets/module_utils/module_utils_test.yml
@@ -0,0 +1,121 @@
+- hosts: testhost
+ gather_facts: no
+ tasks:
+ - name: Use a specially crafted module to see if things were imported correctly
+ test:
+ register: result
+
+ - name: Check that the module imported the correct version of each module_util
+ assert:
+ that:
+ - 'result["abcdefgh"] == "abcdefgh"'
+ - 'result["bar0"] == "bar0"'
+ - 'result["bar1"] == "bar1"'
+ - 'result["bar2"] == "bar2"'
+ - 'result["baz1"] == "baz1"'
+ - 'result["baz2"] == "baz2"'
+ - 'result["foo0"] == "foo0"'
+ - 'result["foo1"] == "foo1"'
+ - 'result["foo2"] == "foo2"'
+ - 'result["qux1"] == "qux1"'
+ - 'result["qux2"] == ["qux2:quux", "qux2:quuz"]'
+ - 'result["spam1"] == "spam1"'
+ - 'result["spam2"] == "spam2"'
+ - 'result["spam3"] == "spam3"'
+ - 'result["spam4"] == "spam4"'
+ - 'result["spam5"] == ["spam5:bacon", "spam5:eggs"]'
+ - 'result["spam6"] == ["spam6:bacon", "spam6:eggs"]'
+ - 'result["spam7"] == ["spam7:bacon", "spam7:eggs"]'
+ - 'result["spam8"] == ["spam8:bacon", "spam8:eggs"]'
+
+ # Test that overriding something in module_utils with something in the local library works
+ - name: Test that local module_utils overrides facts.py
+ test_override:
+ register: result
+
+ - name: Make sure the we used the local ansible_release.py, not the one shipped with ansible
+ assert:
+ that:
+ - result["data"] == "overridden ansible_release.py"
+
+ - name: Test that importing a module that only exists inside of a submodule does not work
+ test_failure:
+ ignore_errors: True
+ register: result
+
+ - name: Make sure we failed in AnsiBallZ
+ assert:
+ that:
+ - result is failed
+ - result['msg'] == "Could not find imported module support code for ansible.modules.test_failure. Looked for (['ansible.module_utils.zebra.foo', 'ansible.module_utils.zebra'])"
+
+ - name: Test that alias deprecation works
+ test_alias_deprecation:
+ baz: 'bar'
+ register: result
+
+ - name: Assert that the deprecation message is given correctly
+ assert:
+ that:
+ - result.deprecations[-1].msg == "Alias 'baz' is deprecated. See the module docs for more information"
+ - result.deprecations[-1].version == '9.99'
+
+ - block:
+ - import_role:
+ name: setup_remote_tmp_dir
+
+ - name: Get a string with a \0 in it
+ command: echo -e 'hi\0foo'
+ register: string_with_null
+
+ - name: Use the null string as a module parameter
+ lineinfile:
+ path: "{{ remote_tmp_dir }}/nulltest"
+ line: "{{ string_with_null.stdout }}"
+ create: yes
+ ignore_errors: yes
+ register: nulltest
+
+ - name: See if the file exists
+ stat:
+ path: "{{ remote_tmp_dir }}/nulltest"
+ register: nullstat
+
+ - assert:
+ that:
+ - nulltest is failed
+ - nulltest.msg_to_log.startswith('Invoked ')
+ - nulltest.msg.startswith('Failed to log to syslog')
+ # Conditionalize this, because when we log with something other than
+ # syslog, it's probably successful and these assertions will fail.
+ when: nulltest is failed
+
+ # Ensure we fail out early and don't actually run the module if logging
+ # failed.
+ - assert:
+ that:
+ - nullstat.stat.exists == nulltest is successful
+ always:
+ - file:
+ path: "{{ remote_tmp_dir }}/nulltest"
+ state: absent
+
+ - name: Test that date and datetime in module output works
+ test_datetime:
+ date: "2020-10-05"
+ datetime: "2020-10-05T10:05:05"
+ register: datetimetest
+
+ - assert:
+ that:
+ - datetimetest.date == '2020-10-05'
+ - datetimetest.datetime == '2020-10-05T10:05:05'
+
+ - name: Test that optional imports behave properly
+ test_optional:
+ register: optionaltest
+
+ - assert:
+ that:
+ - optionaltest is success
+ - optionaltest.msg == 'all missing optional imports behaved as expected'