summaryrefslogtreecommitdiff
path: root/test/integration/targets/connection_psrp/tests.yml
blob: dabbf40729ef676bf4801bb083736166de164d8a (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
---
# these are extra tests for psrp that aren't covered under test/integration/targets/connection/*
- name: test out psrp specific tests
  hosts: windows
  serial: 1
  gather_facts: no

  tasks:
  - name: test complex objects in raw output
    # until PyYAML is upgraded to 4.x we need to use the \U escape for a unicode codepoint
    # and enclose in a quote to it translates the \U
    raw: "
      [PSCustomObject]@{string = 'string'};
      [PSCustomObject]@{unicode = 'poo - \U0001F4A9'};
      [PSCustomObject]@{integer = 1};
      [PSCustomObject]@{list = @(1, 2)};
      Get-Service -Name winrm;
      Write-Output -InputObject 'string - \U0001F4A9';"
    register: raw_out

  - name: assert complex objects in raw output
    assert:
      that:
      - raw_out.stdout_lines|count == 6
      - "raw_out.stdout_lines[0] == 'string: string'"
      - "raw_out.stdout_lines[1] == 'unicode: poo - \U0001F4A9'"
      - "raw_out.stdout_lines[2] == 'integer: 1'"
      - "raw_out.stdout_lines[3] == \"list: [1, 2]\""
      - raw_out.stdout_lines[4] == "winrm"
      - raw_out.stdout_lines[5] == "string - \U0001F4A9"

  # Become only works on Server 2008 when running with basic auth, skip this host for now as it is too complicated to
  # override the auth protocol in the tests.
  - name: check if we running on Server 2008
    win_shell: '[System.Environment]::OSVersion.Version -ge [Version]"6.1"'
    register: os_version

  - name: test out become with psrp
    win_whoami:
    when: os_version|bool
    register: whoami_out
    become: yes
    become_method: runas
    become_user: SYSTEM

  - name: assert test out become with psrp
    assert:
      that:
      - whoami_out.account.sid == "S-1-5-18"
    when: os_version|bool

  - name: test out async with psrp
    win_shell: Start-Sleep -Seconds 2; Write-Output abc
    async: 10
    poll: 1
    register: async_out

  - name: assert est out async with psrp
    assert:
      that:
      - async_out.stdout_lines == ["abc"]

  - name: Output unicode characters from Powershell using PSRP
    win_command: "powershell.exe -ExecutionPolicy ByPass -Command \"Write-Host '\U0001F4A9'\""
    register: command_unicode_output

  - name: Assert unicode output
    assert:
      that:
      - command_unicode_output is changed
      - command_unicode_output.rc == 0
      - "command_unicode_output.stdout == '\U0001F4A9\n'"
      - command_unicode_output.stderr == ''

  - name: Output unicode characters from Powershell using PSRP
    win_shell: "Write-Host '\U0001F4A9'"
    register: shell_unicode_output

  - name: Assert unicode output
    assert:
      that:
      - shell_unicode_output is changed
      - shell_unicode_output.rc == 0
      - "shell_unicode_output.stdout == '\U0001F4A9\n'"
      - shell_unicode_output.stderr == ''

  - name: copy empty file
    win_copy:
      src: empty.txt
      dest: C:\Windows\TEMP\empty.txt
    register: copy_empty

  - name: get result of copy empty file
    win_stat:
      path: C:\Windows\TEMP\empty.txt
      get_checksum: yes
    register: copy_empty_actual

  - name: assert copy empty file
    assert:
      that:
      - copy_empty.checksum == 'da39a3ee5e6b4b0d3255bfef95601890afd80709'
      - copy_empty_actual.stat.checksum == 'da39a3ee5e6b4b0d3255bfef95601890afd80709'
      - copy_empty_actual.stat.size == 0

  - block:
    - name: fetch empty file
      fetch:
        src: C:\Windows\TEMP\empty.txt
        dest: /tmp/empty.txt
        flat: yes
      register: fetch_empty

    - name: get result of fetch empty file
      stat:
        path: /tmp/empty.txt
        get_checksum: yes
      register: fetch_empty_actual
      delegate_to: localhost

    - name: assert fetch empty file
      assert:
        that:
        - fetch_empty.checksum == 'da39a3ee5e6b4b0d3255bfef95601890afd80709'
        - fetch_empty_actual.stat.checksum == 'da39a3ee5e6b4b0d3255bfef95601890afd80709'
        - fetch_empty_actual.stat.size == 0

    always:
    - name: remove tmp file
      file:
        path: /tmp/empty.txt
        state: absent
      delegate_to: localhost