# Copyright: (c) 2019, Andrew Klychkov (@Andersson007) # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) # Preparation for tests: - name: postgresql_lang - install lang plperl become: yes package: name: "{{ item }}" state: present with_items: - postgresql-plperl - postgresql-plpython ############### # Do main tests # # Create language in check_mode: - name: postgresql_lang - create plperl in check_mode become_user: "{{ pg_user }}" become: yes postgresql_lang: db: postgres login_user: "{{ pg_user }}" name: plperl register: result ignore_errors: yes check_mode: yes - assert: that: - result.changed == true - result.queries == [] - name: postgresql_lang - check that lang doesn't exist after previous step, rowcount must be 0 become_user: "{{ pg_user }}" become: yes postgresql_query: db: postgres login_user: "{{ pg_user }}" query: "SELECT 1 FROM pg_language WHERE lanname = 'plperl'" register: result - assert: that: - result.rowcount == 0 # Create language: - name: postgresql_lang - create plperl become_user: "{{ pg_user }}" become: yes postgresql_lang: db: postgres login_user: "{{ pg_user }}" name: plperl register: result ignore_errors: yes - assert: that: - result.changed == true - result.queries == ['CREATE LANGUAGE "plperl"'] - name: postgresql_lang - check that lang exists after previous step become_user: "{{ pg_user }}" become: yes postgresql_query: db: postgres login_user: "{{ pg_user }}" query: "SELECT 1 FROM pg_language WHERE lanname = 'plperl'" register: result - assert: that: - result.rowcount == 1 # Drop language in check_mode: - name: postgresql_lang - drop plperl in check_mode become_user: "{{ pg_user }}" become: yes postgresql_lang: db: postgres login_user: "{{ pg_user }}" name: plperl state: absent register: result ignore_errors: yes check_mode: yes - assert: that: - result.changed == true - result.queries == [] - name: postgresql_lang - check that lang exists after previous step, rowcount must be 1 become_user: "{{ pg_user }}" become: yes postgresql_query: db: postgres login_user: "{{ pg_user }}" query: "SELECT 1 FROM pg_language WHERE lanname = 'plperl'" register: result - assert: that: - result.rowcount == 1 # Drop language: - name: postgresql_lang - drop plperl become_user: "{{ pg_user }}" become: yes postgresql_lang: db: postgres login_user: "{{ pg_user }}" name: plperl state: absent register: result ignore_errors: yes - assert: that: - result.changed == true - result.queries == ['DROP LANGUAGE "plperl"'] - name: postgresql_lang - check that lang doesn't exist after previous step, rowcount must be 0 become_user: "{{ pg_user }}" become: yes postgresql_query: db: postgres login_user: "{{ pg_user }}" query: "SELECT 1 FROM pg_language WHERE lanname = 'plperl'" register: result - assert: that: - result.rowcount == 0 # Check fail_on_drop yes - name: postgresql_lang - drop c language to check fail_on_drop yes become_user: "{{ pg_user }}" become: yes postgresql_lang: db: postgres login_user: "{{ pg_user }}" name: c state: absent fail_on_drop: yes register: result ignore_errors: yes - assert: that: - result.failed == true # Check fail_on_drop no - name: postgresql_lang - drop c language to check fail_on_drop no become_user: "{{ pg_user }}" become: yes postgresql_lang: db: postgres login_user: "{{ pg_user }}" name: c state: absent fail_on_drop: no register: result ignore_errors: yes - assert: that: - result.failed == false # Create trusted language: - name: postgresql_lang - create plpythonu become_user: "{{ pg_user }}" become: yes postgresql_lang: db: postgres login_user: "{{ pg_user }}" name: plpythonu trust: yes force_trust: yes register: result ignore_errors: yes - assert: that: - result.changed == true - result.queries == ['CREATE TRUSTED LANGUAGE "plpythonu"', "UPDATE pg_language SET lanpltrusted = 'True' WHERE lanname = 'plpythonu'"] - name: postgresql_lang - check that lang exists and it's trusted after previous step become_user: "{{ pg_user }}" become: yes postgresql_query: db: postgres login_user: "{{ pg_user }}" query: "SELECT 1 FROM pg_language WHERE lanname = 'plpythonu' AND lanpltrusted = 't'" register: result - assert: that: - result.rowcount == 1 # Drop language cascade, tests of aliases: - name: postgresql_lang - drop plpythonu cascade become_user: "{{ pg_user }}" become: yes postgresql_lang: login_db: postgres login_user: "{{ pg_user }}" login_port: 5432 lang: plpythonu state: absent cascade: yes register: result ignore_errors: yes - assert: that: - result.changed == true - result.queries == ['DROP LANGUAGE "plpythonu" CASCADE'] - name: postgresql_lang - check that lang doesn't exist after previous step, rowcount must be 0 become_user: "{{ pg_user }}" become: yes postgresql_query: db: postgres login_user: "{{ pg_user }}" query: "SELECT 1 FROM pg_language WHERE lanname = 'plpythonu'" register: result - assert: that: - result.rowcount == 0