예제 #1
0
class EnableRootTest(MySqlAdminTest):
    def setUp(self):
        super(EnableRootTest, self).setUp()
        self.origin_is_valid_user_name = models.MySQLUser._is_valid_user_name
        self.mySqlAdmin = MySqlAdmin()

    def tearDown(self):
        super(EnableRootTest, self).tearDown()
        models.MySQLUser._is_valid_user_name = self.origin_is_valid_user_name

    def test_enable_root(self):
        models.MySQLUser._is_valid_user_name =\
            MagicMock(return_value=True)
        self.mySqlAdmin.enable_root()
        args_list = dbaas.LocalSqlClient.execute.call_args_list
        args, keyArgs = args_list[0]

        self.assertEquals(args[0].text.strip(), "CREATE USER :user@:host;",
                          "Create user queries are not the same")
        self.assertEquals(keyArgs['user'], 'root')
        self.assertEquals(keyArgs['host'], '%')

        args, keyArgs = args_list[1]
        self.assertTrue("UPDATE mysql.user" in args[0].text)
        args, keyArgs = args_list[2]
        self.assertTrue("GRANT ALL PRIVILEGES ON *.*" in args[0].text)

        self.assertEqual(3, dbaas.LocalSqlClient.execute.call_count)

    def test_enable_root_failed(self):
        models.MySQLUser._is_valid_user_name =\
            MagicMock(return_value=False)
        self.assertRaises(ValueError, self.mySqlAdmin.enable_root)

    def test_is_root_enable(self):
        self.mySqlAdmin.is_root_enabled()
        args, _ = dbaas.LocalSqlClient.execute.call_args
        expected = ("""SELECT User FROM mysql.user WHERE User = '******' """
                    """AND Host != 'localhost';""")
        self.assertTrue(expected in args[0].text,
                        "%s not in query." % expected)

    def test_list_databases(self):
        self.mySqlAdmin.list_databases()
        args, _ = dbaas.LocalSqlClient.execute.call_args
        expected = [
            "SELECT schema_name as name,",
            "default_character_set_name as charset,",
            "default_collation_name as collation",
            "FROM information_schema.schemata",
            ("schema_name NOT IN ("
             "'mysql', 'information_schema', "
             "'lost+found', '#mysql50#lost+found'"
             ")"),
            "ORDER BY schema_name ASC",
        ]
        for text in expected:
            self.assertTrue(text in args[0].text, "%s not in query." % text)
        self.assertFalse("LIMIT " in args[0].text)

    def test_list_databases_with_limit(self):
        limit = 2
        self.mySqlAdmin.list_databases(limit)
        args, _ = dbaas.LocalSqlClient.execute.call_args
        expected = [
            "SELECT schema_name as name,",
            "default_character_set_name as charset,",
            "default_collation_name as collation",
            "FROM information_schema.schemata",
            ("schema_name NOT IN ("
             "'mysql', 'information_schema', "
             "'lost+found', '#mysql50#lost+found'"
             ")"),
            "ORDER BY schema_name ASC",
        ]
        for text in expected:
            self.assertTrue(text in args[0].text, "%s not in query." % text)

        self.assertTrue("LIMIT " + str(limit + 1) in args[0].text)

    def test_list_databases_with_marker(self):
        marker = "aMarker"
        self.mySqlAdmin.list_databases(marker=marker)
        args, _ = dbaas.LocalSqlClient.execute.call_args
        expected = [
            "SELECT schema_name as name,",
            "default_character_set_name as charset,",
            "default_collation_name as collation",
            "FROM information_schema.schemata",
            ("schema_name NOT IN ("
             "'mysql', 'information_schema', "
             "'lost+found', '#mysql50#lost+found'"
             ")"),
            "ORDER BY schema_name ASC",
        ]

        for text in expected:
            self.assertTrue(text in args[0].text, "%s not in query." % text)

        self.assertFalse("LIMIT " in args[0].text)

        self.assertTrue("AND schema_name > '" + marker + "'" in args[0].text)

    def test_list_databases_with_include_marker(self):
        marker = "aMarker"
        self.mySqlAdmin.list_databases(marker=marker, include_marker=True)
        args, _ = dbaas.LocalSqlClient.execute.call_args
        expected = [
            "SELECT schema_name as name,",
            "default_character_set_name as charset,",
            "default_collation_name as collation",
            "FROM information_schema.schemata",
            ("schema_name NOT IN ("
             "'mysql', 'information_schema', "
             "'lost+found', '#mysql50#lost+found'"
             ")"),
            "ORDER BY schema_name ASC",
        ]
        for text in expected:
            self.assertTrue(text in args[0].text, "%s not in query." % text)

        self.assertFalse("LIMIT " in args[0].text)

        self.assertTrue(("AND schema_name >= '%s'" % marker) in args[0].text)

    def test_list_users(self):
        self.mySqlAdmin.list_users()
        args, _ = dbaas.LocalSqlClient.execute.call_args

        expected = [
            "SELECT User, Host",
            "FROM mysql.user",
            "WHERE Host != 'localhost'",
            "ORDER BY User",
        ]
        for text in expected:
            self.assertTrue(text in args[0].text, "%s not in query." % text)

        self.assertFalse("LIMIT " in args[0].text)
        self.assertFalse("AND Marker > '" in args[0].text)

    def test_list_users_with_limit(self):
        limit = 2
        self.mySqlAdmin.list_users(limit)
        args, _ = dbaas.LocalSqlClient.execute.call_args

        expected = [
            "SELECT User, Host",
            "FROM mysql.user",
            "WHERE Host != 'localhost'",
            "ORDER BY User",
            ("LIMIT " + str(limit + 1)),
        ]
        for text in expected:
            self.assertTrue(text in args[0].text, "%s not in query." % text)

    def test_list_users_with_marker(self):
        marker = "aMarker"
        self.mySqlAdmin.list_users(marker=marker)
        args, _ = dbaas.LocalSqlClient.execute.call_args

        expected = [
            "SELECT User, Host, Marker",
            "FROM mysql.user",
            "WHERE Host != 'localhost'",
            "ORDER BY User",
        ]

        for text in expected:
            self.assertTrue(text in args[0].text, "%s not in query." % text)

        self.assertFalse("LIMIT " in args[0].text)
        self.assertTrue("AND Marker > '" + marker + "'" in args[0].text)

    def test_list_users_with_include_marker(self):
        marker = "aMarker"
        self.mySqlAdmin.list_users(marker=marker, include_marker=True)
        args, _ = dbaas.LocalSqlClient.execute.call_args

        expected = [
            "SELECT User, Host",
            "FROM mysql.user",
            "WHERE Host != 'localhost'",
            "ORDER BY User",
        ]

        for text in expected:
            self.assertTrue(text in args[0].text, "%s not in query." % text)

        self.assertFalse("LIMIT " in args[0].text)

        self.assertTrue("AND Marker >= '" + marker + "'" in args[0].text)
