From 2f1997c8b1acfc25b59275d10db0e3539e8b15b8 Mon Sep 17 00:00:00 2001 From: Felipe Monteiro Date: Thu, 29 Mar 2018 21:42:37 +0100 Subject: [PATCH] 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 --- armada/api/controller/armada.py | 3 ++- armada/tests/unit/api/test_armada_controller.py | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/armada/api/controller/armada.py b/armada/api/controller/armada.py index 24c48a9a..e2dac5b0 100644 --- a/armada/api/controller/armada.py +++ b/armada/api/controller/armada.py @@ -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. instead. + return self.return_error( resp, falcon.HTTP_415, message="Request must be in application/x-yaml" diff --git a/armada/tests/unit/api/test_armada_controller.py b/armada/tests/unit/api/test_armada_controller.py index a9105c12..46d7e682 100644 --- a/armada/tests/unit/api/test_armada_controller.py +++ b/armada/tests/unit/api/test_armada_controller.py @@ -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'])