From 8bf5d684fd0c83513d57f8e392c696dd3d12974d Mon Sep 17 00:00:00 2001 From: Prem Sichanugrist Date: Tue, 3 May 2011 15:40:52 +0700 Subject: Update Action Pack to depend on Rack 1.3.0 Rack 1.3.0 was released a while ago, which break the hard dependency we set in Action Pack. This dependency bump won't be the issue, as we always depends on edge Rack. Also, we was waiting for Rack 1.3.x release before we can release Rails 3.1 beta anyway. --- actionpack/actionpack.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/actionpack/actionpack.gemspec b/actionpack/actionpack.gemspec index 4af21366e3..d85f077e0f 100644 --- a/actionpack/actionpack.gemspec +++ b/actionpack/actionpack.gemspec @@ -22,7 +22,7 @@ Gem::Specification.new do |s| s.add_dependency('rack-cache', '~> 1.0.0') s.add_dependency('builder', '~> 3.0.0') s.add_dependency('i18n', '~> 0.6.0beta1') - s.add_dependency('rack', '~> 1.2.1') + s.add_dependency('rack', '~> 1.3.0') s.add_dependency('rack-test', '~> 0.5.7') s.add_dependency('rack-mount', '~> 0.7.2') s.add_dependency('sprockets', '~> 2.0.0.beta.2') -- cgit v1.2.3 From 31f412fc975033a9293888e8618fc933097d1d35 Mon Sep 17 00:00:00 2001 From: Prem Sichanugrist Date: Tue, 3 May 2011 16:51:19 +0700 Subject: Fix broken params_wrapper_test on 1.8.7 :bomb: I have to keep in mind that 1.8.7 does *not* preserve the hash order. Guys, let's move to use 1.9.2 in production! --- actionpack/test/controller/params_wrapper_test.rb | 116 +++++++++++++++------- 1 file changed, 80 insertions(+), 36 deletions(-) diff --git a/actionpack/test/controller/params_wrapper_test.rb b/actionpack/test/controller/params_wrapper_test.rb index 314b27cf47..d6f8f28d0d 100644 --- a/actionpack/test/controller/params_wrapper_test.rb +++ b/actionpack/test/controller/params_wrapper_test.rb @@ -4,8 +4,13 @@ module Admin; class User; end; end class ParamsWrapperTest < ActionController::TestCase class UsersController < ActionController::Base - def test - render :json => params.except(:controller, :action) + class << self + attr_accessor :last_parameters + end + + def parse + self.class.last_parameters = request.params.except(:controller, :action) + head :ok end end @@ -14,11 +19,15 @@ class ParamsWrapperTest < ActionController::TestCase tests UsersController + def teardown + UsersController.last_parameters = nil + end + def test_derivered_name_from_controller with_default_wrapper_options do @request.env['CONTENT_TYPE'] = 'application/json' - post :test, { 'username' => 'sikachu' } - assert_equal '{"username":"sikachu","user":{"username":"sikachu"}}', @response.body + post :parse, { 'username' => 'sikachu' } + assert_parameters({ 'username' => 'sikachu', 'user' => { 'username' => 'sikachu' }}) end end @@ -27,8 +36,8 @@ class ParamsWrapperTest < ActionController::TestCase UsersController.wrap_parameters :person @request.env['CONTENT_TYPE'] = 'application/json' - post :test, { 'username' => 'sikachu' } - assert_equal '{"username":"sikachu","person":{"username":"sikachu"}}', @response.body + post :parse, { 'username' => 'sikachu' } + assert_parameters({ 'username' => 'sikachu', 'person' => { 'username' => 'sikachu' }}) end end @@ -37,8 +46,8 @@ class ParamsWrapperTest < ActionController::TestCase UsersController.wrap_parameters Person @request.env['CONTENT_TYPE'] = 'application/json' - post :test, { 'username' => 'sikachu' } - assert_equal '{"username":"sikachu","person":{"username":"sikachu"}}', @response.body + post :parse, { 'username' => 'sikachu' } + assert_parameters({ 'username' => 'sikachu', 'person' => { 'username' => 'sikachu' }}) end end @@ -47,8 +56,8 @@ class ParamsWrapperTest < ActionController::TestCase UsersController.wrap_parameters :only => :username @request.env['CONTENT_TYPE'] = 'application/json' - post :test, { 'username' => 'sikachu', 'title' => 'Developer' } - assert_equal '{"username":"sikachu","title":"Developer","user":{"username":"sikachu"}}', @response.body + post :parse, { 'username' => 'sikachu', 'title' => 'Developer' } + assert_parameters({ 'username' => 'sikachu', 'title' => 'Developer', 'user' => { 'username' => 'sikachu' }}) end end @@ -57,8 +66,8 @@ class ParamsWrapperTest < ActionController::TestCase UsersController.wrap_parameters :except => :title @request.env['CONTENT_TYPE'] = 'application/json' - post :test, { 'username' => 'sikachu', 'title' => 'Developer' } - assert_equal '{"username":"sikachu","title":"Developer","user":{"username":"sikachu"}}', @response.body + post :parse, { 'username' => 'sikachu', 'title' => 'Developer' } + assert_parameters({ 'username' => 'sikachu', 'title' => 'Developer', 'user' => { 'username' => 'sikachu' }}) end end @@ -67,16 +76,16 @@ class ParamsWrapperTest < ActionController::TestCase UsersController.wrap_parameters :person, :only => :username @request.env['CONTENT_TYPE'] = 'application/json' - post :test, { 'username' => 'sikachu', 'title' => 'Developer' } - assert_equal '{"username":"sikachu","title":"Developer","person":{"username":"sikachu"}}', @response.body + post :parse, { 'username' => 'sikachu', 'title' => 'Developer' } + assert_parameters({ 'username' => 'sikachu', 'title' => 'Developer', 'person' => { 'username' => 'sikachu' }}) end end def test_not_enabled_format with_default_wrapper_options do @request.env['CONTENT_TYPE'] = 'application/xml' - post :test, { 'username' => 'sikachu', 'title' => 'Developer' } - assert_equal '{"username":"sikachu","title":"Developer"}', @response.body + post :parse, { 'username' => 'sikachu', 'title' => 'Developer' } + assert_parameters({ 'username' => 'sikachu', 'title' => 'Developer' }) end end @@ -84,8 +93,8 @@ class ParamsWrapperTest < ActionController::TestCase with_default_wrapper_options do UsersController.wrap_parameters false @request.env['CONTENT_TYPE'] = 'application/json' - post :test, { 'username' => 'sikachu', 'title' => 'Developer' } - assert_equal '{"username":"sikachu","title":"Developer"}', @response.body + post :parse, { 'username' => 'sikachu', 'title' => 'Developer' } + assert_parameters({ 'username' => 'sikachu', 'title' => 'Developer' }) end end @@ -94,32 +103,32 @@ class ParamsWrapperTest < ActionController::TestCase UsersController.wrap_parameters :format => :xml @request.env['CONTENT_TYPE'] = 'application/xml' - post :test, { 'username' => 'sikachu', 'title' => 'Developer' } - assert_equal '{"username":"sikachu","title":"Developer","user":{"username":"sikachu","title":"Developer"}}', @response.body + post :parse, { 'username' => 'sikachu', 'title' => 'Developer' } + assert_parameters({ 'username' => 'sikachu', 'title' => 'Developer', 'user' => { 'username' => 'sikachu', 'title' => 'Developer' }}) end end def test_not_wrap_reserved_parameters with_default_wrapper_options do @request.env['CONTENT_TYPE'] = 'application/json' - post :test, { 'authenticity_token' => 'pwned', '_method' => 'put', 'utf8' => '☃', 'username' => 'sikachu' } - assert_equal '{"authenticity_token":"pwned","_method":"put","utf8":"☃","username":"sikachu","user":{"username":"sikachu"}}', @response.body + post :parse, { 'authenticity_token' => 'pwned', '_method' => 'put', 'utf8' => '☃', 'username' => 'sikachu' } + assert_parameters({ 'authenticity_token' => 'pwned', '_method' => 'put', 'utf8' => '☃', 'username' => 'sikachu', 'user' => { 'username' => 'sikachu' }}) end end def test_no_double_wrap_if_key_exists with_default_wrapper_options do @request.env['CONTENT_TYPE'] = 'application/json' - post :test, { 'user' => { 'username' => 'sikachu' }} - assert_equal '{"user":{"username":"sikachu"}}', @response.body + post :parse, { 'user' => { 'username' => 'sikachu' }} + assert_parameters({ 'user' => { 'username' => 'sikachu' }}) end end def test_nested_params with_default_wrapper_options do @request.env['CONTENT_TYPE'] = 'application/json' - post :test, { 'person' => { 'username' => 'sikachu' }} - assert_equal '{"person":{"username":"sikachu"},"user":{"person":{"username":"sikachu"}}}', @response.body + post :parse, { 'person' => { 'username' => 'sikachu' }} + assert_parameters({ 'person' => { 'username' => 'sikachu' }, 'user' => {'person' => { 'username' => 'sikachu' }}}) end end @@ -129,8 +138,8 @@ class ParamsWrapperTest < ActionController::TestCase with_default_wrapper_options do @request.env['CONTENT_TYPE'] = 'application/json' - post :test, { 'username' => 'sikachu', 'title' => 'Developer' } - assert_equal '{"username":"sikachu","title":"Developer","user":{"username":"sikachu"}}', @response.body + post :parse, { 'username' => 'sikachu', 'title' => 'Developer' } + assert_parameters({ 'username' => 'sikachu', 'title' => 'Developer', 'user' => { 'username' => 'sikachu' }}) end end @@ -142,8 +151,8 @@ class ParamsWrapperTest < ActionController::TestCase UsersController.wrap_parameters Person @request.env['CONTENT_TYPE'] = 'application/json' - post :test, { 'username' => 'sikachu', 'title' => 'Developer' } - assert_equal '{"username":"sikachu","title":"Developer","person":{"username":"sikachu"}}', @response.body + post :parse, { 'username' => 'sikachu', 'title' => 'Developer' } + assert_parameters({ 'username' => 'sikachu', 'title' => 'Developer', 'person' => { 'username' => 'sikachu' }}) end end @@ -153,13 +162,22 @@ class ParamsWrapperTest < ActionController::TestCase @controller.class.inherited(@controller.class) yield end + + def assert_parameters(expected) + assert_equal expected, UsersController.last_parameters + end end class NamespacedParamsWrapperTest < ActionController::TestCase module Admin class UsersController < ActionController::Base - def test - render :json => params.except(:controller, :action) + class << self + attr_accessor :last_parameters + end + + def parse + self.class.last_parameters = request.params.except(:controller, :action) + head :ok end end end @@ -172,11 +190,15 @@ class NamespacedParamsWrapperTest < ActionController::TestCase tests Admin::UsersController + def teardown + Admin::UsersController.last_parameters = nil + end + def test_derivered_name_from_controller with_default_wrapper_options do @request.env['CONTENT_TYPE'] = 'application/json' - post :test, { 'username' => 'sikachu' } - assert_equal '{"username":"sikachu","user":{"username":"sikachu"}}', @response.body + post :parse, { 'username' => 'sikachu' } + assert_parameters({'username' => 'sikachu', 'user' => { 'username' => 'sikachu' }}) end end @@ -185,18 +207,40 @@ class NamespacedParamsWrapperTest < ActionController::TestCase begin with_default_wrapper_options do @request.env['CONTENT_TYPE'] = 'application/json' - post :test, { 'username' => 'sikachu', 'title' => 'Developer' } - assert_equal '{"username":"sikachu","title":"Developer","user":{"username":"sikachu"}}', @response.body + post :parse, { 'username' => 'sikachu', 'title' => 'Developer' } + assert_parameters({ 'username' => 'sikachu', 'title' => 'Developer', 'user' => { 'username' => 'sikachu' }}) end ensure Admin.send :remove_const, :User end end + def test_heirarchy_namespace_lookup_from_model + # Make sure that we cleanup ::Admin::User + admin_user_constant = ::Admin::User + ::Admin.send :remove_const, :User + + Object.const_set(:User, Class.new(Sample)) + begin + with_default_wrapper_options do + @request.env['CONTENT_TYPE'] = 'application/json' + post :parse, { 'username' => 'sikachu', 'title' => 'Developer' } + assert_parameters({ 'username' => 'sikachu', 'title' => 'Developer', 'user' => { 'username' => 'sikachu' }}) + end + ensure + Object.send :remove_const, :User + ::Admin.const_set(:User, admin_user_constant) + end + end + private def with_default_wrapper_options(&block) @controller.class._wrapper_options = {:format => [:json]} @controller.class.inherited(@controller.class) yield end + + def assert_parameters(expected) + assert_equal expected, Admin::UsersController.last_parameters + end end -- cgit v1.2.3