summaryrefslogtreecommitdiffstats
path: root/test/integration/targets/module_utils/module_utils_test.yml
blob: 4e948bd61d64f54f737bdc1ebdc7e697e09d54de (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
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'