diff --git a/hooks/percona_utils.py b/hooks/percona_utils.py index c21bc14..12a6bcc 100644 --- a/hooks/percona_utils.py +++ b/hooks/percona_utils.py @@ -1828,8 +1828,7 @@ def create_nagios_user(): else: log("User 'nagios'@'localhost' already exists.", level="WARNING") # NOTE (rgildein): Update the user's password if it has changed. - m_helper.execute("ALTER USER 'nagios'@'localhost' IDENTIFIED BY " - "'{passwd}';".format(passwd=nagios_password())) + m_helper.set_mysql_password('nagios', nagios_password()) def set_nagios_user(): diff --git a/unit_tests/test_percona_utils.py b/unit_tests/test_percona_utils.py index 9443150..6b95e92 100644 --- a/unit_tests/test_percona_utils.py +++ b/unit_tests/test_percona_utils.py @@ -539,11 +539,14 @@ class UtilsTests(CharmTestCase): mock_apt_update.assert_not_called() + @mock.patch.object(percona_utils, "lsb_release") @mock.patch.object(percona_utils, "get_db_helper") @mock.patch.object(percona_utils, "write_nagios_my_cnf") def test_create_nagios_user(self, mock_create_nagios_mysql_credential, - mock_get_db_helper): + mock_get_db_helper, + mock_lsb_release): + mock_lsb_release.return_value = {'DISTRIB_CODENAME': 'bionic'} my_mock = mock.Mock() self.leader_get.return_value = "1234" self.is_leader.return_value = True @@ -555,8 +558,8 @@ class UtilsTests(CharmTestCase): ) my_mock.execute.assert_has_calls([ mock.call("CREATE USER 'nagios'@'localhost';"), - mock.call("ALTER USER 'nagios'@'localhost' IDENTIFIED BY '1234';"), ]) + my_mock.set_mysql_password.assert_called_once_with('nagios', '1234') class OperationalError(Exception): pass @@ -566,7 +569,7 @@ class UtilsTests(CharmTestCase): def mysql_create_user(*args, **kwargs): raise OperationalError() - my_mock.select.return_value = True + my_mock.select.return_value = False my_mock.execute.side_effect = mysql_create_user with self.assertRaises(OperationalError): percona_utils.create_nagios_user()