Sha256: 198f9be419b8d15a6beeb0c29f34efc9bf18096c3331774169415efdb3729a4e

Contents?: true

Size: 1.69 KB

Versions: 63

Compression:

Stored size: 1.69 KB

Contents

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

  test "logs error if parsing unsuccessful" do
    with_test_routing do
      begin
        $stderr = StringIO.new
        json = "[\"person]\": {\"name\": \"David\"}}"
        post "/parse", json, {'CONTENT_TYPE' => 'application/json'}
        assert_response :error
        $stderr.rewind && err = $stderr.read
        assert err =~ /Error occurred while parsing request parameters/
      ensure
        $stderr = STDERR
      end
    end
  end

  private
    def assert_parses(expected, actual, headers = {})
      with_test_routing do
        post "/parse", actual, headers
        assert_response :ok
        assert_equal(expected, TestController.last_request_parameters)
      end
    end

    def with_test_routing
      with_routing do |set|
        set.draw do |map|
          map.connect ':action', :controller => "json_params_parsing_test/test"
        end
        yield
      end
    end
end

Version data entries

63 entries across 63 versions & 13 rubygems

Version Path
actionpack-2.3.18 test/controller/request/json_params_parsing_test.rb
actionpack_csi-2.3.5.p8 test/controller/request/json_params_parsing_test.rb
actionpack-2.3.17-rack-upgrade-2.3.17 test/controller/request/json_params_parsing_test.rb
actionpack-2.3.17 test/controller/request/json_params_parsing_test.rb
actionpack_csi-2.3.5.p7 test/controller/request/json_params_parsing_test.rb
actionpack_csi-2.3.5.p6 test/controller/request/json_params_parsing_test.rb
actionpack-2.3.16 test/controller/request/json_params_parsing_test.rb
actionpack-rack-upgrade-2-2.3.16 test/controller/request/json_params_parsing_test.rb
actionpack-rack-upgrade-2-2.3.15 test/controller/request/json_params_parsing_test.rb
actionpack-2.3.15 test/controller/request/json_params_parsing_test.rb
actionpack-rack-upgrade-2.3.16 test/controller/request/json_params_parsing_test.rb
actionpack-rack-upgrade-2.3.15 test/controller/request/json_params_parsing_test.rb
actionpack-rack-upgrade-2.3.14 test/controller/request/json_params_parsing_test.rb
radiant-1.0.0 ruby-debug/ruby/1.8/gems/actionpack-2.3.14/test/controller/request/json_params_parsing_test.rb
vanity-1.7.1 vendor/ruby/1.9.1/gems/actionpack-2.3.12/test/controller/request/json_params_parsing_test.rb
actionpack-2.3.14 test/controller/request/json_params_parsing_test.rb
kajam-1.0.3.rc2 vendor/rails/actionpack/test/controller/request/json_params_parsing_test.rb
actionpack-2.3.12 test/controller/request/json_params_parsing_test.rb
radiant-1.0.0.rc2 vendor/rails/actionpack/test/controller/request/json_params_parsing_test.rb
radiant-1.0.0.rc1 vendor/rails/actionpack/test/controller/request/json_params_parsing_test.rb