ansible/test/integration/targets/unarchive/tasks/test_unprivileged_user.yml
Matt Martz 7c60dadb9a
Updates to Integration tests to pass against Alpine ()
* Start of alpine testing

* More updates

* Add forgotten file

* remove debug

* Add alpine3

* equal

* group 4

* group 4

* group 5

* Try to decrease test length

* libuser only available in testing

* Remove debug

* Make loops target work on hosts without gnu date

* Enable alpine testing

* ci_complete

* Don't specify uid for creating test user

* ci_complete

* Re-sort docker completion

* use newer container image

* ci_complete

* fix indentation

Co-authored-by: Matt Clay <matt@mystile.com>

Co-authored-by: Matt Clay <matt@mystile.com>
2020-08-07 14:28:10 -05:00

85 lines
2.6 KiB
YAML

- name: Create unarchivetest1 user
user:
name: unarchivetest1
group: "{{ group_table[ansible_facts['distribution']] | default(omit) }}"
register: user
vars:
group_table:
MacOSX: staff
- name: Test unarchiving twice as unprivileged user
become: yes
become_user: unarchivetest1
block:
- name: prep our file
copy:
src: foo.txt
dest: "{{ user.home }}/foo-unarchive.txt"
mode: preserve
- name: Prep a zip file as unarchivetest1 user
shell: zip unarchivetest1-unarchive.zip foo-unarchive.txt
args:
chdir: "{{ user.home }}"
creates: "{{ user.home }}/unarchivetest1-unarchive.zip"
- name: create our zip unarchive destination as unarchivetest1 user
file:
path: "{{ user.home }}/unarchivetest1-unarchive-zip"
state: directory
- name: unarchive a zip file as unarchivetest1 user
unarchive:
src: "{{ user.home }}/unarchivetest1-unarchive.zip"
dest: "{{ user.home }}/unarchivetest1-unarchive-zip"
remote_src: yes
list_files: True
register: unarchive10
- name: stat the unarchived file
stat:
path: "{{ user.home }}/unarchivetest1-unarchive-zip/foo-unarchive.txt"
register: archive_path
- name: verify that the tasks performed as expected
assert:
that:
- unarchive10 is changed
# Verify that file list is generated
- "'files' in unarchive10"
- "{{unarchive10['files']| length}} == 1"
- "'foo-unarchive.txt' in unarchive10['files']"
- archive_path.stat.exists
- name: repeat the last request to verify no changes
unarchive:
src: "{{ user.home }}/unarchivetest1-unarchive.zip"
dest: "{{ user.home }}/unarchivetest1-unarchive-zip"
remote_src: yes
list_files: True
register: unarchive10b
# Due to a bug in the date calculation used to determine if a change
# was made or not, this check is unreliable. This seems to only happen on
# Ubuntu 1604.
# https://github.com/ansible/ansible/blob/58145dff9ca1a713f8ed295a0076779a91c41cba/lib/ansible/modules/unarchive.py#L472-L474
- name: Check that unarchiving again reports no change
assert:
that:
- unarchive10b is not changed
ignore_errors: yes
always:
- name: remove our unarchivetest1 user and files
user:
name: unarchivetest1
state: absent
remove: yes
become: no
- name: Remove user home directory on macOS
file:
path: /Users/unarchivetest1
state: absent
become: no
when: ansible_facts.distribution == 'MacOSX'