1
0
Fork 0
mirror of https://github.com/ansible-collections/community.general.git synced 2024-09-14 20:13:21 +02:00
community.general/tests/integration/targets/ssh_config/tasks/main.yml
Anton Nikolaev 1a4af9bfc3
Reduce stormssh searches based on host (#2568)
* Reduce stormssh searches based on host

Due to the stormssh searches in the whole config values, we need to reduce the search results based on the full matching of the hosts

* Removed whitespaces in the blank line

* Added changelog fragment and tests for the fix.

* Added newline at the end of the changelog fragment

* Added newline at the end of the tests

* Fixed bug with name in tests

* Changed assertion for the existing host

* Update changelogs/fragments/2568-ssh_config-reduce-stormssh-searches-based-on-host.yml

Co-authored-by: Felix Fontein <felix@fontein.de>

* Adjusted tests

* New line at the end of the tests

Co-authored-by: Anton Nikolaev <anikolaev@apple.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
2021-06-05 14:53:02 +02:00

221 lines
5.9 KiB
YAML

# Test code for ssh_config module
# Copyright: (c) 2021, Abhijeet Kasurde (@Akasurde) <akasurde@redhat.com>
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
- name: Install required libs
pip:
name: stormssh
state: present
extra_args: "-c {{ remote_constraints }}"
- set_fact:
output_dir_test: '{{ output_dir }}/test_ssh_config'
- set_fact:
ssh_config_test: '{{ output_dir_test }}/ssh_config_test'
ssh_private_key: '{{ output_dir_test }}/fake_id_rsa'
- name: create a temporary directory
file:
path: "{{ output_dir_test }}"
state: directory
- name: Copy sample config file
copy:
src: 'files/ssh_config_test'
dest: '{{ ssh_config_test }}'
- name: Copy sample private key file
copy:
src: 'files/fake_id_rsa'
dest: '{{ ssh_private_key }}'
- name: Fail for required argument
community.general.ssh_config:
ssh_config_file: "{{ ssh_config_test }}"
ignore_errors: yes
register: host_required
- name: Check if ssh_config fails for required parameter host
assert:
that:
- not host_required.changed
- name: Add a host in check mode
community.general.ssh_config:
ssh_config_file: "{{ ssh_config_test }}"
host: "example.com"
hostname: github.com
identity_file: '{{ ssh_private_key }}'
port: '2223'
state: present
register: host_add
check_mode: yes
- name: Check if changes are made in check mode
assert:
that:
- host_add.changed
- "'example.com' in host_add.hosts_added"
- host_add.hosts_changed is defined
- host_add.hosts_removed is defined
- name: Add a host
community.general.ssh_config:
ssh_config_file: "{{ ssh_config_test }}"
host: "example.com"
hostname: github.com
identity_file: '{{ ssh_private_key }}'
port: '2223'
state: present
register: host_add
- name: Check if changes are made
assert:
that:
- host_add.changed
- "'example.com' in host_add.hosts_added"
- host_add.hosts_changed is defined
- host_add.hosts_removed is defined
- name: Add same host again for idempotency
community.general.ssh_config:
ssh_config_file: "{{ ssh_config_test }}"
host: "example.com"
hostname: github.com
identity_file: '{{ ssh_private_key }}'
port: '2223'
state: present
register: host_add_again
- name: Check for idempotency
assert:
that:
- not host_add_again.changed
- host_add.hosts_changed is defined
- host_add.hosts_removed is defined
- host_add.hosts_added is defined
- name: Update host
community.general.ssh_config:
ssh_config_file: "{{ ssh_config_test }}"
host: "example.com"
hostname: github.com
identity_file: '{{ ssh_private_key }}'
port: '2224'
state: present
register: host_update
- name: Check for update operation
assert:
that:
- host_update.changed
- host_update.hosts_changed is defined
- "'example.com' in host_update.hosts_changed"
- host_update.hosts_removed is defined
- host_update.hosts_added is defined
- host_update.hosts_change_diff is defined
- name: Update host again
community.general.ssh_config:
ssh_config_file: "{{ ssh_config_test }}"
host: "example.com"
hostname: github.com
identity_file: '{{ ssh_private_key }}'
port: '2224'
state: present
register: host_update
- name: Check update operation for idempotency
assert:
that:
- not host_update.changed
- host_update.hosts_changed is defined
- host_update.hosts_removed is defined
- host_update.hosts_added is defined
- host_update.hosts_change_diff is defined
- name: Delete a host
community.general.ssh_config:
ssh_config_file: "{{ ssh_config_test }}"
host: "example.com"
state: absent
register: host_delete
- name: Check if changes are made
assert:
that:
- host_delete.changed
- "'example.com' in host_delete.hosts_removed"
- host_delete.hosts_changed is defined
- host_delete.hosts_added is defined
- name: Delete same host again for idempotency
community.general.ssh_config:
ssh_config_file: "{{ ssh_config_test }}"
host: "example.com"
hostname: github.com
state: absent
register: host_delete_again
- name: Check for idempotency
assert:
that:
- not host_delete_again.changed
- host_delete_again.hosts_changed is defined
- host_delete_again.hosts_removed is defined
- host_delete_again.hosts_added is defined
- name: Check if user and ssh_config_file are mutually exclusive
community.general.ssh_config:
ssh_config_file: "{{ ssh_config_test }}"
user: root
host: "example.com"
hostname: github.com
identity_file: '{{ ssh_private_key }}'
port: '2223'
state: present
register: mut_ex
ignore_errors: yes
- name: Check mutual exclusive test - user and ssh_config_file
assert:
that:
- not mut_ex.changed
- "'parameters are mutually exclusive' in mut_ex.msg"
- name: Add a full name host
community.general.ssh_config:
ssh_config_file: "{{ ssh_config_test }}"
host: "full_name"
hostname: full_name.com
identity_file: '{{ ssh_private_key }}'
port: '2223'
state: present
register: full_name
- name: Check if changes are made
assert:
that:
- full_name is changed
- full_name.hosts_added == ["full_name"]
- full_name.hosts_changed == []
- full_name.hosts_removed == []
- name: Add a host with name which is contained in full name host
community.general.ssh_config:
ssh_config_file: "{{ ssh_config_test }}"
host: "full"
hostname: full.com
identity_file: '{{ ssh_private_key }}'
port: '2223'
state: present
register: short_name
- name: Check that short name host is added and full name host is not updated
assert:
that:
- short_name is changed
- short_name.hosts_added == ["full"]
- short_name.hosts_changed == []
- short_name.hosts_removed == []