예제 #2
0
class EnableRootTest(MySqlAdminTest):
    def setUp(self):
        super(EnableRootTest, self).setUp()
        self.origin_is_valid_user_name = models.MySQLUser._is_valid_user_name
        self.mySqlAdmin = MySqlAdmin()

    def tearDown(self):
        super(EnableRootTest, self).tearDown()
        models.MySQLUser._is_valid_user_name = self.origin_is_valid_user_name

    def test_enable_root(self):
        models.MySQLUser._is_valid_user_name =\
            MagicMock(return_value=True)
        self.mySqlAdmin.enable_root()
        args_list = dbaas.LocalSqlClient.execute.call_args_list
        args, keyArgs = args_list[0]
        self.assertEquals(args[0].text.strip(), "CREATE USER :user@:host;",
                          "Create user queries are not the same")
        self.assertEquals(keyArgs['user'], 'root')
        self.assertEquals(keyArgs['host'], '%')
        args, keyArgs = args_list[1]
        self.assertTrue("UPDATE mysql.user" in args[0].text)
        args, keyArgs = args_list[2]
        self.assertTrue("GRANT ALL PRIVILEGES ON *.*" in args[0].text)

        self.assertEqual(3, dbaas.LocalSqlClient.execute.call_count)

    def test_enable_root_failed(self):
        models.MySQLUser._is_valid_user_name =\
            MagicMock(return_value=False)
        self.assertRaises(ValueError, self.mySqlAdmin.enable_root)

    def test_is_root_enable(self):
        self.mySqlAdmin.is_root_enabled()
        args, _ = dbaas.LocalSqlClient.execute.call_args
        self.assertTrue("""SELECT User FROM mysql.user where User = '******'
                        and host != 'localhost';""" in args[0].text)

    def test_list_databases(self):
        self.mySqlAdmin.list_databases()
        args, _ = dbaas.LocalSqlClient.execute.call_args

        self.assertTrue("SELECT schema_name as name," in args[0].text)
        self.assertTrue("default_character_set_name as charset,"
                        in args[0].text)
        self.assertTrue("default_collation_name as collation" in args[0].text)

        self.assertTrue("FROM information_schema.schemata" in args[0].text)

        self.assertTrue('''schema_name not in (
                            'mysql', 'information_schema',
                            'lost+found', '#mysql50#lost+found'
                        )''' in args[0].text)
        self.assertTrue("ORDER BY schema_name ASC" in args[0].text)
        self.assertFalse("LIMIT " in args[0].text)

    def test_list_databases_with_limit(self):
        limit = 2
        self.mySqlAdmin.list_databases(limit)
        args, _ = dbaas.LocalSqlClient.execute.call_args

        self.assertTrue("SELECT schema_name as name," in args[0].text)
        self.assertTrue("default_character_set_name as charset,"
                        in args[0].text)
        self.assertTrue("default_collation_name as collation" in args[0].text)

        self.assertTrue("FROM information_schema.schemata" in args[0].text)

        self.assertTrue('''schema_name not in (
                            'mysql', 'information_schema',
                            'lost+found', '#mysql50#lost+found'
                        )''' in args[0].text)
        self.assertTrue("ORDER BY schema_name ASC" in args[0].text)

        self.assertTrue("LIMIT " + str(limit + 1) in args[0].text)

    def test_list_databases_with_marker(self):
        marker = "aMarker"
        self.mySqlAdmin.list_databases(marker=marker)
        args, _ = dbaas.LocalSqlClient.execute.call_args

        self.assertTrue("SELECT schema_name as name," in args[0].text)
        self.assertTrue("default_character_set_name as charset,"
                        in args[0].text)
        self.assertTrue("default_collation_name as collation" in args[0].text)

        self.assertTrue("FROM information_schema.schemata" in args[0].text)

        self.assertTrue('''schema_name not in (
                            'mysql', 'information_schema',
                            'lost+found', '#mysql50#lost+found'
                        )''' in args[0].text)
        self.assertTrue("ORDER BY schema_name ASC" in args[0].text)

        self.assertFalse("LIMIT " in args[0].text)

        self.assertTrue("AND schema_name > '" + marker + "'" in args[0].text)

    def test_list_databases_with_include_marker(self):
        marker = "aMarker"
        self.mySqlAdmin.list_databases(marker=marker, include_marker=True)
        args, _ = dbaas.LocalSqlClient.execute.call_args

        self.assertTrue("SELECT schema_name as name," in args[0].text)
        self.assertTrue("default_character_set_name as charset,"
                        in args[0].text)
        self.assertTrue("default_collation_name as collation" in args[0].text)

        self.assertTrue("FROM information_schema.schemata"
                        in args[0].text)

        self.assertTrue('''schema_name not in (
                            'mysql', 'information_schema',
                            'lost+found', '#mysql50#lost+found'
                        )''' in args[0].text)
        self.assertTrue("ORDER BY schema_name ASC" in args[0].text)

        self.assertFalse("LIMIT " in args[0].text)

        self.assertTrue("AND schema_name >= '" + marker + "'" in args[0].text)

    def test_list_users(self):
        self.mySqlAdmin.list_users()
        args, _ = dbaas.LocalSqlClient.execute.call_args

        self.assertTrue("SELECT User" in args[0].text)

        self.assertTrue("FROM mysql.user" in args[0].text)

        self.assertTrue("WHERE host != 'localhost'" in args[0].text)
        self.assertTrue("ORDER BY User" in args[0].text)
        self.assertFalse("LIMIT " in args[0].text)
        self.assertFalse("AND User > '" in args[0].text)

    def test_list_users_with_limit(self):
        limit = 2
        self.mySqlAdmin.list_users(limit)
        args, _ = dbaas.LocalSqlClient.execute.call_args

        self.assertTrue("SELECT User" in args[0].text)

        self.assertTrue("FROM mysql.user" in args[0].text)

        self.assertTrue("WHERE host != 'localhost'" in args[0].text)
        self.assertTrue("ORDER BY User" in args[0].text)

        self.assertTrue("LIMIT " + str(limit + 1) in args[0].text)

    def test_list_users_with_marker(self):
        marker = "aMarker"
        self.mySqlAdmin.list_users(marker=marker)
        args, _ = dbaas.LocalSqlClient.execute.call_args

        self.assertTrue("SELECT User" in args[0].text)

        self.assertTrue("FROM mysql.user" in args[0].text)

        self.assertTrue("WHERE host != 'localhost'" in args[0].text)
        self.assertTrue("ORDER BY User" in args[0].text)

        self.assertFalse("LIMIT " in args[0].text)

        self.assertTrue("AND User > '" + marker + "'" in args[0].text)

    def test_list_users_with_include_marker(self):
        marker = "aMarker"
        self.mySqlAdmin.list_users(marker=marker, include_marker=True)
        args, _ = dbaas.LocalSqlClient.execute.call_args

        self.assertTrue("SELECT User" in args[0].text)

        self.assertTrue("FROM mysql.user" in args[0].text)

        self.assertTrue("WHERE host != 'localhost'" in args[0].text)
        self.assertTrue("ORDER BY User" in args[0].text)

        self.assertFalse("LIMIT " in args[0].text)

        self.assertTrue("AND User >= '" + marker + "'" in args[0].text)
