Merge "Users can now be deleted within trove."

This commit is contained in:
Jenkins 2014-07-04 11:29:30 +00:00 committed by Gerrit Code Review
commit c1ecea1dd7
3 changed files with 72 additions and 12 deletions

View File

@ -67,7 +67,7 @@ class DeleteUser(tables.DeleteAction):
def delete(self, request, obj_id):
datum = self.table.get_object_by_id(obj_id)
try:
api.trove.users_delete(request, datum.instance.id, datum.name)
api.trove.user_delete(request, datum.instance.id, datum.name)
except Exception:
msg = _('Error deleting database user.')
exceptions.handle(request, msg)

View File

@ -82,8 +82,7 @@ class DatabaseTests(test.TestCase):
# Mock database instances
databases = self.databases.list()
last_record = databases[-1]
databases = common.Paginated(databases,
next_marker="foo")
databases = common.Paginated(databases, next_marker="foo")
api.trove.instance_list(IsA(http.HttpRequest), marker=None)\
.AndReturn(databases)
# Mock flavors
@ -236,3 +235,43 @@ class DatabaseTests(test.TestCase):
def test_details_with_hostname(self):
database = self.databases.list()[1]
self._test_details(database, with_designate=True)
@test.create_stubs(
{api.trove: ('instance_get', 'flavor_get', 'users_list',
'user_list_access', 'user_delete')})
def test_user_delete(self):
database = self.databases.first()
user = self.database_users.first()
user_db = self.database_user_dbs.first()
database_id = database.id
# Instead of using the user's ID, the api uses the user's name. BOOO!
user_id = user.name
# views.py: DetailView.get_data
api.trove.instance_get(IsA(http.HttpRequest), IsA(unicode))\
.AndReturn(database)
api.trove.flavor_get(IsA(http.HttpRequest), IsA(str))\
.AndReturn(self.flavors.first())
# tabs.py: UserTab.get_user_data
api.trove.users_list(IsA(http.HttpRequest),
database_id).AndReturn([user])
api.trove.user_list_access(IsA(http.HttpRequest),
database_id,
user_id).AndReturn([user_db])
# tables.py: DeleteUser.delete
api.trove.user_delete(IsA(http.HttpRequest),
database_id,
user_id).AndReturn(None)
self.mox.ReplayAll()
details_url = reverse('horizon:project:databases:detail',
args=[database_id])
url = details_url + '?tab=instance_details__users_tab'
action_string = u"users__delete__%s" % user_id
form_data = {'action': action_string}
res = self.client.post(url, form_data)
self.assertRedirectsNoFollow(res, url)

View File

@ -13,7 +13,9 @@
# under the License.
from troveclient.v1 import backups
from troveclient.v1 import databases
from troveclient.v1 import instances
from troveclient.v1 import users
from openstack_dashboard.test.test_data import utils
@ -25,17 +27,17 @@ DATABASE_DATA_ONE = {
"links": [],
"created": "2013-08-12T22:00:03",
"ip": [
"10.0.0.3"
"10.0.0.3",
],
"volume": {
"used": 0.13,
"size": 1
"size": 1,
},
"flavor": {
"id": "1",
"links": []
"links": [],
},
"id": "6ddc36d9-73db-4e23-b52e-368937d72719"
"id": "6ddc36d9-73db-4e23-b52e-368937d72719",
}
DATABASE_DATA_TWO = {
@ -47,13 +49,13 @@ DATABASE_DATA_TWO = {
"hostname": "trove.instance-2.com",
"volume": {
"used": 0.13,
"size": 1
"size": 1,
},
"flavor": {
"id": "1",
"links": []
"links": [],
},
"id": "4d7b3f57-44f5-41d2-8e86-36b88cad572a"
"id": "4d7b3f57-44f5-41d2-8e86-36b88cad572a",
}
BACKUP_ONE = {
@ -65,7 +67,7 @@ BACKUP_ONE = {
"created": "2013-08-15T18:10:14",
"size": 0.13,
"id": "0edb3c14-8919-4583-9add-00df9e524081",
"description": "Long description of backup"
"description": "Long description of backup",
}
@ -78,7 +80,19 @@ BACKUP_TWO = {
"created": "2013-08-10T20:20:37",
"size": 0.13,
"id": "e4602a3c-2bca-478f-b059-b6c215510fb4",
"description": "Longer description of backup"
"description": "Longer description of backup",
}
USER_ONE = {
"name": "Test_User",
"host": "%",
"databases": [DATABASE_DATA_ONE["name"]],
}
USER_DB_ONE = {
"name": "db1",
}
@ -89,10 +103,17 @@ def data(TEST):
DATABASE_DATA_TWO)
bkup1 = backups.Backup(backups.Backups(None), BACKUP_ONE)
bkup2 = backups.Backup(backups.Backups(None), BACKUP_TWO)
user1 = users.User(users.Users(None), USER_ONE)
user_db1 = databases.Database(databases.Databases(None),
USER_DB_ONE)
TEST.databases = utils.TestDataContainer()
TEST.database_backups = utils.TestDataContainer()
TEST.database_users = utils.TestDataContainer()
TEST.database_user_dbs = utils.TestDataContainer()
TEST.databases.add(database1)
TEST.databases.add(database2)
TEST.database_backups.add(bkup1)
TEST.database_backups.add(bkup2)
TEST.database_users.add(user1)
TEST.database_user_dbs.add(user_db1)