From 3159c3c3f715250ef97e468eb155b868322b0426 Mon Sep 17 00:00:00 2001 From: mmd-osm Date: Wed, 22 Jan 2020 22:33:30 +0100 Subject: [PATCH] JSON: return HTTP 406 for unsupported formats --- app/controllers/application_controller.rb | 2 ++ test/controllers/api/map_controller_test.rb | 9 ++++----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index bee5e8169..f419460ee 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -185,6 +185,8 @@ class ApplicationController < ActionController::Base def api_call_handle_error yield + rescue ActionController::UnknownFormat + head :not_acceptable rescue ActiveRecord::RecordNotFound => e head :not_found rescue LibXML::XML::Error, ArgumentError => e diff --git a/test/controllers/api/map_controller_test.rb b/test/controllers/api/map_controller_test.rb index d5cbfb4ef..9f14cc7fd 100644 --- a/test/controllers/api/map_controller_test.rb +++ b/test/controllers/api/map_controller_test.rb @@ -95,16 +95,15 @@ module Api assert_response :success, "Expected success with the map call" assert_equal "application/json; charset=utf-8", @response.header["Content-Type"] - # text/json is in invalid format, ActionController::UnknownFormat error is expected + # text/json is in invalid format, return HTTP 406 Not acceptable http_accept_format("text/json") get :index, :params => { :bbox => bbox } - assert_response :internal_server_error, "text/json should fail" + assert_response :not_acceptable, "text/json should fail" - # image/jpeg is a format which we don't support, ActionController::UnknownFormat error is expected - # HTTP 406 Not acceptable would be the correct response error code. That's outside of our control though. + # image/jpeg is a format which we don't support, return HTTP 406 Not acceptable http_accept_format("image/jpeg") get :index, :params => { :bbox => bbox } - assert_response :internal_server_error, "text/json should fail" + assert_response :not_acceptable, "text/json should fail" end # ------------------------------------- -- 2.43.2