summaryrefslogtreecommitdiffstats
path: root/test/integration/targets/connection_psrp/tests.yml
diff options
context:
space:
mode:
Diffstat (limited to 'test/integration/targets/connection_psrp/tests.yml')
-rw-r--r--test/integration/targets/connection_psrp/tests.yml133
1 files changed, 133 insertions, 0 deletions
diff --git a/test/integration/targets/connection_psrp/tests.yml b/test/integration/targets/connection_psrp/tests.yml
new file mode 100644
index 0000000..dabbf40
--- /dev/null
+++ b/test/integration/targets/connection_psrp/tests.yml
@@ -0,0 +1,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