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)
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)
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)