You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ansible/test/integration/targets/unarchive/tasks/test_mode.yml

175 lines
4.9 KiB
YAML

- name: create our unarchive destination
file:
path: '{{remote_tmp_dir}}/test-unarchive-tar-gz'
state: directory
- name: test invalid modes
unarchive:
src: "{{ remote_tmp_dir }}/test-unarchive.tar.gz"
dest: "{{ remote_tmp_dir }}/test-unarchive-tar-gz"
remote_src: yes
mode: "{{ item }}"
list_files: True
register: unarchive_mode_errors
ignore_errors: yes
loop:
- u=foo
- foo=r
- ufoo=r
- abc=r
- ao=r
- oa=r
- assert:
that:
- item.failed
- "'bad symbolic permission for mode: ' + item.item == item.details"
loop: "{{ unarchive_mode_errors.results }}"
- name: unarchive and set mode to 0600, directories 0700
unarchive:
src: "{{ remote_tmp_dir }}/test-unarchive.tar.gz"
dest: "{{ remote_tmp_dir }}/test-unarchive-tar-gz"
remote_src: yes
mode: "u+rwX,g-rwx,o-rwx"
list_files: True
register: unarchive06
- name: Test that the file modes were changed
stat:
path: "{{ remote_tmp_dir }}/test-unarchive-tar-gz/foo-unarchive.txt"
register: unarchive06_stat
- name: Test that the file modes were changed
assert:
that:
- "unarchive06.changed == true"
- "unarchive06_stat.stat.mode == '0600'"
# Verify that file list is generated
- "'files' in unarchive06"
- "{{unarchive06['files']| length}} == 1"
- "'foo-unarchive.txt' in unarchive06['files']"
- name: remove our tar.gz unarchive destination
file:
path: '{{ remote_tmp_dir }}/test-unarchive-tar-gz'
state: absent
- name: create our unarchive destination
file:
path: '{{remote_tmp_dir}}/test-unarchive-tar-gz'
state: directory
- name: unarchive over existing extraction and set mode to 0644
unarchive:
src: "{{ remote_tmp_dir }}/test-unarchive.tar.gz"
dest: "{{ remote_tmp_dir }}/test-unarchive-tar-gz"
remote_src: yes
mode: "u+rwX,g-wx,o-wx,g+r,o+r"
register: unarchive06_2
- name: Test that the file modes were changed
stat:
path: "{{ remote_tmp_dir }}/test-unarchive-tar-gz/foo-unarchive.txt"
register: unarchive06_2_stat
- debug:
var: unarchive06_2_stat.stat.mode
- name: Test that the files were changed
assert:
that:
- "unarchive06_2.changed == true"
- "unarchive06_2_stat.stat.mode == '0644'"
- name: Repeat the last request to verify no changes
unarchive:
src: "{{ remote_tmp_dir }}/test-unarchive.tar.gz"
dest: "{{ remote_tmp_dir }}/test-unarchive-tar-gz"
remote_src: yes
mode: "u+rwX-x,g-wx,o-wx,g+r,o+r"
list_files: True
register: unarchive07
- name: Test that the files were not changed
assert:
that:
- "unarchive07.changed == false"
# Verify that file list is generated
- "'files' in unarchive07"
- "{{unarchive07['files']| length}} == 1"
- "'foo-unarchive.txt' in unarchive07['files']"
- name: remove our tar.gz unarchive destination
file:
path: '{{ remote_tmp_dir }}/test-unarchive-tar-gz'
state: absent
- name: create our unarchive destination
file:
path: '{{remote_tmp_dir}}/test-unarchive-zip'
state: directory
- name: unarchive and set mode to 0601, directories 0700
unarchive:
src: "{{ remote_tmp_dir }}/test-unarchive.zip"
dest: "{{ remote_tmp_dir }}/test-unarchive-zip"
remote_src: yes
mode: "u+rwX-x,g-rwx,o=x"
list_files: True
register: unarchive08
- name: Test that the file modes were changed
stat:
path: "{{ remote_tmp_dir }}/test-unarchive-zip/foo-unarchive.txt"
register: unarchive08_stat
- name: Test that the file modes were changed
assert:
that:
- "unarchive08.changed == true"
- "unarchive08_stat.stat.mode == '0601'"
# Verify that file list is generated
- "'files' in unarchive08"
- "{{unarchive08['files']| length}} == 3"
- "'foo-unarchive.txt' in unarchive08['files']"
- "'foo-unarchive-777.txt' in unarchive08['files']"
- "'FOO-UNAR.TXT' in unarchive08['files']"
- name: unarchive zipfile a second time and set mode to 0601, directories 0700
unarchive:
src: "{{ remote_tmp_dir }}/test-unarchive.zip"
dest: "{{ remote_tmp_dir }}/test-unarchive-zip"
remote_src: yes
mode: "u+rwX-x,g-rwx,o=x"
list_files: True
register: unarchive08
- name: Test that the file modes were not changed
stat:
path: "{{ remote_tmp_dir }}/test-unarchive-zip/foo-unarchive.txt"
register: unarchive08_stat
- debug:
var: unarchive08
- debug:
var: unarchive08_stat
- name: Test that the files did not change
assert:
that:
- "unarchive08.changed == false"
- "unarchive08_stat.stat.mode == '0601'"
# Verify that file list is generated
- "'files' in unarchive08"
- "{{unarchive08['files']| length}} == 3"
- "'foo-unarchive.txt' in unarchive08['files']"
- "'foo-unarchive-777.txt' in unarchive08['files']"
- "'FOO-UNAR.TXT' in unarchive08['files']"
- name: remove our zip unarchive destination
file:
path: '{{ remote_tmp_dir }}/test-unarchive-zip'
state: absent