--- #################################################################### # 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) # 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