Adds error handling for patching missing plans

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: I8e9045998492b3b9f029d5c035546fe725dd589d
This commit is contained in:
Petr Blaho 2014-09-04 13:45:40 +02:00
parent 452aed4b22
commit 002d347e72
2 changed files with 21 additions and 1 deletions

View File

@ -162,6 +162,10 @@ class PlansController(rest.RestController):
"""
manager = PlansManager()
params = [p.to_tuskar_model() for p in param_list]
updated_plan = manager.set_parameter_values(plan_uuid, params)
try:
updated_plan = manager.set_parameter_values(plan_uuid, params)
except storage_exceptions.UnknownUUID:
LOG.exception('Could not patch plan: %s' % plan_uuid)
raise exception.PlanNotFound()
transfer_plan = models.Plan.from_tuskar_model(updated_plan)
return transfer_plan

View File

@ -243,3 +243,19 @@ class PlansTests(base.TestCase):
self.assertEqual(mock_set.call_args[0][1][0].value, 'bar')
self.assertEqual(response.status_int, 201)
self.assertEqual(result['name'], p.name)
@mock.patch('tuskar.manager.plan.PlansManager.set_parameter_values')
def test_patch_missing_plan(self, mock_set):
# Setup
mock_set.side_effect = storage_exceptions.UnknownUUID()
# Test
values = [{'name': 'foo', 'value': 'bar'}]
url = URL_PLANS + '/' + 'qwerty12345'
response = self.app.patch_json(url, values, status=404)
# Verify
self.assertEqual(mock_set.call_args[0][0], 'qwerty12345')
self.assertEqual(mock_set.call_args[0][1][0].name, 'foo')
self.assertEqual(mock_set.call_args[0][1][0].value, 'bar')
self.assertEqual(response.status_int, 404)