mirror of
https://github.com/github/rails.git
synced 2026-02-17 17:41:39 -05:00
Refactor request json params parsing tests
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
require 'abstract_unit'
|
||||
|
||||
class JsonParamsParsingTest < ActionController::IntegrationTest
|
||||
class TestController < ActionController::Base
|
||||
class << self
|
||||
attr_accessor :last_request_parameters
|
||||
end
|
||||
|
||||
def parse
|
||||
self.class.last_request_parameters = request.request_parameters
|
||||
head :ok
|
||||
end
|
||||
end
|
||||
|
||||
def teardown
|
||||
TestController.last_request_parameters = nil
|
||||
end
|
||||
|
||||
test "parses json params for application json" do
|
||||
assert_parses(
|
||||
{"person" => {"name" => "David"}},
|
||||
"{\"person\": {\"name\": \"David\"}}", { 'CONTENT_TYPE' => 'application/json' }
|
||||
)
|
||||
end
|
||||
|
||||
test "parses json params for application jsonrequest" do
|
||||
assert_parses(
|
||||
{"person" => {"name" => "David"}},
|
||||
"{\"person\": {\"name\": \"David\"}}", { 'CONTENT_TYPE' => 'application/jsonrequest' }
|
||||
)
|
||||
end
|
||||
|
||||
private
|
||||
def assert_parses(expected, actual, headers = {})
|
||||
with_routing do |set|
|
||||
set.draw do |map|
|
||||
map.connect ':action', :controller => "json_params_parsing_test/test"
|
||||
end
|
||||
|
||||
post "/parse", actual, headers
|
||||
assert_response :ok
|
||||
assert_equal(expected, TestController.last_request_parameters)
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -764,25 +764,3 @@ class LegacyXmlParamsParsingTest < XmlParamsParsingTest
|
||||
ActionController::Request.new(env).request_parameters
|
||||
end
|
||||
end
|
||||
|
||||
class JsonParamsParsingTest < ActiveSupport::TestCase
|
||||
def test_hash_params_for_application_json
|
||||
person = parse_body({:person => {:name => "David"}}.to_json,'application/json')[:person]
|
||||
assert_kind_of Hash, person
|
||||
assert_equal 'David', person['name']
|
||||
end
|
||||
|
||||
def test_hash_params_for_application_jsonrequest
|
||||
person = parse_body({:person => {:name => "David"}}.to_json,'application/jsonrequest')[:person]
|
||||
assert_kind_of Hash, person
|
||||
assert_equal 'David', person['name']
|
||||
end
|
||||
|
||||
private
|
||||
def parse_body(body,content_type)
|
||||
env = { 'rack.input' => StringIO.new(body),
|
||||
'CONTENT_TYPE' => content_type,
|
||||
'CONTENT_LENGTH' => body.size.to_s }
|
||||
ActionController::Request.new(env).request_parameters
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user