Skip to content

Commit

Permalink
Refactor request json params parsing tests
Browse files Browse the repository at this point in the history
  • Loading branch information
josh committed Jan 9, 2009
1 parent ac4bf11 commit 38a723e
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 22 deletions.
45 changes: 45 additions & 0 deletions actionpack/test/controller/request/json_params_parsing_test.rb
@@ -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
22 changes: 0 additions & 22 deletions actionpack/test/controller/request_test.rb
Expand Up @@ -764,25 +764,3 @@ def parse_body(body)
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

0 comments on commit 38a723e

Please sign in to comment.