community.mysql/tests/integration/targets/test_mysql_info/tasks/main.yml
2023-10-11 16:51:42 +02:00

225 lines
6.4 KiB
YAML

---
####################################################################
# WARNING: These are designed specifically for Ansible tests #
# and should not be used as examples of how to write Ansible roles #
####################################################################
# Test code for mysql_info module
# Copyright: (c) 2019, Andrew Klychkov (@Andersson007) <aaklychkov@mail.ru>
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
###################
# Prepare for tests
#
- vars:
mysql_parameters: &mysql_params
login_user: '{{ mysql_user }}'
login_password: '{{ mysql_password }}'
login_host: '{{ mysql_host }}'
login_port: '{{ mysql_primary_port }}'
block:
# # Create default MySQL config file with credentials
# - name: mysql_info - create default config file
# template:
# src: my.cnf.j2
# dest: "{{ playbook_dir }}/root/.my.cnf"
# mode: '0400'
# # Create non-default MySQL config file with credentials
# - name: mysql_info - create non-default config file
# template:
# src: my.cnf.j2
# dest: "{{ playbook_dir }}/root/non-default_my.cnf"
# mode: '0400'
# ###############
# # Do tests
# # Access by default cred file
# - name: mysql_info - collect default cred file
# mysql_info:
# login_user: '{{ mysql_user }}'
# login_host: '{{ mysql_host }}'
# login_port: '{{ mysql_primary_port }}'
# config_file: "{{ playbook_dir }}/root/.my.cnf"
# register: result
# - assert:
# that:
# - result is not changed
# - db_version in result.version.full
# - result.settings != {}
# - result.global_status != {}
# - result.databases != {}
# - result.engines != {}
# - result.users != {}
# - name: mysql_info - Test connector informations display
# ansible.builtin.import_tasks:
# file: connector_info.yml
# # Access by non-default cred file
# - name: mysql_info - check non-default cred file
# mysql_info:
# login_user: '{{ mysql_user }}'
# login_host: '{{ mysql_host }}'
# login_port: '{{ mysql_primary_port }}'
# config_file: "{{ playbook_dir }}/root/non-default_my.cnf"
# register: result
# - assert:
# that:
# - result is not changed
# - result.version != {}
# # Remove cred files
# - name: mysql_info - remove cred files
# file:
# path: '{{ item }}'
# state: absent
# loop:
# - "{{ playbook_dir }}/.my.cnf"
# - "{{ playbook_dir }}/non-default_my.cnf"
# # Access with password
# - name: mysql_info - check access with password
# mysql_info:
# <<: *mysql_params
# register: result
# - assert:
# that:
# - result is not changed
# - result.version != {}
# # Test excluding
# - name: Collect all info except settings and users
# mysql_info:
# <<: *mysql_params
# filter: '!settings,!users'
# register: result
# - assert:
# that:
# - result is not changed
# - result.version != {}
# - result.global_status != {}
# - result.databases != {}
# - result.engines != {}
# - result.settings is not defined
# - result.users is not defined
# # Test including
# - name: Collect info only about version and databases
# mysql_info:
# <<: *mysql_params
# filter:
# - version
# - databases
# register: result
# - assert:
# that:
# - result is not changed
# - result.version != {}
# - result.databases != {}
# - result.engines is not defined
# - result.settings is not defined
# - result.global_status is not defined
# - result.users is not defined
# # Test exclude_fields: db_size
# # 'unsupported' element is passed to check that an unsupported value
# # won't break anything (will be ignored regarding to the module's documentation).
# - name: Collect info about databases excluding their sizes
# mysql_info:
# <<: *mysql_params
# filter:
# - databases
# exclude_fields:
# - db_size
# - unsupported
# register: result
# - assert:
# that:
# - result is not changed
# - result.databases != {}
# - result.databases.mysql == {}
# ########################################################
# # Issue #65727, empty databases must be in returned dict
# #
# - name: Create empty database acme
# mysql_db:
# <<: *mysql_params
# name: acme
# - name: Collect info about databases
# mysql_info:
# <<: *mysql_params
# filter:
# - databases
# return_empty_dbs: true
# register: result
# # Check acme is in returned dict
# - assert:
# that:
# - result is not changed
# - result.databases.acme.size == 0
# - result.databases.mysql != {}
# - name: Collect info about databases excluding their sizes
# mysql_info:
# <<: *mysql_params
# filter:
# - databases
# exclude_fields:
# - db_size
# return_empty_dbs: true
# register: result
# # Check acme is in returned dict
# - assert:
# that:
# - result is not changed
# - result.databases.acme == {}
# - result.databases.mysql == {}
# - name: Remove acme database
# mysql_db:
# <<: *mysql_params
# name: acme
# state: absent
# - include_tasks: issue-28.yml
# # https://github.com/ansible-collections/community.mysql/issues/204
# - name: Create database containing only views
# mysql_db:
# <<: *mysql_params
# name: allviews
# - name: Create view
# mysql_query:
# <<: *mysql_params
# login_db: allviews
# query: 'CREATE VIEW v_today (today) AS SELECT CURRENT_DATE'
# - name: Fetch info
# mysql_info:
# <<: *mysql_params
# register: result
# - name: Check
# assert:
# that:
# - result.databases.allviews.size == 0
- name: Inport tasks file to tests users_privs filter
ansible.builtin.import_tasks:
file: filter_users_privs.yml