Adding integration tests for testing the 'mode' arg of the apt_repository module
This commit is contained in:
Tim Rupp 2019-06-25 20:23:38 -07:00 committed by GitHub
parent d5542afd97
commit 46214c9ef4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 142 additions and 0 deletions

View file

@ -18,3 +18,8 @@
- include: 'apt.yml' - include: 'apt.yml'
when: ansible_distribution in ('Ubuntu') when: ansible_distribution in ('Ubuntu')
- include: mode.yaml
when: ansible_distribution in ('Ubuntu')
tags:
- test_apt_repository_mode

View file

@ -0,0 +1,130 @@
---
# These tests are likely slower than they should be, since each
# invocation of apt_repository seems to end up querying for
# lots (all?) configured repos.
- set_fact:
test_repo_spec: "deb http://apt.postgresql.org/pub/repos/apt/ {{ ansible_distribution_release }}-pgdg main"
test_repo_path: /etc/apt/sources.list.d/apt_postgresql_org_pub_repos_apt.list
- include: mode_cleanup.yaml
- name: Add GPG key to verify signatures
apt_key:
id: 7FCC7D46ACCC4CF8
keyserver: keyserver.ubuntu.com
- name: Mode specified as yaml literal 0600
apt_repository:
repo: "{{ test_repo_spec }}"
state: present
mode: 0600
register: mode_given_results
- name: Gather mode_given_as_literal_yaml stat
stat:
path: "{{ test_repo_path }}"
register: mode_given_yaml_literal_0600
- name: Show mode_given_yaml_literal_0600
debug:
var: mode_given_yaml_literal_0600
- include: mode_cleanup.yaml
- name: Assert mode_given_yaml_literal_0600 is correct
assert:
that: "mode_given_yaml_literal_0600.stat.mode == '0600'"
- name: No mode specified
apt_repository:
repo: "{{ test_repo_spec }}"
state: present
register: no_mode_results
- name: Gather no mode stat
stat:
path: "{{ test_repo_path }}"
register: no_mode_stat
- name: Show no mode stat
debug:
var: no_mode_stat
- include: mode_cleanup.yaml
- name: Assert no_mode_stat is correct
assert:
that: "no_mode_stat.stat.mode == '0644'"
- name: Mode specified as string 0600
apt_repository:
repo: "{{ test_repo_spec }}"
state: present
mode: "0600"
register: mode_given_string_results
- name: Gather mode_given_string stat
stat:
path: "{{ test_repo_path }}"
register: mode_given_string_stat
- name: Show mode_given_string_stat
debug:
var: mode_given_string_stat
- include: mode_cleanup.yaml
- name: Mode specified as string 600
apt_repository:
repo: "{{ test_repo_spec }}"
state: present
mode: "600"
register: mode_given_string_600_results
- name: Gather mode_given_600_string stat
stat:
path: "{{ test_repo_path }}"
register: mode_given_string_600_stat
- name: Show mode_given_string_stat
debug:
var: mode_given_string_600_stat
- include: mode_cleanup.yaml
- name: Assert mode is correct
assert:
that: "mode_given_string_600_stat.stat.mode == '0600'"
- name: Mode specified as yaml literal 600
apt_repository:
repo: "{{ test_repo_spec }}"
state: present
mode: 600
register: mode_given_short_results
- name: Gather mode_given_yaml_literal_600 stat
stat:
path: "{{ test_repo_path }}"
register: mode_given_yaml_literal_600
- name: Show mode_given_yaml_literal_600
debug:
var: mode_given_yaml_literal_600
- include: mode_cleanup.yaml
# a literal 600 as the mode will fail currently, in the sense that it
# doesn't guess and consider 600 and 0600 to be the same, and will instead
# intepret literal 600 as the decimal 600 (and thereby octal 1130).
# The literal 0600 can be interpreted as octal correctly. Note that
# a decimal 644 is octal 420. The default perm is 0644 so a mis intrpretation
# of 644 was previously resulting in a default file mode of 0420.
# 'mode: 600' is likely not what a user meant but there isnt enough info
# to determine that. Note that a string arg of '600' will be intrepeted as 0600.
# See https://github.com/ansible/ansible/issues/16370
- name: Assert mode_given_yaml_literal_600 is correct
assert:
that: "mode_given_yaml_literal_600.stat.mode == '1130'"

View file

@ -0,0 +1,7 @@
---
# tasks to cleanup after creating a repo file, specifically for testing the 'mode' arg
- name: Delete existing repo
file:
path: "{{ test_repo_path }}"
state: absent