Esempio n. 1
0
    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)
Esempio n. 2
0
    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
                                        })
Esempio n. 3
0
    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
Esempio n. 4
0
    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))
Esempio n. 5
0
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