Merge "Users can now be deleted within trove."
This commit is contained in:
commit
c1ecea1dd7
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user