FIX: return 400 for missing required params (#6546)

If a required param is missing return a 400 and show a message
displaying which param was missing. Added this to the application
controller so that we don't have to add this logic to every controller
action.
This commit is contained in:
Blake Erickson 2018-10-30 20:02:48 -06:00 committed by Sam
parent 31ad7a60ab
commit 589e3fcaa0
2 changed files with 15 additions and 0 deletions

View File

@ -219,6 +219,10 @@ class ApplicationController < ActionController::Base
render_json_error I18n.t('read_only_mode_enabled'), type: :read_only, status: 503
end
rescue_from ActionController::ParameterMissing do |e|
render_json_error e.message, status: 400
end
def redirect_with_client_support(url, options)
if request.xhr?
response.headers['Discourse-Xhr-Redirect'] = 'true'

View File

@ -42,6 +42,17 @@ RSpec.describe ApplicationController do
end
end
describe 'missing required param' do
it 'should return a 400' do
get "/search/query.json", params: { trem: "misspelled term" }
expect(response.status).to eq(400)
expect(JSON.parse(response.body)).to eq(
"errors" => ["param is missing or the value is empty: term"]
)
end
end
describe 'build_not_found_page' do
describe 'topic not found' do