예제 #3
0
class EnableRootTest(MySqlAdminTest):
    def setUp(self):
        super(EnableRootTest, self).setUp()
        self.origin_is_valid_user_name = models.MySQLUser._is_valid_user_name
        self.mySqlAdmin = MySqlAdmin()

    def tearDown(self):
        super(EnableRootTest, self).tearDown()
        models.MySQLUser._is_valid_user_name = self.origin_is_valid_user_name

    def test_enable_root(self):
        models.MySQLUser._is_valid_user_name = MagicMock(return_value=True)
        self.mySqlAdmin.enable_root()
        args_list = dbaas.LocalSqlClient.execute.call_args_list
        args, keyArgs = args_list[0]

        self.assertEquals(args[0].text.strip(), "CREATE USER :user@:host;", "Create user queries are not the same")
        self.assertEquals(keyArgs["user"], "root")
        self.assertEquals(keyArgs["host"], "%")

        args, keyArgs = args_list[1]
        self.assertTrue("UPDATE mysql.user" in args[0].text)
        args, keyArgs = args_list[2]
        self.assertTrue("GRANT ALL PRIVILEGES ON *.*" in args[0].text)

        self.assertEqual(3, dbaas.LocalSqlClient.execute.call_count)

    def test_enable_root_failed(self):
        models.MySQLUser._is_valid_user_name = MagicMock(return_value=False)
        self.assertRaises(ValueError, self.mySqlAdmin.enable_root)

    def test_is_root_enable(self):
        self.mySqlAdmin.is_root_enabled()
        args, _ = dbaas.LocalSqlClient.execute.call_args
        expected = """SELECT User FROM mysql.user WHERE User = '******' """ """AND Host != 'localhost';"""
        self.assertTrue(expected in args[0].text, "%s not in query." % expected)

    def test_list_databases(self):
        self.mySqlAdmin.list_databases()
        args, _ = dbaas.LocalSqlClient.execute.call_args
        expected = [
            "SELECT schema_name as name,",
            "default_character_set_name as charset,",
            "default_collation_name as collation",
            "FROM information_schema.schemata",
            ("schema_name NOT IN (" "'mysql', 'information_schema', " "'lost+found', '#mysql50#lost+found'" ")"),
            "ORDER BY schema_name ASC",
        ]
        for text in expected:
            self.assertTrue(text in args[0].text, "%s not in query." % text)
        self.assertFalse("LIMIT " in args[0].text)

    def test_list_databases_with_limit(self):
        limit = 2
        self.mySqlAdmin.list_databases(limit)
        args, _ = dbaas.LocalSqlClient.execute.call_args
        expected = [
            "SELECT schema_name as name,",
            "default_character_set_name as charset,",
            "default_collation_name as collation",
            "FROM information_schema.schemata",
            ("schema_name NOT IN (" "'mysql', 'information_schema', " "'lost+found', '#mysql50#lost+found'" ")"),
            "ORDER BY schema_name ASC",
        ]
        for text in expected:
            self.assertTrue(text in args[0].text, "%s not in query." % text)

        self.assertTrue("LIMIT " + str(limit + 1) in args[0].text)

    def test_list_databases_with_marker(self):
        marker = "aMarker"
        self.mySqlAdmin.list_databases(marker=marker)
        args, _ = dbaas.LocalSqlClient.execute.call_args
        expected = [
            "SELECT schema_name as name,",
            "default_character_set_name as charset,",
            "default_collation_name as collation",
            "FROM information_schema.schemata",
            ("schema_name NOT IN (" "'mysql', 'information_schema', " "'lost+found', '#mysql50#lost+found'" ")"),
            "ORDER BY schema_name ASC",
        ]

        for text in expected:
            self.assertTrue(text in args[0].text, "%s not in query." % text)

        self.assertFalse("LIMIT " in args[0].text)

        self.assertTrue("AND schema_name > '" + marker + "'" in args[0].text)

    def test_list_databases_with_include_marker(self):
        marker = "aMarker"
        self.mySqlAdmin.list_databases(marker=marker, include_marker=True)
        args, _ = dbaas.LocalSqlClient.execute.call_args
        expected = [
            "SELECT schema_name as name,",
            "default_character_set_name as charset,",
            "default_collation_name as collation",
            "FROM information_schema.schemata",
            ("schema_name NOT IN (" "'mysql', 'information_schema', " "'lost+found', '#mysql50#lost+found'" ")"),
            "ORDER BY schema_name ASC",
        ]
        for text in expected:
            self.assertTrue(text in args[0].text, "%s not in query." % text)

        self.assertFalse("LIMIT " in args[0].text)

        self.assertTrue(("AND schema_name >= '%s'" % marker) in args[0].text)

    def test_list_users(self):
        self.mySqlAdmin.list_users()
        args, _ = dbaas.LocalSqlClient.execute.call_args

        expected = ["SELECT User, Host", "FROM mysql.user", "WHERE Host != 'localhost'", "ORDER BY User"]
        for text in expected:
            self.assertTrue(text in args[0].text, "%s not in query." % text)

        self.assertFalse("LIMIT " in args[0].text)
        self.assertFalse("AND Marker > '" in args[0].text)

    def test_list_users_with_limit(self):
        limit = 2
        self.mySqlAdmin.list_users(limit)
        args, _ = dbaas.LocalSqlClient.execute.call_args

        expected = [
            "SELECT User, Host",
            "FROM mysql.user",
            "WHERE Host != 'localhost'",
            "ORDER BY User",
            ("LIMIT " + str(limit + 1)),
        ]
        for text in expected:
            self.assertTrue(text in args[0].text, "%s not in query." % text)

    def test_list_users_with_marker(self):
        marker = "aMarker"
        self.mySqlAdmin.list_users(marker=marker)
        args, _ = dbaas.LocalSqlClient.execute.call_args

        expected = ["SELECT User, Host, Marker", "FROM mysql.user", "WHERE Host != 'localhost'", "ORDER BY User"]

        for text in expected:
            self.assertTrue(text in args[0].text, "%s not in query." % text)

        self.assertFalse("LIMIT " in args[0].text)
        self.assertTrue("AND Marker > '" + marker + "'" in args[0].text)

    def test_list_users_with_include_marker(self):
        marker = "aMarker"
        self.mySqlAdmin.list_users(marker=marker, include_marker=True)
        args, _ = dbaas.LocalSqlClient.execute.call_args

        expected = ["SELECT User, Host", "FROM mysql.user", "WHERE Host != 'localhost'", "ORDER BY User"]

        for text in expected:
            self.assertTrue(text in args[0].text, "%s not in query." % text)

        self.assertFalse("LIMIT " in args[0].text)

        self.assertTrue("AND Marker >= '" + marker + "'" in args[0].text)