Fix Armada raising 500 following unsupported media type

This ensures Armada's POST apply endpoint returns a 415 as
expected rather than a 500. Unit test added for regression.

Change-Id: I765d5e8992f66a3dba3dc3b883fb4037ba1c6d05
This commit is contained in:
Felipe Monteiro 2018-03-29 21:42:37 +01:00
parent efd42dfab2
commit 2f1997c8b1
2 changed files with 16 additions and 1 deletions

View File

@ -64,7 +64,8 @@ class Apply(api.BaseResource):
else:
self.error(req.context, "Unknown content-type %s"
% req.content_type)
self.return_error(
# TODO(fmontei): Use falcon.<Relevant API Exception Class> instead.
return self.return_error(
resp,
falcon.HTTP_415,
message="Request must be in application/x-yaml"

View File

@ -106,6 +106,20 @@ class ArmadaControllerTest(base.BaseControllerTest):
self.assertEqual(result.status_code, 400)
class ArmadaControllerNegativeTest(base.BaseControllerTest):
@test_utils.attr(type=['negative'])
def test_armada_apply_raises_415_given_unsupported_media_type(self):
"""Tests the POST /api/v1.0/apply endpoint returns 415 given
unsupported media type.
"""
rules = {'armada:create_endpoints': '@'}
self.policy.set_rules(rules)
resp = self.app.simulate_post('/api/v1.0/apply', body=None)
self.assertEqual(415, resp.status_code)
class ArmadaControllerNegativeRbacTest(base.BaseControllerTest):
@test_utils.attr(type=['negative'])