postgresql_privs: add procedure type support (#1048) (#1056)

* postgresql_privs: add procedure type support

* add CI tests

* add changelog fragment

* change

* improve doc formatting

(cherry picked from commit 08c96d94e6)

Co-authored-by: Andrew Klychkov <aaklychkov@mail.ru>
This commit is contained in:
patchback[bot] 2020-10-08 09:03:33 +03:00 committed by GitHub
parent 0b28f5d9e4
commit c0971e41b0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 192 additions and 14 deletions

View file

@ -682,6 +682,150 @@
- result is not changed
when: postgres_version_resp.stdout is version('11', '>=')
###########################
# Test for procedure type #
###########################
- name: Create another procedure for tests
postgresql_query:
query: "CREATE PROCEDURE mock_procedure1(int, int) LANGUAGE SQL AS $$ SELECT 1; $$;"
db: "{{ db_name }}"
login_user: "{{ db_user3 }}"
login_password: password
when: postgres_version_resp.stdout is version('11', '>=')
- name: Grant privs on procedure
postgresql_privs:
type: procedure
state: present
privs: EXECUTE
roles: "{{ db_user2 }}"
objs: 'mock_procedure1(int:int)'
schema: public
db: "{{ db_name }}"
login_user: "{{ db_user3 }}"
login_password: password
register: result
when: postgres_version_resp.stdout is version('11', '>=')
- assert:
that:
- result is changed
when: postgres_version_resp.stdout is version('11', '>=')
- name: Grant privs on procedure again
postgresql_privs:
type: procedure
state: present
privs: EXECUTE
roles: "{{ db_user2 }}"
objs: 'mock_procedure1(int:int)'
schema: public
db: "{{ db_name }}"
login_user: "{{ db_user3 }}"
login_password: password
register: result
when: postgres_version_resp.stdout is version('11', '>=')
- assert:
that:
- result is not changed
when: postgres_version_resp.stdout is version('11', '>=')
- name: Revoke procedure privs
postgresql_privs:
type: procedure
state: absent
privs: EXECUTE
roles: "{{ db_user2 }}"
objs: 'mock_procedure1(int:int)'
schema: public
db: "{{ db_name }}"
login_user: "{{ db_user3 }}"
login_password: password
register: result
when: postgres_version_resp.stdout is version('11', '>=')
- assert:
that:
- result is changed
when: postgres_version_resp.stdout is version('11', '>=')
- name: Revoke procedure privs again
postgresql_privs:
type: procedure
state: absent
privs: EXECUTE
roles: "{{ db_user2 }}"
objs: 'mock_procedure1(int:int)'
schema: public
db: "{{ db_name }}"
login_user: "{{ db_user3 }}"
login_password: password
register: result
when: postgres_version_resp.stdout is version('11', '>=')
- assert:
that:
- result is not changed
when: postgres_version_resp.stdout is version('11', '>=')
- name: Grant procedure privs for all object in schema
postgresql_privs:
type: procedure
state: present
privs: ALL
roles: "{{ db_user2 }}"
objs: ALL_IN_SCHEMA
schema: public
db: "{{ db_name }}"
login_user: "{{ db_user3 }}"
login_password: password
register: result
when: postgres_version_resp.stdout is version('11', '>=')
- assert:
that:
- result is changed
when: postgres_version_resp.stdout is version('11', '>=')
- name: Grant procedure privs for all object in schema again
postgresql_privs:
type: procedure
state: present
privs: ALL
roles: "{{ db_user2 }}"
objs: ALL_IN_SCHEMA
schema: public
db: "{{ db_name }}"
login_user: "{{ db_user3 }}"
login_password: password
register: result
when: postgres_version_resp.stdout is version('11', '>=')
- assert:
that:
- result is not changed
when: postgres_version_resp.stdout is version('11', '>=')
- name: Revoke procedure privs for all object in schema
postgresql_privs:
type: procedure
state: absent
privs: ALL
roles: "{{ db_user2 }}"
objs: ALL_IN_SCHEMA
schema: public
db: "{{ db_name }}"
login_user: "{{ db_user3 }}"
login_password: password
register: result
when: postgres_version_resp.stdout is version('11', '>=')
- assert:
that:
- result is changed
when: postgres_version_resp.stdout is version('11', '>=')
#################################################
# Test ALL_IN_SCHEMA for 'partioned tables type #
#################################################