From fdd5367ebab20caf34013e06d266daef1ddb30e5 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Sat, 23 Jul 2011 19:45:23 +0000 Subject: [PATCH] Respond with errors and appropriate content type on /issues API calls with invalid query params (#8883). git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@6309 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/controllers/issues_controller.rb | 6 ++++-- test/integration/api_test/issues_test.rb | 10 ++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb index 7e6510341..c8778b473 100644 --- a/app/controllers/issues_controller.rb +++ b/app/controllers/issues_controller.rb @@ -96,8 +96,10 @@ class IssuesController < ApplicationController format.pdf { send_data(issues_to_pdf(@issues, @project, @query), :type => 'application/pdf', :filename => 'export.pdf') } end else - # Send html if the query is not valid - render(:template => 'issues/index.rhtml', :layout => !request.xhr?) + respond_to do |format| + format.any(:html, :atom, :csv, :pdf) { render(:template => 'issues/index.rhtml', :layout => !request.xhr?) } + format.api { render_validation_errors(@query) } + end end rescue ActiveRecord::RecordNotFound render_404 diff --git a/test/integration/api_test/issues_test.rb b/test/integration/api_test/issues_test.rb index 763cf34d5..3dbd229a2 100644 --- a/test/integration/api_test/issues_test.rb +++ b/test/integration/api_test/issues_test.rb @@ -101,6 +101,16 @@ class ApiTest::IssuesTest < ActionController::IntegrationTest } end end + + context "with invalid query params" do + should "return errors" do + get '/issues.xml', {:f => ['start_date'], :op => {:start_date => '='}} + + assert_response :unprocessable_entity + assert_equal 'application/xml', @response.content_type + assert_tag 'errors', :child => {:tag => 'error', :content => "Start date can't be blank"} + end + end end context "/index.json" do -- 2.39.5