07d446825a
* postgresql_sequence: initial commit with new module and tests * change return variables and adjust tests * fix sanity checks * fix linter errors * change formatting functions and put params alphabetically * add new examples and remove restrict option * remove restrict option * remove `required: false` * add links to documentation * change some minor parts in documentation * add new integration tests for ** drop cascade ** change owner * change usage of owner and created a test case for set owner during creation * remove some documents and use docsfragments * add aliases for minvalue and maxvalue * change to warn if sequence not exists but should be removed * use connect_to_db from module_utils/postgres.py * add checkmode for several tests * fix psycopg2 import and connect_to_db * add a test for drop nonexistent sequence * change get_info funcrtion to use only one SQL statement * rewrite the module for cleaner code * remove psycopg2 * change check_mode behavior * add docstrings for class and methods * add test for create sequence with owner in check_mode * fix typo in set_schema() * fix docu and cleanup the code * adjust documentation for state, schema and newschema * remove mutually_exclusive for 'absent' * remove unused code comments * remove warning for drop non-exicsting sequence * change autocommit condition * adjust state documentation
696 lines
20 KiB
YAML
696 lines
20 KiB
YAML
# Copyright: (c) 2019, Tobias Birkefeld (@tcraxs) <t@craxs.de>
|
|
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
|
|
|
# Preparation for tests.
|
|
- name: postgresql_sequence - create DB
|
|
become_user: "{{ pg_user }}"
|
|
become: yes
|
|
postgresql_db:
|
|
state: present
|
|
name: "{{ db_name }}"
|
|
owner: "{{ db_user1 }}"
|
|
login_user: "{{ pg_user }}"
|
|
|
|
- name: postgresql_sequence - create a user to be owner of a database
|
|
become_user: "{{ pg_user }}"
|
|
become: yes
|
|
postgresql_user:
|
|
name: "{{ db_user1 }}"
|
|
state: present
|
|
encrypted: yes
|
|
password: password
|
|
role_attr_flags: LOGIN
|
|
db: "{{ db_name }}"
|
|
login_user: "{{ pg_user }}"
|
|
|
|
- name: Create a user to be owner of a sequence
|
|
become_user: "{{ pg_user }}"
|
|
become: yes
|
|
postgresql_user:
|
|
name: "{{ db_user2 }}"
|
|
state: present
|
|
encrypted: yes
|
|
password: password
|
|
role_attr_flags: LOGIN
|
|
db: "{{ db_name }}"
|
|
login_user: "{{ pg_user }}"
|
|
|
|
- name: postgresql_sequence - create a schema
|
|
become_user: "{{ pg_user }}"
|
|
become: yes
|
|
postgresql_schema:
|
|
db: "{{ db_name }}"
|
|
login_user: "{{ pg_user }}"
|
|
name: foobar_schema
|
|
|
|
####################
|
|
# Test: create sequence in checkmode
|
|
- name: postgresql_sequence - create a new seqeunce with name "foobar" in check_mode
|
|
become_user: "{{ pg_user }}"
|
|
become: yes
|
|
check_mode: yes
|
|
postgresql_sequence:
|
|
db: "{{ db_name }}"
|
|
login_user: "{{ pg_user }}"
|
|
name: foobar
|
|
register: result
|
|
|
|
# Checks
|
|
- name: postgresql_sequence - check with assert the output
|
|
assert:
|
|
that:
|
|
- result.changed == True
|
|
- result.sequence == 'foobar'
|
|
- result.queries == ["CREATE SEQUENCE \"public\".\"foobar\""]
|
|
|
|
# Real SQL check
|
|
- name: postgresql_sequence - check that the new seqeunce "foobar" not exists
|
|
become: yes
|
|
become_user: "{{ pg_user }}"
|
|
postgresql_query:
|
|
db: "{{ db_name }}"
|
|
login_user: "{{ pg_user }}"
|
|
query: "SELECT sequence_name FROM information_schema.sequences WHERE sequence_name = 'foobar'"
|
|
register: result
|
|
|
|
- name: postgresql_sequence - check with assert the output
|
|
assert:
|
|
that:
|
|
- result.rowcount == 0
|
|
- result.statusmessage == 'SELECT 0'
|
|
|
|
####################
|
|
# Test: create sequence
|
|
- name: postgresql_sequence - create a new seqeunce with name "foobar"
|
|
become_user: "{{ pg_user }}"
|
|
become: yes
|
|
postgresql_sequence:
|
|
db: "{{ db_name }}"
|
|
login_user: "{{ pg_user }}"
|
|
name: foobar
|
|
register: result
|
|
|
|
# Checks
|
|
- name: postgresql_sequence - check with assert the output
|
|
assert:
|
|
that:
|
|
- result.changed == True
|
|
- result.sequence == 'foobar'
|
|
- result.queries == ["CREATE SEQUENCE \"public\".\"foobar\""]
|
|
|
|
# Real SQL check
|
|
- name: postgresql_sequence - check that the new seqeunce "foobar" exists
|
|
become_user: "{{ pg_user }}"
|
|
become: yes
|
|
postgresql_query:
|
|
db: "{{ db_name }}"
|
|
login_user: "{{ pg_user }}"
|
|
query: "SELECT sequence_name FROM information_schema.sequences WHERE sequence_name = 'foobar'"
|
|
register: result
|
|
|
|
- name: postgresql_sequence - check with assert the output
|
|
assert:
|
|
that:
|
|
- result.rowcount == 1
|
|
|
|
####################
|
|
# Test: drop sequence in checkmode
|
|
- name: postgresql_sequence - drop a sequence called foobar
|
|
become_user: "{{ pg_user }}"
|
|
become: yes
|
|
check_mode: yes
|
|
postgresql_sequence:
|
|
db: "{{ db_name }}"
|
|
login_user: "{{ pg_user }}"
|
|
name: foobar
|
|
state: absent
|
|
register: result
|
|
|
|
# Checks
|
|
- name: postgresql_sequence - check with assert the output
|
|
assert:
|
|
that:
|
|
- result.changed == True
|
|
- result.sequence == 'foobar'
|
|
- result.queries == ["DROP SEQUENCE \"public\".\"foobar\""]
|
|
|
|
# Real SQL check
|
|
- name: postgresql_sequence - check that the seqeunce "foobar" still exists
|
|
become_user: "{{ pg_user }}"
|
|
become: yes
|
|
postgresql_query:
|
|
db: "{{ db_name }}"
|
|
login_user: "{{ pg_user }}"
|
|
query: "SELECT sequence_name FROM information_schema.sequences WHERE sequence_name = 'foobar'"
|
|
register: result
|
|
|
|
- name: postgresql_sequence - check with assert the output
|
|
assert:
|
|
that:
|
|
- result.rowcount == 1
|
|
|
|
####################
|
|
# Test: drop sequence
|
|
- name: postgresql_sequence - drop a sequence called foobar
|
|
become_user: "{{ pg_user }}"
|
|
become: yes
|
|
postgresql_sequence:
|
|
db: "{{ db_name }}"
|
|
login_user: "{{ pg_user }}"
|
|
name: foobar
|
|
state: absent
|
|
register: result
|
|
|
|
# Checks
|
|
- name: postgresql_sequence - check with assert the output
|
|
assert:
|
|
that:
|
|
- result.changed == True
|
|
- result.sequence == 'foobar'
|
|
- result.queries == ["DROP SEQUENCE \"public\".\"foobar\""]
|
|
|
|
# Real SQL check
|
|
- name: postgresql_sequence - check that the seqeunce "foobar" not exists
|
|
become_user: "{{ pg_user }}"
|
|
become: yes
|
|
postgresql_query:
|
|
db: "{{ db_name }}"
|
|
login_user: "{{ pg_user }}"
|
|
query: "SELECT sequence_name FROM information_schema.sequences WHERE sequence_name = 'foobar'"
|
|
register: result
|
|
|
|
- name: postgresql_sequence - check with assert the output
|
|
assert:
|
|
that:
|
|
- result.rowcount == 0
|
|
|
|
####################
|
|
# Test: drop nonexistent sequence
|
|
- name: postgresql_sequence - drop a sequence called foobar which does not exists
|
|
become_user: "{{ pg_user }}"
|
|
become: yes
|
|
postgresql_sequence:
|
|
db: "{{ db_name }}"
|
|
login_user: "{{ pg_user }}"
|
|
name: foobar
|
|
state: absent
|
|
register: result
|
|
|
|
# Checks
|
|
- name: postgresql_sequence - check with assert the output
|
|
assert:
|
|
that:
|
|
- result.changed == False
|
|
- result.sequence == 'foobar'
|
|
- result.queries == []
|
|
|
|
# Real SQL check
|
|
- name: postgresql_sequence - check that the seqeunce "foobar" not exists
|
|
become_user: "{{ pg_user }}"
|
|
become: yes
|
|
postgresql_query:
|
|
db: "{{ db_name }}"
|
|
login_user: "{{ pg_user }}"
|
|
query: "SELECT sequence_name FROM information_schema.sequences WHERE sequence_name = 'foobar'"
|
|
register: result
|
|
|
|
- name: postgresql_sequence - check with assert the output
|
|
assert:
|
|
that:
|
|
- result.rowcount == 0
|
|
|
|
####################
|
|
# Test: create sequence with options
|
|
- name: postgresql_sequence - create an descending sequence called foobar_desc, starting at 101 and which cycle between 1 to 1000
|
|
become_user: "{{ pg_user }}"
|
|
become: yes
|
|
postgresql_sequence:
|
|
db: "{{ db_name }}"
|
|
login_user: "{{ pg_user }}"
|
|
name: foobar_desc
|
|
increment: -1
|
|
start: 101
|
|
minvalue: 1
|
|
maxvalue: 1000
|
|
cycle: yes
|
|
register: result
|
|
|
|
# Checks
|
|
- name: postgresql_sequence - check with assert the output
|
|
assert:
|
|
that:
|
|
- result.changed == True
|
|
- result.sequence == 'foobar_desc'
|
|
- result.increment == '-1'
|
|
- result.minvalue == '1'
|
|
- result.maxvalue == '1000'
|
|
- result.cycle == 'YES'
|
|
- result.queries == ["CREATE SEQUENCE \"public\".\"foobar_desc\" INCREMENT BY -1 MINVALUE 1 MAXVALUE 1000 START WITH 101 CYCLE"]
|
|
|
|
# Real SQL check
|
|
- name: postgresql_sequence - check that the new seqeunce "foobar_desc" exists
|
|
postgresql_query:
|
|
db: "{{ db_name }}"
|
|
login_user: "{{ pg_user }}"
|
|
query: "SELECT sequence_name FROM information_schema.sequences WHERE sequence_name = 'foobar_desc'"
|
|
register: result
|
|
|
|
- name: postgresql_sequence - check with assert the output
|
|
assert:
|
|
that:
|
|
- result.rowcount == 1
|
|
|
|
####################
|
|
# Test: rename a sequence in checkmode
|
|
- name: postgresql_sequence - rename an existing sequence named foobar_desc to foobar_with_options
|
|
become_user: "{{ pg_user }}"
|
|
become: yes
|
|
check_mode: yes
|
|
postgresql_sequence:
|
|
db: "{{ db_name }}"
|
|
login_user: "{{ pg_user }}"
|
|
name: foobar_desc
|
|
rename_to: foobar_with_options
|
|
register: result
|
|
|
|
# Checks
|
|
- name: postgresql_sequence - check with assert the output
|
|
assert:
|
|
that:
|
|
- result.changed == True
|
|
- result.sequence == 'foobar_desc'
|
|
- result.newname == 'foobar_with_options'
|
|
- result.queries == ["ALTER SEQUENCE \"public\".\"foobar_desc\" RENAME TO \"foobar_with_options\""]
|
|
|
|
# Real SQL check
|
|
- name: postgresql_sequence - check that the seqeunce "foobar_desc" still exists and is not renamed
|
|
become_user: "{{ pg_user }}"
|
|
become: yes
|
|
postgresql_query:
|
|
db: "{{ db_name }}"
|
|
login_user: "{{ pg_user }}"
|
|
query: "SELECT sequence_name FROM information_schema.sequences WHERE sequence_name = 'foobar_desc'"
|
|
register: result
|
|
|
|
- name: postgresql_sequence - check with assert the output
|
|
assert:
|
|
that:
|
|
- result.rowcount == 1
|
|
|
|
####################
|
|
# Test: rename a sequence
|
|
- name: postgresql_sequence - rename an existing sequence named foobar_desc to foobar_with_options
|
|
become_user: "{{ pg_user }}"
|
|
become: yes
|
|
postgresql_sequence:
|
|
db: "{{ db_name }}"
|
|
login_user: "{{ pg_user }}"
|
|
name: foobar_desc
|
|
rename_to: foobar_with_options
|
|
register: result
|
|
|
|
# Checks
|
|
- name: postgresql_sequence - check with assert the output
|
|
assert:
|
|
that:
|
|
- result.changed == True
|
|
- result.sequence == 'foobar_desc'
|
|
- result.newname == 'foobar_with_options'
|
|
- result.queries == ["ALTER SEQUENCE \"public\".\"foobar_desc\" RENAME TO \"foobar_with_options\""]
|
|
|
|
# Real SQL check
|
|
- name: postgresql_sequence - check that the renamed seqeunce "foobar_with_options" exists
|
|
become_user: "{{ pg_user }}"
|
|
become: yes
|
|
postgresql_query:
|
|
db: "{{ db_name }}"
|
|
login_user: "{{ pg_user }}"
|
|
query: "SELECT sequence_name FROM information_schema.sequences WHERE sequence_name = 'foobar_with_options'"
|
|
register: result
|
|
|
|
- name: postgresql_sequence - check with assert the output
|
|
assert:
|
|
that:
|
|
- result.rowcount == 1
|
|
|
|
####################
|
|
# Test: change schema of a sequence in checkmode
|
|
- name: postgresql_sequence - change schema of an existing sequence from public to foobar_schema
|
|
become_user: "{{ pg_user }}"
|
|
become: yes
|
|
check_mode: yes
|
|
postgresql_sequence:
|
|
db: "{{ db_name }}"
|
|
login_user: "{{ pg_user }}"
|
|
name: foobar_with_options
|
|
newschema: foobar_schema
|
|
register: result
|
|
|
|
# Checks
|
|
- name: postgresql_sequence - check with assert the output
|
|
assert:
|
|
that:
|
|
- result.changed == True
|
|
- result.sequence == 'foobar_with_options'
|
|
- result.schema == 'public'
|
|
- result.newschema == 'foobar_schema'
|
|
- result.queries == ["ALTER SEQUENCE \"public\".\"foobar_with_options\" SET SCHEMA \"foobar_schema\""]
|
|
|
|
# Real SQL check
|
|
- name: postgresql_sequence - check that the seqeunce "foobar_with_options" still exists in the old schema
|
|
become_user: "{{ pg_user }}"
|
|
become: yes
|
|
postgresql_query:
|
|
db: "{{ db_name }}"
|
|
login_user: "{{ pg_user }}"
|
|
query: "SELECT sequence_name,sequence_schema FROM information_schema.sequences WHERE sequence_name = 'foobar_with_options' AND sequence_schema = 'public'"
|
|
register: result
|
|
|
|
- name: postgresql_sequence - check with assert the output
|
|
assert:
|
|
that:
|
|
- result.rowcount == 1
|
|
|
|
####################
|
|
# Test: change schema of a sequence
|
|
- name: postgresql_sequence - change schema of an existing sequence from public to foobar_schema
|
|
become_user: "{{ pg_user }}"
|
|
become: yes
|
|
postgresql_sequence:
|
|
db: "{{ db_name }}"
|
|
login_user: "{{ pg_user }}"
|
|
name: foobar_with_options
|
|
newschema: foobar_schema
|
|
register: result
|
|
|
|
# Checks
|
|
- name: postgresql_sequence - check with assert the output
|
|
assert:
|
|
that:
|
|
- result.changed == True
|
|
- result.sequence == 'foobar_with_options'
|
|
- result.schema == 'public'
|
|
- result.newschema == 'foobar_schema'
|
|
- result.queries == ["ALTER SEQUENCE \"public\".\"foobar_with_options\" SET SCHEMA \"foobar_schema\""]
|
|
|
|
# Real SQL check
|
|
- name: postgresql_sequence - check that the seqeunce "foobar_with_options" exists in new schema
|
|
become_user: "{{ pg_user }}"
|
|
become: yes
|
|
postgresql_query:
|
|
db: "{{ db_name }}"
|
|
login_user: "{{ pg_user }}"
|
|
query: "SELECT sequence_name,sequence_schema FROM information_schema.sequences WHERE sequence_name = 'foobar_with_options' AND sequence_schema = 'foobar_schema'"
|
|
register: result
|
|
|
|
- name: postgresql_sequence - check with assert the output
|
|
assert:
|
|
that:
|
|
- result.rowcount == 1
|
|
|
|
####################
|
|
# Test: change owner of a sequence in checkmode
|
|
- name: postgresql_sequence - change owner of an existing sequence from "{{ pg_user }}" to "{{ db_user1 }}"
|
|
become_user: "{{ pg_user }}"
|
|
become: yes
|
|
check_mode: yes
|
|
postgresql_sequence:
|
|
db: "{{ db_name }}"
|
|
login_user: "{{ pg_user }}"
|
|
name: foobar_with_options
|
|
schema: foobar_schema
|
|
owner: "{{ db_user1 }}"
|
|
register: result
|
|
|
|
# Checks
|
|
- name: postgresql_sequence - check with assert the output
|
|
assert:
|
|
that:
|
|
- result.changed == True
|
|
- result.sequence == 'foobar_with_options'
|
|
- result.owner == "{{ pg_user }}"
|
|
- result.queries == ["ALTER SEQUENCE \"foobar_schema\".\"foobar_with_options\" OWNER TO \"{{ db_user1 }}\""]
|
|
|
|
# Real SQL check
|
|
- name: postgresql_sequence - check that the seqeunce "foobar_with_options" has still the old owner
|
|
become_user: "{{ pg_user }}"
|
|
become: yes
|
|
postgresql_query:
|
|
db: "{{ db_name }}"
|
|
login_user: "{{ pg_user }}"
|
|
query: "SELECT c.relname,a.rolname,n.nspname
|
|
FROM pg_class as c
|
|
JOIN pg_authid as a on (c.relowner = a.oid)
|
|
JOIN pg_namespace as n on (c.relnamespace = n.oid)
|
|
WHERE c.relkind = 'S' and
|
|
c.relname = 'foobar_with_options' and
|
|
n.nspname = 'foobar_schema' and
|
|
a.rolname = '{{ pg_user }}'"
|
|
register: result
|
|
|
|
- name: postgresql_sequence - check with assert the output
|
|
assert:
|
|
that:
|
|
- result.rowcount == 1
|
|
|
|
####################
|
|
# Test: change owner of a sequence
|
|
- name: postgresql_sequence - change owner of an existing sequence from "{{ pg_user }}" to "{{ db_user1 }}"
|
|
become_user: "{{ pg_user }}"
|
|
become: yes
|
|
postgresql_sequence:
|
|
db: "{{ db_name }}"
|
|
login_user: "{{ pg_user }}"
|
|
name: foobar_with_options
|
|
schema: foobar_schema
|
|
owner: "{{ db_user1 }}"
|
|
register: result
|
|
|
|
# Checks
|
|
- name: postgresql_sequence - check with assert the output
|
|
assert:
|
|
that:
|
|
- result.changed == True
|
|
- result.sequence == 'foobar_with_options'
|
|
- result.owner == "{{ pg_user }}"
|
|
- result.queries == ["ALTER SEQUENCE \"foobar_schema\".\"foobar_with_options\" OWNER TO \"{{ db_user1 }}\""]
|
|
|
|
# Real SQL check
|
|
- name: postgresql_sequence - check that the seqeunce "foobar_with_options" has a new owner
|
|
become_user: "{{ pg_user }}"
|
|
become: yes
|
|
postgresql_query:
|
|
db: "{{ db_name }}"
|
|
login_user: "{{ pg_user }}"
|
|
query: "SELECT c.relname,a.rolname,n.nspname
|
|
FROM pg_class as c
|
|
JOIN pg_authid as a on (c.relowner = a.oid)
|
|
JOIN pg_namespace as n on (c.relnamespace = n.oid)
|
|
WHERE c.relkind = 'S' and
|
|
c.relname = 'foobar_with_options' and
|
|
n.nspname = 'foobar_schema' and
|
|
a.rolname = '{{ db_user1 }}'"
|
|
register: result
|
|
|
|
- name: postgresql_sequence - check with assert the output
|
|
assert:
|
|
that:
|
|
- result.rowcount == 1
|
|
|
|
####################
|
|
# Test: drop seqeunce with cascade
|
|
|
|
# CREATE SEQUENCE seq1;
|
|
# CREATE TABLE t1 (f1 INT NOT NULL DEFAULT nextval('seq1'));
|
|
# DROP SEQUENCE seq1 CASCADE;
|
|
- name: postgresql_sequence - create sequence for drop cascade test
|
|
become_user: "{{ pg_user }}"
|
|
become: yes
|
|
postgresql_sequence:
|
|
db: "{{ db_name }}"
|
|
login_user: "{{ pg_user }}"
|
|
name: seq1
|
|
|
|
- name: postgresql_sequence - create table which use seqeunce for drop cascade test
|
|
become_user: "{{ pg_user }}"
|
|
become: yes
|
|
postgresql_table:
|
|
db: "{{ db_name }}"
|
|
login_user: "{{ pg_user }}"
|
|
name: t1
|
|
columns:
|
|
- f1 INT NOT NULL DEFAULT nextval('seq1')
|
|
|
|
####################
|
|
# Test: drop seqeunce with cascade in checkmode
|
|
- name: postgresql_sequence - drop with cascade a sequence called seq1
|
|
become_user: "{{ pg_user }}"
|
|
become: yes
|
|
check_mode: yes
|
|
postgresql_sequence:
|
|
db: "{{ db_name }}"
|
|
login_user: "{{ pg_user }}"
|
|
name: seq1
|
|
state: absent
|
|
cascade: yes
|
|
register: result
|
|
|
|
# Checks
|
|
- name: postgresql_sequence - check with assert the output
|
|
assert:
|
|
that:
|
|
- result.changed == True
|
|
- result.sequence == 'seq1'
|
|
- result.queries == ["DROP SEQUENCE \"public\".\"seq1\" CASCADE"]
|
|
|
|
# Real SQL check
|
|
- name: postgresql_sequence - check that the seqeunce "seq1" still exists
|
|
become_user: "{{ pg_user }}"
|
|
become: yes
|
|
postgresql_query:
|
|
db: "{{ db_name }}"
|
|
login_user: "{{ pg_user }}"
|
|
query: "SELECT sequence_name FROM information_schema.sequences WHERE sequence_name = 'seq1'"
|
|
register: result
|
|
|
|
- name: postgresql_sequence - check with assert the output
|
|
assert:
|
|
that:
|
|
- result.rowcount == 1
|
|
|
|
####################
|
|
# Test: drop seqeunce with cascade
|
|
- name: postgresql_sequence - drop with cascade a sequence called seq1
|
|
become_user: "{{ pg_user }}"
|
|
become: yes
|
|
postgresql_sequence:
|
|
db: "{{ db_name }}"
|
|
login_user: "{{ pg_user }}"
|
|
name: seq1
|
|
state: absent
|
|
cascade: yes
|
|
register: result
|
|
|
|
# Checks
|
|
- name: postgresql_sequence - check with assert the output
|
|
assert:
|
|
that:
|
|
- result.changed == True
|
|
- result.sequence == 'seq1'
|
|
- result.queries == ["DROP SEQUENCE \"public\".\"seq1\" CASCADE"]
|
|
|
|
# Real SQL check
|
|
- name: postgresql_sequence - check that the seqeunce "seq1" not exists
|
|
become_user: "{{ pg_user }}"
|
|
become: yes
|
|
postgresql_query:
|
|
db: "{{ db_name }}"
|
|
login_user: "{{ pg_user }}"
|
|
query: "SELECT sequence_name FROM information_schema.sequences WHERE sequence_name = 'seq1'"
|
|
register: result
|
|
|
|
- name: postgresql_sequence - check with assert the output
|
|
assert:
|
|
that:
|
|
- result.rowcount == 0
|
|
|
|
####################
|
|
# Test: create sequence with owner in checkmode
|
|
- name: postgresql_sequence - create a new seqeunce with name "foobar2" with owner "{{ db_user2 }}"
|
|
become_user: "{{ pg_user }}"
|
|
become: yes
|
|
check_mode: yes
|
|
postgresql_sequence:
|
|
db: "{{ db_name }}"
|
|
login_user: "{{ pg_user }}"
|
|
name: foobar2
|
|
owner: "{{ db_user2 }}"
|
|
register: result
|
|
|
|
# Checks
|
|
- name: postgresql_sequence - check with assert the output
|
|
assert:
|
|
that:
|
|
- result.changed == True
|
|
- result.sequence == 'foobar2'
|
|
- result.queries == ["CREATE SEQUENCE \"public\".\"foobar2\"", "ALTER SEQUENCE \"public\".\"foobar2\" OWNER TO \"ansible_db_user2\""]
|
|
|
|
# Real SQL check
|
|
- name: postgresql_sequence - check that the new seqeunce "foobar2" does not exists
|
|
become_user: "{{ pg_user }}"
|
|
become: yes
|
|
postgresql_query:
|
|
db: "{{ db_name }}"
|
|
login_user: "{{ pg_user }}"
|
|
query: "SELECT sequence_name FROM information_schema.sequences WHERE sequence_name = 'foobar2'"
|
|
register: result
|
|
|
|
- name: postgresql_sequence - check with assert the output
|
|
assert:
|
|
that:
|
|
- result.rowcount == 0
|
|
|
|
####################
|
|
# Test: create sequence with owner
|
|
- name: postgresql_sequence - create a new seqeunce with name "foobar2" with owner "{{ db_user2 }}"
|
|
become_user: "{{ pg_user }}"
|
|
become: yes
|
|
postgresql_sequence:
|
|
db: "{{ db_name }}"
|
|
login_user: "{{ pg_user }}"
|
|
name: foobar2
|
|
owner: "{{ db_user2 }}"
|
|
register: result
|
|
|
|
# Checks
|
|
- name: postgresql_sequence - check with assert the output
|
|
assert:
|
|
that:
|
|
- result.changed == True
|
|
- result.sequence == 'foobar2'
|
|
- result.queries == ["CREATE SEQUENCE \"public\".\"foobar2\"", "ALTER SEQUENCE \"public\".\"foobar2\" OWNER TO \"ansible_db_user2\""]
|
|
|
|
# Real SQL check
|
|
- name: postgresql_sequence - check that the new seqeunce "foobar2" exists
|
|
become_user: "{{ pg_user }}"
|
|
become: yes
|
|
postgresql_query:
|
|
db: "{{ db_name }}"
|
|
login_user: "{{ pg_user }}"
|
|
query: "SELECT sequence_name FROM information_schema.sequences WHERE sequence_name = 'foobar2'"
|
|
register: result
|
|
|
|
- name: postgresql_sequence - check with assert the output
|
|
assert:
|
|
that:
|
|
- result.rowcount == 1
|
|
|
|
- name: postgresql_sequence - check that the seqeunce "foobar2" has owner "{{ db_user2 }}"
|
|
become_user: "{{ pg_user }}"
|
|
become: yes
|
|
postgresql_query:
|
|
db: "{{ db_name }}"
|
|
login_user: "{{ pg_user }}"
|
|
query: "SELECT c.relname,a.rolname,n.nspname
|
|
FROM pg_class as c
|
|
JOIN pg_authid as a on (c.relowner = a.oid)
|
|
JOIN pg_namespace as n on (c.relnamespace = n.oid)
|
|
WHERE c.relkind = 'S' and
|
|
c.relname = 'foobar2' and
|
|
n.nspname = 'public' and
|
|
a.rolname = '{{ db_user2 }}'"
|
|
register: result
|
|
|
|
- name: postgresql_sequence - check with assert the output
|
|
assert:
|
|
that:
|
|
- result.rowcount == 1
|
|
|
|
# Cleanup
|
|
- name: postgresql_sequence - destroy DB
|
|
become_user: "{{ pg_user }}"
|
|
become: yes
|
|
postgresql_db:
|
|
state: absent
|
|
name: "{{ db_name }}"
|
|
login_user: "{{ pg_user }}"
|