46 lines
1.2 KiB
Ruby
46 lines
1.2 KiB
Ruby
|
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
|