Browse Source

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
tags/1.3.0
Jean-Philippe Lang 13 years ago
parent
commit
fdd5367eba
2 changed files with 14 additions and 2 deletions
  1. 4
    2
      app/controllers/issues_controller.rb
  2. 10
    0
      test/integration/api_test/issues_test.rb

+ 4
- 2
app/controllers/issues_controller.rb View File

@@ -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

+ 10
- 0
test/integration/api_test/issues_test.rb View File

@@ -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

Loading…
Cancel
Save