summaryrefslogtreecommitdiffstats
path: root/test/integration/targets/win_raw/tasks/main.yml
blob: 31f90b85a6cf01286e0d43464db548184245d089 (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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
# test code for the raw module when using winrm connection
# (c) 2014, Chris Church <chris@ninemoreminutes.com>

# This file is part of Ansible
#
# Ansible is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Ansible is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Ansible.  If not, see <http://www.gnu.org/licenses/>.

- name: run getmac
  raw: getmac
  register: getmac_result

- name: assert that getmac ran
  assert:
    that:
      - "getmac_result.rc == 0"
      - "getmac_result.stdout"
      - "not getmac_result.stderr"
      - "getmac_result is not failed"
      - "getmac_result is changed"

- name: run ipconfig with /all argument
  raw: ipconfig /all
  register: ipconfig_result

- name: assert that ipconfig ran with /all argument
  assert:
    that:
      - "ipconfig_result.rc == 0"
      - "ipconfig_result.stdout"
      - "'Physical Address' in ipconfig_result.stdout"
      - "not ipconfig_result.stderr"
      - "ipconfig_result is not failed"
      - "ipconfig_result is changed"

- name: run ipconfig with invalid argument
  raw: ipconfig /badswitch
  register: ipconfig_invalid_result
  ignore_errors: true

- name: assert that ipconfig with invalid argument failed
  assert:
    that:
      - "ipconfig_invalid_result.rc != 0"
      - "ipconfig_invalid_result.stdout" # ipconfig displays errors on stdout.
#      - "not ipconfig_invalid_result.stderr"
      - "ipconfig_invalid_result is failed"
      - "ipconfig_invalid_result is changed"

- name: run an unknown command
  raw: uname -a
  register: unknown_result
  ignore_errors: true

- name: assert that an unknown command failed
  assert:
    that:
      - "unknown_result.rc != 0"
      - "not unknown_result.stdout"
      - "unknown_result.stderr" # An unknown command displays error on stderr.
      - "unknown_result is failed"
      - "unknown_result is changed"

- name: run a command that takes longer than 60 seconds
  raw: Start-Sleep -s 75
  register: sleep_command

- name: assert that the sleep command ran
  assert:
    that:
      - "sleep_command.rc == 0"
      - "not sleep_command.stdout"
      - "not sleep_command.stderr"
      - "sleep_command is not failed"
      - "sleep_command is changed"

- name: run a raw command with key=value arguments
  raw: echo wwe=raw
  register: raw_result

- name: make sure raw is really raw and not removing key=value arguments
  assert:
    that:
      - "raw_result.stdout_lines[0] == 'wwe=raw'"

- name: unicode tests for winrm
  when: ansible_connection != 'psrp'  # Write-Host does not work over PSRP
  block:
  - name: run a raw command with unicode chars and quoted args (from https://github.com/ansible/ansible-modules-core/issues/1929)
    raw: Write-Host --% icacls D:\somedir\ /grant "! ЗАО. Руководство":F
    register: raw_result2

  - name: make sure raw passes command as-is and doesn't split/rejoin args
    assert:
      that:
        - "raw_result2.stdout_lines[0] == '--% icacls D:\\\\somedir\\\\ /grant \"! ЗАО. Руководство\":F'"

- name: unicode tests for psrp
  when: ansible_connection == 'psrp'
  block:
  # Cannot test unicode passed into separate exec as PSRP doesn't run with a preset CP of 65001 which reuslts in ? for unicode chars
  - name: run a raw command with unicode chars
    raw: Write-Output "! ЗАО. Руководство"
    register: raw_result2

  - name: make sure raw passes command as-is and doesn't split/rejoin args
    assert:
      that:
        - "raw_result2.stdout_lines[0] == '! ЗАО. Руководство'"

# Assumes MaxShellsPerUser == 30 (the default)

- name: test raw + with_items to verify that winrm connection is reused for each item
  raw: echo "{{item}}"
  with_items: "{{range(32)|list}}"
  register: raw_with_items_result

- name: check raw + with_items result
  assert:
    that:
      - "raw_with_items_result is not failed"
      - "raw_with_items_result.results|length == 32"

# TODO: this test fails, since we're back to passing raw commands without modification
#- name: test raw with job to ensure that preamble-free InputEncoding is working
#  raw: Start-Job { echo yo } | Receive-Job -Wait
#  register: raw_job_result
#
#- name: check raw with job result
#  assert:
#    that:
#    - raw_job_result is successful
#    - raw_job_result.stdout_lines[0] == 'yo'