mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-07-22 21:00:22 -07:00
Initial commit
This commit is contained in:
commit
aebc1b03fd
4861 changed files with 812621 additions and 0 deletions
4
tests/integration/targets/postgresql_lang/aliases
Normal file
4
tests/integration/targets/postgresql_lang/aliases
Normal file
|
@ -0,0 +1,4 @@
|
|||
destructive
|
||||
shippable/posix/group4
|
||||
skip/aix
|
||||
skip/osx
|
2
tests/integration/targets/postgresql_lang/meta/main.yml
Normal file
2
tests/integration/targets/postgresql_lang/meta/main.yml
Normal file
|
@ -0,0 +1,2 @@
|
|||
dependencies:
|
||||
- setup_postgresql_db
|
20
tests/integration/targets/postgresql_lang/tasks/main.yml
Normal file
20
tests/integration/targets/postgresql_lang/tasks/main.yml
Normal file
|
@ -0,0 +1,20 @@
|
|||
- name: Include distribution specific variables
|
||||
include_vars: "{{ lookup('first_found', params) }}"
|
||||
vars:
|
||||
params:
|
||||
files:
|
||||
- "{{ ansible_facts.distribution }}-{{ ansible_facts.distribution_major_version }}.yml"
|
||||
- default.yml
|
||||
paths:
|
||||
- vars
|
||||
|
||||
# Only run on CentOS 7 because there is a stack trace on CentOS 8 because the module
|
||||
# is looking for the incorrect version of plpython.
|
||||
# https://gist.github.com/samdoran/8fc1b4ae834d3e66d1895d087419b8d8
|
||||
- name: Initial CI tests of postgresql_lang module
|
||||
when:
|
||||
- ansible_facts.distribution == 'CentOS'
|
||||
- ansible_facts.distribution_major_version is version ('7', '==')
|
||||
block:
|
||||
- include_tasks: postgresql_lang_initial.yml
|
||||
- include_tasks: postgresql_lang_add_owner_param.yml
|
|
@ -0,0 +1,196 @@
|
|||
# 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)
|
||||
|
||||
- vars:
|
||||
test_user1: alice
|
||||
test_user2: bob
|
||||
test_lang: plperl
|
||||
non_existent_role: fake_role
|
||||
task_parameters: &task_parameters
|
||||
become_user: '{{ pg_user }}'
|
||||
become: yes
|
||||
register: result
|
||||
pg_parameters: &pg_parameters
|
||||
login_user: '{{ pg_user }}'
|
||||
login_db: postgres
|
||||
|
||||
block:
|
||||
- name: Create roles for tests
|
||||
<<: *task_parameters
|
||||
postgresql_user:
|
||||
<<: *pg_parameters
|
||||
name: '{{ item }}'
|
||||
loop:
|
||||
- '{{ test_user1 }}'
|
||||
- '{{ test_user2 }}'
|
||||
|
||||
- name: Create lang with owner in check_mode
|
||||
<<: *task_parameters
|
||||
postgresql_lang:
|
||||
<<: *pg_parameters
|
||||
name: '{{ test_lang }}'
|
||||
owner: '{{ test_user1 }}'
|
||||
check_mode: yes
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- result is changed
|
||||
- result.queries == []
|
||||
|
||||
- name: Check that nothing was actually changed
|
||||
<<: *task_parameters
|
||||
postgresql_query:
|
||||
<<: *pg_parameters
|
||||
query: >
|
||||
SELECT r.rolname FROM pg_language l
|
||||
JOIN pg_roles r ON l.lanowner = r.oid
|
||||
WHERE l.lanname = '{{ test_lang }}'
|
||||
AND r.rolname = '{{ test_user1 }}'
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- result.rowcount == 0
|
||||
|
||||
- name: Create lang with owner
|
||||
<<: *task_parameters
|
||||
postgresql_lang:
|
||||
<<: *pg_parameters
|
||||
name: '{{ test_lang }}'
|
||||
owner: '{{ test_user1 }}'
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- result is changed
|
||||
- result.queries == ['CREATE LANGUAGE "{{ test_lang }}"', 'ALTER LANGUAGE "{{ test_lang }}" OWNER TO {{ test_user1 }}']
|
||||
|
||||
- name: Check
|
||||
<<: *task_parameters
|
||||
postgresql_query:
|
||||
<<: *pg_parameters
|
||||
query: >
|
||||
SELECT r.rolname FROM pg_language l
|
||||
JOIN pg_roles r ON l.lanowner = r.oid
|
||||
WHERE l.lanname = '{{ test_lang }}'
|
||||
AND r.rolname = '{{ test_user1 }}'
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- result.rowcount == 1
|
||||
|
||||
- name: Change lang owner in check_mode
|
||||
<<: *task_parameters
|
||||
postgresql_lang:
|
||||
<<: *pg_parameters
|
||||
name: '{{ test_lang }}'
|
||||
owner: '{{ test_user2 }}'
|
||||
check_mode: yes
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- result is changed
|
||||
- result.queries == ['ALTER LANGUAGE "{{ test_lang }}" OWNER TO {{ test_user2 }}']
|
||||
|
||||
- name: Check that nothing was actually changed
|
||||
<<: *task_parameters
|
||||
postgresql_query:
|
||||
<<: *pg_parameters
|
||||
query: >
|
||||
SELECT r.rolname FROM pg_language l
|
||||
JOIN pg_roles r ON l.lanowner = r.oid
|
||||
WHERE l.lanname = '{{ test_lang }}'
|
||||
AND r.rolname = '{{ test_user2 }}'
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- result.rowcount == 0
|
||||
|
||||
- name: Change lang owner
|
||||
<<: *task_parameters
|
||||
postgresql_lang:
|
||||
<<: *pg_parameters
|
||||
name: '{{ test_lang }}'
|
||||
owner: '{{ test_user2 }}'
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- result is changed
|
||||
# TODO: the first elem of the returned list below
|
||||
# looks like a bug, not related with the option owner, needs to be checked
|
||||
- result.queries == ["UPDATE pg_language SET lanpltrusted = false WHERE lanname = '{{ test_lang }}'", 'ALTER LANGUAGE "{{ test_lang }}" OWNER TO {{ test_user2 }}']
|
||||
|
||||
- name: Check
|
||||
<<: *task_parameters
|
||||
postgresql_query:
|
||||
<<: *pg_parameters
|
||||
query: >
|
||||
SELECT r.rolname FROM pg_language l
|
||||
JOIN pg_roles r ON l.lanowner = r.oid
|
||||
WHERE l.lanname = '{{ test_lang }}'
|
||||
AND r.rolname = '{{ test_user2 }}'
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- result.rowcount == 1
|
||||
|
||||
- name: Try to change lang owner again to the same role
|
||||
<<: *task_parameters
|
||||
postgresql_lang:
|
||||
<<: *pg_parameters
|
||||
name: '{{ test_lang }}'
|
||||
owner: '{{ test_user2 }}'
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- result is not changed
|
||||
- result.queries == []
|
||||
|
||||
- name: Check
|
||||
<<: *task_parameters
|
||||
postgresql_query:
|
||||
<<: *pg_parameters
|
||||
query: >
|
||||
SELECT r.rolname FROM pg_language l
|
||||
JOIN pg_roles r ON l.lanowner = r.oid
|
||||
WHERE l.lanname = '{{ test_lang }}'
|
||||
AND r.rolname = '{{ test_user2 }}'
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- result.rowcount == 1
|
||||
|
||||
- name: Drop test lang with owner, must ignore
|
||||
<<: *task_parameters
|
||||
postgresql_lang:
|
||||
<<: *pg_parameters
|
||||
name: '{{ test_lang }}'
|
||||
state: absent
|
||||
owner: '{{ non_existent_role }}'
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- result is changed
|
||||
- result.queries == ["DROP LANGUAGE \"{{ test_lang }}\""]
|
||||
|
||||
- name: Check
|
||||
<<: *task_parameters
|
||||
postgresql_query:
|
||||
<<: *pg_parameters
|
||||
query: >
|
||||
SELECT r.rolname FROM pg_language l
|
||||
JOIN pg_roles r ON l.lanowner = r.oid
|
||||
WHERE l.lanname = '{{ test_lang }}'
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- result.rowcount == 0
|
||||
|
||||
# Clean up
|
||||
- name: Drop test roles
|
||||
<<: *task_parameters
|
||||
postgresql_user:
|
||||
<<: *pg_parameters
|
||||
name: '{{ item }}'
|
||||
state: absent
|
||||
loop:
|
||||
- '{{ test_user1 }}'
|
||||
- '{{ test_user2 }}'
|
|
@ -0,0 +1,231 @@
|
|||
# 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)
|
||||
|
||||
# Preparation for tests:
|
||||
- name: Install PostgreSQL support packages
|
||||
become: yes
|
||||
action: "{{ ansible_facts.pkg_mgr }}"
|
||||
args:
|
||||
name: "{{ postgresql_lang_packages }}"
|
||||
state: present
|
||||
|
||||
###############
|
||||
# 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 is changed
|
||||
- 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 is changed
|
||||
- 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 is changed
|
||||
- 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 is changed
|
||||
- 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 is changed
|
||||
- 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 is changed
|
||||
- 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
|
|
@ -0,0 +1,3 @@
|
|||
postgresql_lang_packages:
|
||||
- postgresql-plperl
|
||||
- postgresql-plpython
|
|
@ -0,0 +1,3 @@
|
|||
postgresql_lang_packages:
|
||||
- postgresql-plperl
|
||||
- postgresql-plpython3
|
Loading…
Add table
Add a link
Reference in a new issue