aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJorge Bejar <jorge@wyeworks.com>2015-06-02 15:48:20 -0300
committerSantiago Pastorino <santiago@wyeworks.com>2015-06-11 16:54:16 -0300
commita2c9a7308474bc1d7fc35df9560c46125d94f5a4 (patch)
tree12fc2f3103b56d50e9d92bebbffe7087ff3e6fda
parentebcc15ca4ea22f8ace57a5251ceb8de4b917cd90 (diff)
downloadrails-a2c9a7308474bc1d7fc35df9560c46125d94f5a4.tar.gz
rails-a2c9a7308474bc1d7fc35df9560c46125d94f5a4.tar.bz2
rails-a2c9a7308474bc1d7fc35df9560c46125d94f5a4.zip
Include ParamsWrapper in AC::API
ParamsWrapper was initially removed from API controllers according to the following discusision: https://github.com/rails-api/rails-api/issues/33 However, we're including it again so Rails API devs can decide whether to enable or disable it.
-rw-r--r--actionpack/lib/action_controller/api.rb6
-rw-r--r--actionpack/test/controller/api/params_wrapper_test.rb26
2 files changed, 31 insertions, 1 deletions
diff --git a/actionpack/lib/action_controller/api.rb b/actionpack/lib/action_controller/api.rb
index 9dc96bd3e6..b4583a073b 100644
--- a/actionpack/lib/action_controller/api.rb
+++ b/actionpack/lib/action_controller/api.rb
@@ -128,7 +128,11 @@ module ActionController
# Add instrumentations hooks at the bottom, to ensure they instrument
# all the methods properly.
- Instrumentation
+ Instrumentation,
+
+ # Params wrapper should come before instrumentation so they are
+ # properly showed in logs
+ ParamsWrapper
]
MODULES.each do |mod|
diff --git a/actionpack/test/controller/api/params_wrapper_test.rb b/actionpack/test/controller/api/params_wrapper_test.rb
new file mode 100644
index 0000000000..e40a39d829
--- /dev/null
+++ b/actionpack/test/controller/api/params_wrapper_test.rb
@@ -0,0 +1,26 @@
+require 'abstract_unit'
+
+class ParamsWrapperForApiTest < ActionController::TestCase
+ class UsersController < ActionController::API
+ attr_accessor :last_parameters
+
+ wrap_parameters :person, format: [:json]
+
+ def test
+ self.last_parameters = params.except(:controller, :action)
+ head :ok
+ end
+ end
+
+ class Person; end
+
+ tests UsersController
+
+ def test_specify_wrapper_name
+ @request.env['CONTENT_TYPE'] = 'application/json'
+ post :test, params: { 'username' => 'sikachu' }
+
+ expected = { 'username' => 'sikachu', 'person' => { 'username' => 'sikachu' }}
+ assert_equal expected, @controller.last_parameters
+ end
+end