import testinfra.utils.ansible_runner testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner( '.molecule/ansible_inventory').get_hosts('all') def test_installed_packages(Package): """ Tests if the correct packages have been installed. """ assert Package('mariadb-client').is_installed assert Package('mariadb-server').is_installed assert Package('python-mysqldb').is_installed def test_service(Service): """ Tests if the database server service is enabled on boot and running. """ service = Service('mysql') assert service.is_enabled assert service.is_running def test_root_password(Command): """ Tests if the root password has been set correctly. """ login = Command("mysql -uroot -proot_password -BNe 'show databases'") assert login.rc == 0 assert "information_schema" in login.stdout assert "mysql" in login.stdout assert "performance_schema" in login.stdout def test_root_my_cnf(File, Sudo): """ Tests if the root my.cnf configuration has been set-up with correct user/password and permissions. """ with Sudo(): my_cnf = File('/root/.my.cnf') assert my_cnf.is_file assert my_cnf.user == 'root' assert my_cnf.group == 'root' assert my_cnf.mode == 0o400 assert "user=root" in my_cnf.content assert "password=root_password" in my_cnf.content def test_root_my_cnf_login(Command, Sudo): """ Tets if the database server root login works using just the my.cnf configuration file. """ with Sudo(): login = Command("mysql -BNe 'show databases'") assert "information_schema" in login.stdout assert "mysql" in login.stdout assert "performance_schema" in login.stdout def test_utf8_configuration_file(File): """ Tests if UTF-8 database server configuration file has been deployed correctly. """ config = File('/etc/mysql/conf.d/utf8.cnf') assert config.is_file assert config.user == 'root' assert config.group == 'root' assert config.mode == 0o644 def test_utf8_configuration(Command): """ Tests if UTF-8 configuration has been applied correctly to server. """ assert Command("mysql -uroot -proot_password -BNe 'drop database if exists test'").rc == 0 assert Command("mysql -uroot -proot_password -BNe 'create database test'").rc == 0 check_server = Command("mysql -uroot -proot_password test -BNe 'select @@character_set_server; select @@collation_server'") assert check_server.rc == 0 assert check_server.stdout == "utf8\nutf8_general_ci" check_database = Command("mysql -uroot -proot_password test -BNe 'select @@character_set_database; select @@collation_database'") assert check_database.rc == 0 assert check_database.stdout == "utf8\nutf8_general_ci" check_database = Command("mysql -uroot -proot_password -BNe 'select @@character_set_connection; select @@collation_connection'") assert check_database.rc == 0 assert check_database.stdout == "utf8\nutf8_general_ci"