Files
trove/trove/tests/unittests/mysql/test_common.py
T
Petr Malik 8fa76ceff8 Update modules to turn on dangling mock detection
Make all test suites in the api, configuration, instance, network,
mysql, router, quota, db, and datastore modules extend
'trove_testtools.TestCase' to enable dangling mock detection.

Co-Authored-By: Peter Stachowski <peter@tesora.com>
Change-Id: If9326709d76972d66fb40b4984bbb5214b0c5189
Partial-Bug: 1448273
2015-05-12 18:56:28 -04:00

145 lines
6.3 KiB
Python

# Copyright 2013 OpenStack Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
from testtools.matchers import Equals
from testtools.matchers import Is
from trove.common.exception import DatabaseForUserNotInDatabaseListError
from trove.common.exception import DatabaseInitialDatabaseDuplicateError
from trove.common.exception import DatabaseInitialUserDuplicateError
from trove.extensions.mysql.common import populate_users
from trove.extensions.mysql.common import populate_validated_databases
from trove.tests.unittests import trove_testtools
class MySqlCommonTest(trove_testtools.TestCase):
def setUp(self):
super(MySqlCommonTest, self).setUp()
def tearDown(self):
super(MySqlCommonTest, self).tearDown()
def test_initial_databases_none(self):
databases = []
result = populate_validated_databases(databases)
self.assertThat(len(result), Is(0))
def test_initial_databases_single(self):
databases = [{'name': 'one_db'}]
result = populate_validated_databases(databases)
self.assertThat(len(result), Is(1))
self.assertThat(result[0]['_name'], Equals('one_db'))
def test_initial_databases_unique(self):
databases = [{'name': 'one_db'}, {'name': 'diff_db'}]
result = populate_validated_databases(databases)
self.assertThat(len(result), Is(2))
def test_initial_databases_duplicate(self):
databases = [{'name': 'same_db'}, {'name': 'same_db'}]
self.assertRaises(DatabaseInitialDatabaseDuplicateError,
populate_validated_databases, databases)
def test_initial_databases_intermingled(self):
databases = [{'name': 'a_db'}, {'name': 'b_db'}, {'name': 'a_db'}]
self.assertRaises(DatabaseInitialDatabaseDuplicateError,
populate_validated_databases, databases)
def test_populate_users_single(self):
users = [{'name': 'bob', 'password': 'x'}]
result = populate_users(users)
self.assertThat(len(result), Is(1))
self.assertThat(result[0]['_name'], Equals('bob'))
self.assertThat(result[0]['_password'], Equals('x'))
def test_populate_users_unique_host(self):
users = [{'name': 'bob', 'password': 'x', 'host': '127.0.0.1'},
{'name': 'bob', 'password': 'x', 'host': '128.0.0.1'}]
result = populate_users(users)
self.assertThat(len(result), Is(2))
def test_populate_users_unique_name(self):
users = [{'name': 'bob', 'password': 'x', 'host': '127.0.0.1'},
{'name': 'tom', 'password': 'x', 'host': '127.0.0.1'}]
result = populate_users(users)
self.assertThat(len(result), Is(2))
def test_populate_users_duplicate(self):
users = [{'name': 'bob', 'password': 'x', 'host': '127.0.0.1'},
{'name': 'bob', 'password': 'y', 'host': '127.0.0.1'}]
self.assertRaises(DatabaseInitialUserDuplicateError,
populate_users, users)
def test_populate_users_intermingled(self):
users = [{'name': 'bob', 'password': 'x', 'host': '127.0.0.1'},
{'name': 'tom', 'password': 'y', 'host': '128.0.0.1'},
{'name': 'bob', 'password': 'z', 'host': '127.0.0.1'}]
self.assertRaises(DatabaseInitialUserDuplicateError,
populate_users, users)
def test_populate_users_both_db_list_empty(self):
initial_databases = []
users = [{"name": "bob", "password": "x"}]
result = populate_users(users, initial_databases)
self.assertThat(len(result), Is(1))
def test_populate_users_initial_db_list_empty(self):
initial_databases = []
users = [{"name": "bob", "password": "x",
"databases": [{"name": "my_db"}]}]
self.assertRaises(DatabaseForUserNotInDatabaseListError,
populate_users, users, initial_databases)
def test_populate_users_user_db_list_empty(self):
initial_databases = ['my_db']
users = [{"name": "bob", "password": "x"}]
result = populate_users(users, initial_databases)
self.assertThat(len(result), Is(1))
def test_populate_users_db_in_list(self):
initial_databases = ['my_db']
users = [{"name": "bob", "password": "x",
"databases": [{"name": "my_db"}]}]
result = populate_users(users, initial_databases)
self.assertThat(len(result), Is(1))
def test_populate_users_db_multi_in_list(self):
initial_databases = ['a_db', 'b_db', 'c_db', 'd_db']
users = [{"name": "bob", "password": "x",
"databases": [{"name": "a_db"}]},
{"name": "tom", "password": "y",
"databases": [{"name": "c_db"}]},
{"name": "sue", "password": "z",
"databases": [{"name": "c_db"}]}]
result = populate_users(users, initial_databases)
self.assertThat(len(result), Is(3))
def test_populate_users_db_not_in_list(self):
initial_databases = ['a_db', 'b_db', 'c_db', 'd_db']
users = [{"name": "bob", "password": "x",
"databases": [{"name": "fake_db"}]}]
self.assertRaises(DatabaseForUserNotInDatabaseListError,
populate_users, users, initial_databases)
def test_populate_users_db_multi_not_in_list(self):
initial_databases = ['a_db', 'b_db', 'c_db', 'd_db']
users = [{"name": "bob", "password": "x",
"databases": [{"name": "a_db"}]},
{"name": "tom", "password": "y",
"databases": [{"name": "fake_db"}]},
{"name": "sue", "password": "z",
"databases": [{"name": "d_db"}]}]
self.assertRaises(DatabaseForUserNotInDatabaseListError,
populate_users, users, initial_databases)