add postgresql tests
This commit is contained in:
parent
a254ce3b77
commit
6b8e8ff6fa
6 changed files with 92 additions and 3 deletions
|
@ -10,4 +10,3 @@ CREATE DATABASE IF NOT EXISTS %%name CHARACTER SET utf8;
|
||||||
GRANT ALL PRIVILEGES ON %%name.* TO '%%name'@'%%server' IDENTIFIED BY '%%password';
|
GRANT ALL PRIVILEGES ON %%name.* TO '%%name'@'%%server' IDENTIFIED BY '%%password';
|
||||||
%end for
|
%end for
|
||||||
FLUSH PRIVILEGES;
|
FLUSH PRIVILEGES;
|
||||||
|
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
<file>/etc/pki/ca-trust/source/anchors/ca_PostgreSQL.crt</file>
|
<file>/etc/pki/ca-trust/source/anchors/ca_PostgreSQL.crt</file>
|
||||||
<file>/etc/pki/tls/certs/postgresql.crt</file>
|
<file>/etc/pki/tls/certs/postgresql.crt</file>
|
||||||
<file owner="root" group="postgres" mode="440">/etc/pki/tls/private/postgresql.key</file>
|
<file owner="root" group="postgres" mode="440">/etc/pki/tls/private/postgresql.key</file>
|
||||||
|
<file>/tests/postgresql.yml</file>
|
||||||
</service>
|
</service>
|
||||||
</services>
|
</services>
|
||||||
<variables>
|
<variables>
|
||||||
|
|
|
@ -88,6 +88,7 @@ local all postgres ident map=pg_map
|
||||||
# IPv4 local connections:
|
# IPv4 local connections:
|
||||||
#>GNUNUX
|
#>GNUNUX
|
||||||
# host all all 127.0.0.1/32 ident
|
# host all all 127.0.0.1/32 ident
|
||||||
|
hostssl rougail_test rougail_test %%gateway_eth0/32 md5
|
||||||
%for %%server in %%accounts.remotes
|
%for %%server in %%accounts.remotes
|
||||||
hostssl %%normalize_family(%%server) %%normalize_family(%%server) %%server md5
|
hostssl %%normalize_family(%%server) %%normalize_family(%%server) %%server md5
|
||||||
%end for
|
%end for
|
||||||
|
|
|
@ -1,7 +1,12 @@
|
||||||
|
%set %%new_accounts = [('rougail_test', %%get_password(server_name=%%domain_name_eth0, username='rougail_test', description="remote", type="cleartext", hide=%%hide_secret, temporary=True))]
|
||||||
%for %%server in %%accounts.remotes
|
%for %%server in %%accounts.remotes
|
||||||
%set %%name = %%normalize_family(%%server)
|
%set %%name = %%normalize_family(%%server)
|
||||||
|
%set %%password = %%accounts["remote_" + %%name]["password_" + %%name]
|
||||||
|
%%new_accounts.append((%%name, %%password))%slurp
|
||||||
|
%end for
|
||||||
|
%for %%name, %%password in %%new_accounts
|
||||||
CREATE DATABASE "%%name";
|
CREATE DATABASE "%%name";
|
||||||
CREATE ROLE "%%name" WITH LOGIN ENCRYPTED PASSWORD '%%accounts["remote_" + %%name]["password_" + %%name]';
|
CREATE ROLE "%%name" WITH LOGIN ENCRYPTED PASSWORD '%%password';
|
||||||
ALTER USER "%%name" PASSWORD '%%accounts["remote_" + %%name]["password_" + %%name]';
|
ALTER USER "%%name" PASSWORD '%%password';
|
||||||
GRANT ALL PRIVILEGES ON DATABASE "%%name" TO "%%name";
|
GRANT ALL PRIVILEGES ON DATABASE "%%name" TO "%%name";
|
||||||
%end for
|
%end for
|
||||||
|
|
4
seed/postgresql/templates/postgresql.yml
Normal file
4
seed/postgresql/templates/postgresql.yml
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
address: %%ip_eth0
|
||||||
|
user: rougail_test
|
||||||
|
password: %%get_password(server_name=%%domain_name_eth0, username='rougail_test', description="remote", type="cleartext", hide=%%hide_secret, temporary=True)
|
||||||
|
dbname: rougail_test
|
79
seed/postgresql/tests/test_postgresql.py
Normal file
79
seed/postgresql/tests/test_postgresql.py
Normal file
|
@ -0,0 +1,79 @@
|
||||||
|
from yaml import load, SafeLoader
|
||||||
|
from os import environ
|
||||||
|
from pytest import raises
|
||||||
|
|
||||||
|
from psycopg2 import connect, OperationalError
|
||||||
|
|
||||||
|
|
||||||
|
def test_postgresql_wrong_password():
|
||||||
|
conf_file = f'{environ["MACHINE_TEST_DIR"]}/postgresql.yml'
|
||||||
|
with open(conf_file) as yaml:
|
||||||
|
data = load(yaml, Loader=SafeLoader)
|
||||||
|
with raises(OperationalError):
|
||||||
|
connect(host=data['address'], user=data['user'], password='a', database=data['dbname'])
|
||||||
|
|
||||||
|
|
||||||
|
def test_postgresql_connection():
|
||||||
|
conf_file = f'{environ["MACHINE_TEST_DIR"]}/postgresql.yml'
|
||||||
|
with open(conf_file) as yaml:
|
||||||
|
data = load(yaml, Loader=SafeLoader)
|
||||||
|
db = connect(host=data['address'], user=data['user'], password=data['password'], database=data['dbname'])
|
||||||
|
db.close()
|
||||||
|
|
||||||
|
|
||||||
|
def test_postgresql_migration():
|
||||||
|
conf_file = f'{environ["MACHINE_TEST_DIR"]}/postgresql.yml'
|
||||||
|
with open(conf_file) as yaml:
|
||||||
|
data = load(yaml, Loader=SafeLoader)
|
||||||
|
db = connect(host=data['address'], user=data['user'], password=data['password'], database=data['dbname'])
|
||||||
|
cursor = db.cursor()
|
||||||
|
if 'FIRST_RUN' in environ:
|
||||||
|
sql = """CREATE TABLE test (col CHAR(20) NOT NULL)"""
|
||||||
|
cursor.execute(sql)
|
||||||
|
sql = """INSERT INTO test (col) VALUES ('test')"""
|
||||||
|
cursor.execute(sql)
|
||||||
|
db.commit()
|
||||||
|
sql = """SELECT * FROM test"""
|
||||||
|
cursor.execute(sql)
|
||||||
|
results = cursor.fetchall()
|
||||||
|
assert len(results) == 1
|
||||||
|
results[0] == ('test',)
|
||||||
|
cursor.close()
|
||||||
|
db.close()
|
||||||
|
|
||||||
|
|
||||||
|
def test_postgresql_insert():
|
||||||
|
conf_file = f'{environ["MACHINE_TEST_DIR"]}/postgresql.yml'
|
||||||
|
with open(conf_file) as yaml:
|
||||||
|
data = load(yaml, Loader=SafeLoader)
|
||||||
|
db = connect(host=data['address'], user=data['user'], password=data['password'], database=data['dbname'])
|
||||||
|
cursor = db.cursor()
|
||||||
|
sql = """INSERT INTO test (col) VALUES ('test2')"""
|
||||||
|
cursor.execute(sql)
|
||||||
|
db.commit()
|
||||||
|
#
|
||||||
|
sql = """SELECT * FROM test WHERE col = 'test2'"""
|
||||||
|
cursor.execute(sql)
|
||||||
|
results = cursor.fetchall()
|
||||||
|
assert len(results) == 1
|
||||||
|
results[0] == ('test2',)
|
||||||
|
cursor.close()
|
||||||
|
db.close()
|
||||||
|
|
||||||
|
|
||||||
|
def test_postgresql_delete():
|
||||||
|
conf_file = f'{environ["MACHINE_TEST_DIR"]}/postgresql.yml'
|
||||||
|
with open(conf_file) as yaml:
|
||||||
|
data = load(yaml, Loader=SafeLoader)
|
||||||
|
db = connect(host=data['address'], user=data['user'], password=data['password'], database=data['dbname'])
|
||||||
|
cursor = db.cursor()
|
||||||
|
sql = """DELETE FROM test WHERE col = 'test2'"""
|
||||||
|
cursor.execute(sql)
|
||||||
|
db.commit()
|
||||||
|
#
|
||||||
|
sql = """SELECT * FROM test WHERE col = 'test2'"""
|
||||||
|
cursor.execute(sql)
|
||||||
|
results = cursor.fetchall()
|
||||||
|
assert len(results) == 0
|
||||||
|
cursor.close()
|
||||||
|
db.close()
|
Loading…
Reference in a new issue