diff --git a/roles/database/molecule/default/tests/test_default.py b/roles/database/molecule/default/tests/test_default.py new file mode 100644 index 0000000000000000000000000000000000000000..42a3ce7c9ba1d8b3b8cd39706260024b31982292 --- /dev/null +++ b/roles/database/molecule/default/tests/test_default.py @@ -0,0 +1,43 @@ +import testinfra.utils.ansible_runner + +testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner( + '.molecule/ansible_inventory.yml').get_hosts('all') + + +def test_database_created(host): + """ + Tests if database has been created. + """ + + with host.sudo(): + show_databases = host.run("mysql -BNe \"show databases like 'testdb'\"") + + assert show_databases.rc == 0 + assert show_databases.stdout == "testdb" + + +def test_database_user_login(host): + """ + Tests database user login. + """ + + login = host.run("mysql -utestdb -ptestdbpassword -BNe 'show databases'") + + assert login.rc == 0 + + +def test_database_user_permissions(host): + """ + Tests if database user has been granted correct permissions on the database. + """ + + visible_databases = host.run("mysql -utestdb -ptestdbpassword -BNe 'show databases'") + + assert visible_databases.rc == 0 + assert visible_databases.stdout == "information_schema\ntestdb" + + with host.sudo(): + permissions = host.run("mysql -BNe 'show grants for testdb@localhost'") + assert len(permissions.stdout.split("\n")) == 2 + assert "GRANT USAGE ON *.* TO 'testdb'@'localhost' IDENTIFIED BY PASSWORD '*676852B7FAE972722AD20D6E74781D6B1A100544'" in permissions.stdout.split("\n") + assert "GRANT ALL PRIVILEGES ON `testdb`.* TO 'testdb'@'localhost'" in permissions.stdout.split("\n")