Adds error handling for remove_role from plan API

Adds try-except block to catch UnknownUUID exception
and raise PlanNotFound which is handled correctly
and Tuskar returns 404 HTTP status.
Add tests.

Change-Id: I56d7f92d9e9c69f115bca0a5b526eeb67f0cec2a
This commit is contained in:
Petr Blaho 2014-09-04 14:06:30 +02:00
parent 002d347e72
commit 785582b8f0
2 changed files with 20 additions and 1 deletions

View File

@ -96,6 +96,12 @@ class RolesController(rest.RestController):
LOG.debug('Removing role: %(role_uuid)s from plan: %(plan_uuid)s' %
{'role_uuid': role_uuid, 'plan_uuid': plan_uuid})
manager = PlansManager()
updated_plan = manager.remove_role_from_plan(plan_uuid, role_uuid)
try:
updated_plan = manager.remove_role_from_plan(plan_uuid, role_uuid)
except storage_exceptions.UnknownUUID as e:
LOG.debug(('Either the plan UUID {0} or role UUID {1} could not be'
'found').format(plan_uuid, role_uuid))
raise exception.NotFound(
message=str(e))
transfer_plan = models.Plan.from_tuskar_model(updated_plan)
return transfer_plan

View File

@ -118,3 +118,16 @@ class RolesTests(base.TestCase):
self.assertEqual(response.status_int, 200)
self.assertEqual(result['uuid'], 'a')
self.assertEqual(result['name'], 'n')
@mock.patch('tuskar.manager.plan.PlansManager.remove_role_from_plan')
def test_delete_unkown_uuid(self, mock_remove):
# Setup
mock_remove.side_effect = storage_exceptions.UnknownUUID()
# Test
response = self.app.delete_json(URL_PLAN_ROLES + '/qwerty12345',
status=404)
# Verify
mock_remove.assert_called_once_with('plan_uuid', 'qwerty12345')
self.assertEqual(response.status_int, 404)