375 lines
11 KiB
YAML
375 lines
11 KiB
YAML
|
---
|
||
|
- name: create profile (check mode)
|
||
|
win_user_profile:
|
||
|
username: '{{ test_username }}'
|
||
|
state: present
|
||
|
register: create_profile_check
|
||
|
check_mode: True
|
||
|
|
||
|
- name: check if profile was created (check mode)
|
||
|
win_stat:
|
||
|
path: C:\Users\{{ test_username }}
|
||
|
register: create_profile_actual_check
|
||
|
|
||
|
- name: assert create profile (check mode)
|
||
|
assert:
|
||
|
that:
|
||
|
- create_profile_check is changed
|
||
|
- create_profile_check.path|lower == "c:\\users\\" + test_username
|
||
|
- not create_profile_actual_check.stat.exists
|
||
|
|
||
|
- name: create profile
|
||
|
win_user_profile:
|
||
|
username: '{{ test_username }}'
|
||
|
state: present
|
||
|
register: create_profile
|
||
|
|
||
|
- name: check if profile was created
|
||
|
win_stat:
|
||
|
path: C:\Users\{{ test_username }}
|
||
|
register: create_profile_actual
|
||
|
|
||
|
- name: assert create profile
|
||
|
assert:
|
||
|
that:
|
||
|
- create_profile is changed
|
||
|
- create_profile.path|lower == "c:\\users\\" + test_username
|
||
|
- create_profile_actual.stat.exists
|
||
|
|
||
|
- name: create profile (idempotent)
|
||
|
win_user_profile:
|
||
|
username: '{{ test_username }}'
|
||
|
state: present
|
||
|
register: create_profile_again
|
||
|
|
||
|
- name: assert create profile (idempotent)
|
||
|
assert:
|
||
|
that:
|
||
|
- not create_profile_again is changed
|
||
|
- create_profile_again.path|lower == "c:\\users\\" + test_username
|
||
|
|
||
|
- name: remove profile (check mode)
|
||
|
win_user_profile:
|
||
|
username: '{{ test_username }}'
|
||
|
state: absent
|
||
|
register: remove_profile_check
|
||
|
check_mode: True
|
||
|
|
||
|
- name: check if profile was removed (check mode)
|
||
|
win_stat:
|
||
|
path: C:\Users\{{ test_username }}
|
||
|
register: remove_profile_actual_check
|
||
|
|
||
|
- name: assert remove profile (check mode)
|
||
|
assert:
|
||
|
that:
|
||
|
- remove_profile_check is changed
|
||
|
- remove_profile_check.path|lower == "c:\\users\\" + test_username
|
||
|
- remove_profile_actual_check.stat.exists
|
||
|
|
||
|
- name: remove profile
|
||
|
win_user_profile:
|
||
|
username: '{{ test_username }}'
|
||
|
state: absent
|
||
|
register: remove_profile
|
||
|
|
||
|
- name: check if profile was removed
|
||
|
win_stat:
|
||
|
path: C:\Users\{{ test_username }}
|
||
|
register: remove_profile_actual
|
||
|
|
||
|
- name: assert remove profile
|
||
|
assert:
|
||
|
that:
|
||
|
- remove_profile is changed
|
||
|
- remove_profile.path|lower == "c:\\users\\" + test_username
|
||
|
- not remove_profile_actual.stat.exists
|
||
|
|
||
|
- name: remove profile (idempotent)
|
||
|
win_user_profile:
|
||
|
username: '{{ test_username }}'
|
||
|
state: absent
|
||
|
register: remove_profile_again
|
||
|
|
||
|
- name: assert remove profile (idempotent)
|
||
|
assert:
|
||
|
that:
|
||
|
- not remove_profile_again is changed
|
||
|
- remove_profile_again.path == None
|
||
|
|
||
|
- name: create profile with specific base path
|
||
|
win_user_profile:
|
||
|
username: '{{ test_username }}'
|
||
|
name: test_username_profile
|
||
|
state: present
|
||
|
register: create_profile_basename
|
||
|
|
||
|
- name: check if profile with specific base path was created
|
||
|
win_stat:
|
||
|
path: C:\Users\test_username_profile
|
||
|
register: create_profile_basename_actual
|
||
|
|
||
|
- name: assert create profile with specific base path
|
||
|
assert:
|
||
|
that:
|
||
|
- create_profile_basename is changed
|
||
|
- create_profile_basename.path|lower == "c:\\users\\test_username_profile"
|
||
|
- create_profile_basename_actual.stat.exists
|
||
|
|
||
|
- name: remove profile with specific base path
|
||
|
win_user_profile:
|
||
|
username: '{{ test_username }}'
|
||
|
state: absent
|
||
|
register: remove_profile_basename
|
||
|
|
||
|
- name: check if profile with specific base path was removed
|
||
|
win_stat:
|
||
|
path: C:\Users\test_username_profile
|
||
|
register: remove_profile_basename_actual
|
||
|
|
||
|
- name: assert remove profile with specific base path
|
||
|
assert:
|
||
|
that:
|
||
|
- remove_profile_basename is changed
|
||
|
- remove_profile_basename.path|lower == "c:\\users\\test_username_profile"
|
||
|
- not remove_profile_basename_actual.stat.exists
|
||
|
|
||
|
- name: create dummy profile folder
|
||
|
win_file:
|
||
|
path: C:\Users\{{ test_username }}
|
||
|
state: directory
|
||
|
|
||
|
- block:
|
||
|
- name: create profile folder with conflict (check mode)
|
||
|
win_user_profile:
|
||
|
username: '{{ test_username }}'
|
||
|
state: present
|
||
|
register: create_profile_conflict_check
|
||
|
check_mode: True
|
||
|
|
||
|
- name: get result of create profile folder with conflict (check mode)
|
||
|
win_stat:
|
||
|
path: C:\Users\{{ test_username }}.000
|
||
|
register: create_profile_conflict_actual_check
|
||
|
|
||
|
- name: assert create profile folder with conflict (check mode)
|
||
|
assert:
|
||
|
that:
|
||
|
- create_profile_conflict_check is changed
|
||
|
# The check mode path calc is dumb, doesn't check for conflicts
|
||
|
- create_profile_conflict_check.path|lower == "c:\\users\\" + test_username
|
||
|
- not create_profile_conflict_actual_check.stat.exists
|
||
|
|
||
|
- name: create profile folder with conflict
|
||
|
win_user_profile:
|
||
|
username: '{{ test_username }}'
|
||
|
state: present
|
||
|
register: create_profile_conflict
|
||
|
|
||
|
- name: get result of create profile with conflict
|
||
|
win_stat:
|
||
|
path: C:\Users\{{ test_username }}.000
|
||
|
register: create_profile_conflict_actual
|
||
|
|
||
|
- name: assert create profile folder with conflict
|
||
|
assert:
|
||
|
that:
|
||
|
- create_profile_conflict is changed
|
||
|
- create_profile_conflict.path|lower == "c:\\users\\" + test_username + ".000"
|
||
|
- create_profile_conflict_actual.stat.exists
|
||
|
|
||
|
- name: remove profile with conflict
|
||
|
win_user_profile:
|
||
|
username: '{{ test_username }}'
|
||
|
state: absent
|
||
|
register: remove_profile_conflict
|
||
|
|
||
|
- name: get result of profile folder after remove
|
||
|
win_stat:
|
||
|
path: C:\Users\{{ test_username }}.000
|
||
|
register: remove_profile_conflict_actual
|
||
|
|
||
|
- name: get result of dummy folder after remove
|
||
|
win_stat:
|
||
|
path: C:\Users\{{ test_username }}
|
||
|
register: remove_profile_conflict_dummy
|
||
|
|
||
|
- name: assert remove profile with conflict
|
||
|
assert:
|
||
|
that:
|
||
|
- remove_profile_conflict is changed
|
||
|
- remove_profile_conflict.path|lower == "c:\\users\\" + test_username + ".000"
|
||
|
- not remove_profile_conflict_actual.stat.exists
|
||
|
- remove_profile_conflict_dummy.stat.exists
|
||
|
|
||
|
always:
|
||
|
- name: remove dummy profile folder
|
||
|
win_file:
|
||
|
path: C:\Users\{{ test_username }}
|
||
|
state: absent
|
||
|
|
||
|
- name: create profile for deleted user by sid test
|
||
|
win_user_profile:
|
||
|
username: '{{ test_username_info.sid }}'
|
||
|
state: present
|
||
|
|
||
|
- name: delete user for deleted user with sid test
|
||
|
win_user:
|
||
|
name: '{{ test_username }}'
|
||
|
state: absent
|
||
|
|
||
|
- name: remove profile for remove profile by sid test
|
||
|
win_user_profile:
|
||
|
username: '{{ test_username_info.sid }}'
|
||
|
state: absent
|
||
|
register: remove_profile_deleted_sid
|
||
|
|
||
|
- name: check if profile was deleted for deleted user using a SID
|
||
|
win_stat:
|
||
|
path: C:\Users\{{ test_username }}
|
||
|
register: remove_profile_deleted_sid_actual
|
||
|
|
||
|
- name: assert remove profile for deleted user using a SID
|
||
|
assert:
|
||
|
that:
|
||
|
- remove_profile_deleted_sid is changed
|
||
|
- remove_profile_deleted_sid.path|lower == "c:\\users\\" + test_username
|
||
|
- not remove_profile_deleted_sid_actual.stat.exists
|
||
|
|
||
|
- name: recreate user for deleted user by name test
|
||
|
win_user:
|
||
|
name: '{{ test_username }}'
|
||
|
password: '{{ test_password }}'
|
||
|
state: present
|
||
|
register: test_orphan_user1
|
||
|
|
||
|
- name: create profile for deleted user by name test
|
||
|
win_user_profile:
|
||
|
username: '{{ test_username }}'
|
||
|
state: present
|
||
|
|
||
|
- name: delete user for remove profile by name test
|
||
|
win_user:
|
||
|
name: '{{ test_username }}'
|
||
|
state: absent
|
||
|
|
||
|
- name: remove profile for deleted user using a name
|
||
|
win_user_profile:
|
||
|
name: '{{ test_username }}'
|
||
|
state: absent
|
||
|
register: remove_profile_deleted_name
|
||
|
|
||
|
- name: check if profile was deleted for deleted user using a name
|
||
|
win_stat:
|
||
|
path: C:\Users\{{ test_username }}
|
||
|
register: remove_profile_deleted_name_actual
|
||
|
|
||
|
- name: assert remove profile for deleted user using a name
|
||
|
assert:
|
||
|
that:
|
||
|
- remove_profile_deleted_name is changed
|
||
|
- remove_profile_deleted_name.path|lower == "c:\\users\\" + test_username
|
||
|
- not remove_profile_deleted_name_actual.stat.exists
|
||
|
|
||
|
- name: remove profile for deleted user using a name (idempotent)
|
||
|
win_user_profile:
|
||
|
name: '{{ test_username }}'
|
||
|
state: absent
|
||
|
register: remove_profile_deleted_name_again
|
||
|
|
||
|
- name: assert remove profile for deleted user using a name (idempotent)
|
||
|
assert:
|
||
|
that:
|
||
|
- not remove_profile_deleted_name_again is changed
|
||
|
|
||
|
- name: recreate user for remove multiple user test
|
||
|
win_user:
|
||
|
name: '{{ test_username }}'
|
||
|
password: '{{ test_password }}'
|
||
|
state: present
|
||
|
register: test_orphan_user1
|
||
|
|
||
|
- name: create new profile for remove multiple user test
|
||
|
win_user_profile:
|
||
|
username: '{{ test_username }}'
|
||
|
state: present
|
||
|
register: orphan_user1_profile
|
||
|
|
||
|
- name: remove user 1 for remove multiple user test
|
||
|
win_user:
|
||
|
name: '{{ test_username }}'
|
||
|
state: absent
|
||
|
|
||
|
# win_file has issues with paths exceeding MAX_PATH, need to use rmdir instead
|
||
|
- name: remove profile folder for user 1
|
||
|
win_shell: rmdir /S /Q {{ orphan_user1_profile.path}}
|
||
|
args:
|
||
|
executable: cmd.exe
|
||
|
|
||
|
- name: create user 2 for remove multiple user test
|
||
|
win_user:
|
||
|
name: '{{ test_username }}'
|
||
|
password: '{{ test_password }}'
|
||
|
state: present
|
||
|
register: test_orphan_user2
|
||
|
|
||
|
- name: create new profile for orphan user 2
|
||
|
win_user_profile:
|
||
|
username: '{{ test_username }}'
|
||
|
state: present
|
||
|
register: orphan_user2_profile
|
||
|
|
||
|
- name: remove orphan user 2 for remove multiple user test
|
||
|
win_user:
|
||
|
name: '{{ test_username }}'
|
||
|
state: present
|
||
|
|
||
|
- name: fail to remove multiple profiles without flag
|
||
|
win_user_profile:
|
||
|
name: '{{ test_username }}'
|
||
|
state: absent
|
||
|
register: fail_remove_multiple
|
||
|
ignore_errors: True
|
||
|
|
||
|
- name: check if profile was removed
|
||
|
win_stat:
|
||
|
path: C:\Users\{{ test_username }}
|
||
|
register: fail_remove_multiple_actual
|
||
|
|
||
|
- name: assert that profile was not actually deleted
|
||
|
assert:
|
||
|
that:
|
||
|
- fail_remove_multiple.msg == "Found multiple profiles matching the path 'C:\\Users\\" + test_username + "', set 'remove_multiple=True' to remove all the profiles for this match"
|
||
|
- fail_remove_multiple_actual.stat.exists
|
||
|
|
||
|
- name: remove multiple profiles
|
||
|
win_user_profile:
|
||
|
name: '{{ test_username }}'
|
||
|
state: absent
|
||
|
remove_multiple: True
|
||
|
register: remove_multiple
|
||
|
|
||
|
- name: get result of remove multiple profiles
|
||
|
win_stat:
|
||
|
path: C:\Users\{{ test_username }}
|
||
|
register: remove_multiple_actual
|
||
|
|
||
|
- name: check that orphan user 1 reg profile has been removed
|
||
|
win_reg_stat:
|
||
|
path: HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\{{ test_orphan_user1.sid }}
|
||
|
register: remove_orphan1_actual
|
||
|
|
||
|
- name: check that orphan user 2 reg profile has been removed
|
||
|
win_reg_stat:
|
||
|
path: HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\{{ test_orphan_user2.sid }}
|
||
|
register: remove_orphan2_actual
|
||
|
|
||
|
- name: assert remove multiple profiles
|
||
|
assert:
|
||
|
that:
|
||
|
- remove_multiple is changed
|
||
|
- remove_multiple.path|lower == "c:\\users\\" + test_username
|
||
|
- not remove_multiple_actual.stat.exists
|
||
|
- not remove_orphan1_actual.exists
|
||
|
- not remove_orphan2_actual.exists
|