aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack
diff options
context:
space:
mode:
authorJeremy Kemper <jeremy@bitsweat.net>2006-12-06 23:06:38 +0000
committerJeremy Kemper <jeremy@bitsweat.net>2006-12-06 23:06:38 +0000
commit91d99e2f5312688d99583a2ed5a08e17022a4218 (patch)
treef526f06e96195a8038fd5ee2ac5566308bbe4f47 /actionpack
parent42596543dc0bac7aad9763b82ee4cc2b17f3110c (diff)
downloadrails-91d99e2f5312688d99583a2ed5a08e17022a4218.tar.gz
rails-91d99e2f5312688d99583a2ed5a08e17022a4218.tar.bz2
rails-91d99e2f5312688d99583a2ed5a08e17022a4218.zip
More thorough JSON tests. Use application/json by default, per rfc4627. References #4185.
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@5695 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'actionpack')
-rw-r--r--actionpack/lib/action_controller/mime_types.rb6
-rw-r--r--actionpack/test/controller/mime_responds_test.rb24
-rw-r--r--actionpack/test/controller/render_test.rb10
3 files changed, 26 insertions, 14 deletions
diff --git a/actionpack/lib/action_controller/mime_types.rb b/actionpack/lib/action_controller/mime_types.rb
index 4b6a00da1d..bc458d85fa 100644
--- a/actionpack/lib/action_controller/mime_types.rb
+++ b/actionpack/lib/action_controller/mime_types.rb
@@ -2,10 +2,12 @@ Mime::Type.register "*/*", :all
Mime::Type.register "text/plain", :text
Mime::Type.register "text/html", :html, %w( application/xhtml+xml ), %w( xhtml )
Mime::Type.register "text/javascript", :js, %w( application/javascript application/x-javascript )
-Mime::Type.register "text/x-json", :json, %w( application/x-json )
Mime::Type.register "text/calendar", :ics
Mime::Type.register "text/csv", :csv
Mime::Type.register "application/xml", :xml, %w( text/xml application/x-xml )
Mime::Type.register "application/rss+xml", :rss
Mime::Type.register "application/atom+xml", :atom
-Mime::Type.register "application/x-yaml", :yaml, %w( text/yaml ) \ No newline at end of file
+Mime::Type.register "application/x-yaml", :yaml, %w( text/yaml )
+
+# http://www.ietf.org/rfc/rfc4627.txt
+Mime::Type.register "application/json", :json, %w( text/x-json )
diff --git a/actionpack/test/controller/mime_responds_test.rb b/actionpack/test/controller/mime_responds_test.rb
index 8f1c56710f..c4d8709fc3 100644
--- a/actionpack/test/controller/mime_responds_test.rb
+++ b/actionpack/test/controller/mime_responds_test.rb
@@ -170,18 +170,26 @@ class MimeControllerTest < Test::Unit::TestCase
get :just_xml
assert_response 406
end
-
+
def test_json_or_yaml
get :json_or_yaml
assert_equal 'JSON', @response.body
-
- @request.env["HTTP_ACCEPT"] = "text/yaml"
- get :json_or_yaml
- assert_equal 'YAML', @response.body
-
- @request.env["HTTP_ACCEPT"] = "text/x-json"
- get :json_or_yaml
+
+ get :json_or_yaml, :format => 'json'
assert_equal 'JSON', @response.body
+
+ get :json_or_yaml, :format => 'yaml'
+ assert_equal 'YAML', @response.body
+
+ { 'YAML' => %w(text/yaml),
+ 'JSON' => %w(application/json text/x-json)
+ }.each do |body, content_types|
+ content_types.each do |content_type|
+ @request.env['HTTP_ACCEPT'] = content_type
+ get :json_or_yaml
+ assert_equal body, @response.body
+ end
+ end
end
def test_js_or_anything
diff --git a/actionpack/test/controller/render_test.rb b/actionpack/test/controller/render_test.rb
index 3cff829f8a..b223862c9e 100644
--- a/actionpack/test/controller/render_test.rb
+++ b/actionpack/test/controller/render_test.rb
@@ -38,11 +38,11 @@ class TestController < ActionController::Base
def render_text_hello_world
render_text "hello world"
end
-
+
def render_json_hello_world
render_json({:hello => 'world'}.to_json)
end
-
+
def render_json_hello_world_with_callback
render_json({:hello => 'world'}.to_json, 'alert')
end
@@ -171,15 +171,17 @@ class RenderTest < Test::Unit::TestCase
get :render_text_hello_world
assert_equal "hello world", @response.body
end
-
+
def test_do_with_render_json
get :render_json_hello_world
assert_equal '{hello: "world"}', @response.body
+ assert_equal 'application/json', @response.content_type
end
-
+
def test_do_with_render_json_with_callback
get :render_json_hello_world_with_callback
assert_equal 'alert({hello: "world"})', @response.body
+ assert_equal 'application/json', @response.content_type
end
def test_do_with_render_custom_code