diff --git a/tests/integration/targets/mysql_info/tasks/main.yml b/tests/integration/targets/mysql_info/tasks/main.yml index cc79f51a67..f413447787 100644 --- a/tests/integration/targets/mysql_info/tasks/main.yml +++ b/tests/integration/targets/mysql_info/tasks/main.yml @@ -1,3 +1,12 @@ +# Test code for mysql_info module +# Copyright: (c) 2019, Andrew Klychkov (@Andersson007) +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) + +################### +# Prepare for tests +# + +# Create role for tests - name: mysql_info - create mysql user {{ user_name }} mysql_user: name: '{{ user_name }}' @@ -5,20 +14,30 @@ state: present priv: '*.*:ALL' login_unix_socket: '{{ mysql_socket }}' + +# Create default MySQL config file with credentials - name: mysql_info - create default config file template: src: my.cnf.j2 dest: /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: /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: '{{ user_name }}' register: result + - assert: that: - result.changed == false @@ -28,15 +47,20 @@ - result.databases != {} - result.engines != {} - result.users != {} + +# Access by non-default cred file - name: mysql_info - check non-default cred file mysql_info: login_user: '{{ user_name }}' config_file: /root/non-default_my.cnf register: result + - assert: that: - result.changed == false - result.version != {} + +# Remove cred files - name: mysql_info - remove cred files file: path: '{{ item }}' @@ -44,21 +68,27 @@ with_items: - /root/.my.cnf - /root/non-default_my.cnf + +# Access with password - name: mysql_info - check access with password mysql_info: login_user: '{{ user_name }}' login_password: '{{ user_pass }}' register: result + - assert: that: - result.changed == false - result.version != {} + +# Test excluding - name: Collect all info except settings and users mysql_info: login_user: '{{ user_name }}' login_password: '{{ user_pass }}' filter: '!settings,!users' register: result + - assert: that: - result.changed == false @@ -68,6 +98,8 @@ - result.engines != {} - result.settings is not defined - result.users is not defined + +# Test including - name: Collect info only about version and databases mysql_info: login_user: '{{ user_name }}' @@ -76,6 +108,7 @@ - version - databases register: result + - assert: that: - result.changed == false @@ -85,6 +118,10 @@ - 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: login_user: '{{ user_name }}' @@ -95,16 +132,22 @@ - db_size - unsupported register: result + - assert: that: - result.changed == false - result.databases != {} - result.databases.mysql == {} + +######################################################## +# Issue #65727, empty databases must be in returned dict +# - name: Create empty database acme mysql_db: login_user: '{{ user_name }}' login_password: '{{ user_pass }}' name: acme + - name: Collect info about databases mysql_info: login_user: '{{ user_name }}' @@ -113,11 +156,14 @@ - databases return_empty_dbs: true register: result + +# Check acme is in returned dict - assert: that: - result.changed == false - result.databases.acme.size == 0 - result.databases.mysql != {} + - name: Collect info about databases excluding their sizes mysql_info: login_user: '{{ user_name }}' @@ -128,11 +174,14 @@ - db_size return_empty_dbs: true register: result + +# Check acme is in returned dict - assert: that: - result.changed == false - result.databases.acme == {} - result.databases.mysql == {} + - name: Remove acme database mysql_db: login_user: '{{ user_name }}'