def test_db_check_priv(self): from akrr.util.sql import get_user_password_host_port from akrr.util.sql import get_db_client_host from akrr.util.sql import get_con_to_db from akrr.util.sql import db_check_priv from akrr.util.sql import cv from akrr.util.sql import create_user_if_not_exists su_user, \ su_password, \ db_host, \ db_port = get_user_password_host_port(self.su_sql) su_con, su_cur = get_con_to_db(su_user, su_password, db_host, db_port) client_host = get_db_client_host(su_cur) # create user create_user_if_not_exists(su_con, su_cur, self.user1, self.password1, client_host) # check su rights self.assertEqual(db_check_priv(su_cur, "mysql", "ALL"), True) self.assertEqual(db_check_priv(su_cur, "dontexists", "ALL"), True) self.assertEqual(db_check_priv(su_cur, "mysql", "ALL", self.user1), False) self.assertEqual( db_check_priv(su_cur, "dontexists", "ALL", self.user1), False) self.assertEqual( db_check_priv(su_cur, "mysql", "ALL", self.user1, client_host), False) self.assertEqual( db_check_priv(su_cur, "dontexists", "ALL", self.user1, client_host), False) # connect as user _, cur = get_con_to_db(self.user1, self.password1, "localhost") self.assertEqual( db_check_priv(su_cur, "dontexists", "ALL", self.user1), False) # create db and give permission to user1 su_cur.execute("CREATE DATABASE IF NOT EXISTS %s CHARACTER SET utf8" % (cv(self.db1), )) su_cur.execute("CREATE DATABASE IF NOT EXISTS %s CHARACTER SET utf8" % (cv(self.db2), )) su_con.commit() su_cur.execute("GRANT ALL ON " + cv(self.db1) + ".* TO %s@%s", (self.user1, client_host)) su_cur.execute("GRANT SELECT ON " + cv(self.db2) + ".* TO %s@%s", (self.user1, client_host)) su_con.commit() # check rights as current regular user self.assertEqual(db_check_priv(cur, "mysql", "ALL"), False) self.assertEqual(db_check_priv(cur, self.db1, "ALL"), True) self.assertEqual(db_check_priv(cur, self.db1, "SELECT"), True) self.assertEqual(db_check_priv(cur, self.db2, "ALL"), False) self.assertEqual(db_check_priv(cur, self.db2, "SELECT"), True)
def test_get_user_passwd_host_port(self): from akrr.util.sql import get_user_password_host_port #get_user_passwd_host_port(user_password_host_port,default_port=3306) self.assertEqual(get_user_password_host_port("localhost"), (None, None, "localhost", 3306)) self.assertEqual( get_user_password_host_port("localhost", default_port=3300), (None, None, "localhost", 3300)) self.assertEqual(get_user_password_host_port("localhost:1238"), (None, None, "localhost", 1238)) self.assertEqual( get_user_password_host_port("bob:[email protected]:1238"), ("bob", "secret", "mysql.somewhere.org", 1238)) self.assertEqual( get_user_password_host_port( "bob:sec@r:et2#@mysql.somewhere.org:1238"), ("bob", "sec@r:et2#", "mysql.somewhere.org", 1238)) self.assertEqual( get_user_password_host_port("bob:@mysql.somewhere.org:1238"), ("bob", "", "mysql.somewhere.org", 1238)) self.assertEqual( get_user_password_host_port("[email protected]:1238"), ("bob", None, "mysql.somewhere.org", 1238)) self.assertEqual( get_user_password_host_port("bob:sec@r:et2#@mysql.somewhere.org"), ("bob", "sec@r:et2#", "mysql.somewhere.org", 3306)) self.assertEqual( get_user_password_host_port("@mysql.somewhere.org:1238"), (None, None, "mysql.somewhere.org", 1238)) self.assertEqual( get_user_password_host_port("bob:sec@r:et2#@mysql.somewhere.org", return_dict=True), { "user": "******", "password": "******", "host": "mysql.somewhere.org", "port": 3306 })
def __init__(self, akrr_db="localhost:3306", ak_db="localhost:3306", xd_db="localhost:3306", install_cron_scripts=True, stand_alone=False): self.akrr_db_user_name, \ self.akrr_db_user_password, \ self.akrr_db_host, \ self.akrr_db_port = get_user_password_host_port(akrr_db) self.akrr_db_name = "mod_akrr" # su will remain None if akrr user and db already exists and user has proper rights self.akrr_db_su_user_name = None self.akrr_db_su_user_password = None self.ak_db_user_name, \ self.ak_db_user_password, \ self.ak_db_host, \ self.ak_db_port = get_user_password_host_port(ak_db) self.ak_db_name = "mod_appkernel" self.ak_db_su_user_name = None self.ak_db_su_user_password = None self.xd_db_user_name, \ self.xd_db_user_password, \ self.xd_db_host, \ self.xd_db_port = get_user_password_host_port(xd_db) self.xd_db_name = "modw" self.xd_db_su_user_name = None self.xd_db_su_user_password = None self.cron_email = None self.stand_alone = stand_alone self.install_cron_scripts_flag = install_cron_scripts
def _clean_db(self): from akrr.util.sql import get_db_client_host from akrr.util.sql import get_user_password_host_port from akrr.util.sql import get_con_to_db from akrr.util.sql import cv su_user,\ su_password,\ db_host,\ db_port=get_user_password_host_port(self.su_sql) _, su_cur = get_con_to_db(su_user, su_password, db_host, db_port) client_host = get_db_client_host(su_cur) #remove db su_cur.execute("DROP DATABASE IF EXISTS %s" % (cv(self.db1), )) su_cur.execute("DROP DATABASE IF EXISTS %s" % (cv(self.db2), )) #remove user su_cur.execute("DROP USER IF EXISTS %s@%s", (self.user1, client_host))
def test_get_user_password_host_port(user_password_host_port, kwargs, expected): from akrr.util.sql import get_user_password_host_port assert get_user_password_host_port(user_password_host_port, **kwargs) == expected