class JsonParamsParsingTest

Public Class Methods

name() click to toggle source
# File railties/test/json_params_parsing_test.rb, line 11
def self.name; "Foo"; end

Public Instance Methods

teardown() click to toggle source
# File actionpack/test/dispatch/request/json_params_parsing_test.rb, line 17
def teardown
  TestController.last_request_parameters = nil
end
test_prevent_null_query() click to toggle source
# File railties/test/json_params_parsing_test.rb, line 8
def test_prevent_null_query
  # Make sure we have data to find
  klass = Class.new(ActiveRecord::Base) do
    def self.name; "Foo"; end
    establish_connection adapter: "sqlite3", database: ":memory:"
    connection.create_table "foos" do |t|
      t.string :title
      t.timestamps null: false
    end
  end
  klass.create
  assert klass.first

  app = ->(env) {
    request = ActionDispatch::Request.new env
    params = ActionController::Parameters.new request.parameters
    if params[:t]
      klass.find_by_title(params[:t])
    else
      nil
    end
  }

  assert_nil app.call(make_env("t" => nil))
  assert_nil app.call(make_env("t" => [nil]))

  [[[nil]], [[[nil]]]].each do |data|
    assert_nil app.call(make_env("t" => data))
  end
ensure
  klass.connection.drop_table("foos")
end

Private Instance Methods

assert_parses(expected, actual, headers = {}) click to toggle source
# File actionpack/test/dispatch/request/json_params_parsing_test.rb, line 99
def assert_parses(expected, actual, headers = {})
  with_test_routing do
    post "/parse", params: actual, headers: headers
    assert_response :ok
    assert_equal(expected, TestController.last_request_parameters)
  end
end
make_env(json) click to toggle source
# File railties/test/json_params_parsing_test.rb, line 42
def make_env(json)
  data = JSON.dump json
  content_length = data.length
  {
    "CONTENT_LENGTH" => content_length,
    "CONTENT_TYPE"   => "application/json",
    "rack.input"     => StringIO.new(data)
  }
end
with_test_routing() { || ... } click to toggle source
# File actionpack/test/dispatch/request/json_params_parsing_test.rb, line 107
def with_test_routing
  with_routing do |set|
    set.draw do
      ActiveSupport::Deprecation.silence do
        post ":action", to: ::JsonParamsParsingTest::TestController
      end
    end
    yield
  end
end