aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBoris Peterbarg <boris@seekingalpha.com>2015-03-15 17:35:58 +0200
committerBoris Peterbarg <boris@seekingalpha.com>2015-03-16 06:35:00 +0200
commit4be3997c9f317e4295421d31204a31962206b55c (patch)
tree7c7852c1afbcc3bd6305962184444bf9316cfde4
parenta5a4b56029f1a83cfc81852f8ca76f9161abcbaa (diff)
downloadrails-4be3997c9f317e4295421d31204a31962206b55c.tar.gz
rails-4be3997c9f317e4295421d31204a31962206b55c.tar.bz2
rails-4be3997c9f317e4295421d31204a31962206b55c.zip
Compare content_type with Mime::XML instead of regexp
Regexp is broken for both content types including charsets and for integration tests, where the content_type is a Mime::Type and not String
-rw-r--r--actionpack/lib/action_dispatch/testing/assertions.rb2
-rw-r--r--actionpack/test/controller/integration_test.rb17
2 files changed, 18 insertions, 1 deletions
diff --git a/actionpack/lib/action_dispatch/testing/assertions.rb b/actionpack/lib/action_dispatch/testing/assertions.rb
index f325c35b57..21b3b89d22 100644
--- a/actionpack/lib/action_dispatch/testing/assertions.rb
+++ b/actionpack/lib/action_dispatch/testing/assertions.rb
@@ -12,7 +12,7 @@ module ActionDispatch
include Rails::Dom::Testing::Assertions
def html_document
- @html_document ||= if @response.content_type =~ /xml$/
+ @html_document ||= if @response.content_type === Mime::XML
Nokogiri::XML::Document.parse(@response.body)
else
Nokogiri::HTML::Document.parse(@response.body)
diff --git a/actionpack/test/controller/integration_test.rb b/actionpack/test/controller/integration_test.rb
index 9504914dba..f0d92eb427 100644
--- a/actionpack/test/controller/integration_test.rb
+++ b/actionpack/test/controller/integration_test.rb
@@ -363,6 +363,7 @@ class IntegrationProcessTest < ActionDispatch::IntegrationTest
respond_to do |format|
format.html { render :text => "OK", :status => 200 }
format.js { render :text => "JS OK", :status => 200 }
+ format.xml { render :xml => "<root></root>", :status => 200 }
end
end
@@ -419,6 +420,22 @@ class IntegrationProcessTest < ActionDispatch::IntegrationTest
end
end
+ def test_get_xml
+ with_test_route_set do
+ get "/get", {}, {"HTTP_ACCEPT" => "application/xml"}
+ assert_equal 200, status
+ assert_equal "OK", status_message
+ assert_response 200
+ assert_response :success
+ assert_response :ok
+ assert_equal({}, cookies.to_hash)
+ assert_equal "<root></root>", body
+ assert_equal "<root></root>", response.body
+ assert_instance_of Nokogiri::XML::Document, html_document
+ assert_equal 1, request_count
+ end
+ end
+
def test_post
with_test_route_set do
post '/post'