Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Testing permit does not work in Rails 6 #1217

Open
wout opened this issue Jun 9, 2019 · 3 comments
Open

Testing permit does not work in Rails 6 #1217

wout opened this issue Jun 9, 2019 · 3 comments

Comments

@wout
Copy link

wout commented Jun 9, 2019

On the following test:

it do
  should permit(:name, :email, :password, :password_confirmation)
    .for(:create, params: { user: valid_attributes })
    .on(:user)
end

I get the following error:

1) UsersController POST #create with forbidden params permits allowed
     Failure/Error:
       should permit(:name, :email, :password, :password_confirmation)
         .for(:create, params: { user: valid_attributes })
         .on(:user)

     ArgumentError:
       unknown keyword: user
     # ./spec/controllers/users_controller_spec.rb:77:in `block (4 levels) in <top (required)>'

I noticed a similar problem in #1018 but I'm not sure it's related or even fixed since then.

@mcmire
Copy link
Collaborator

mcmire commented Jun 9, 2019

@wout Hey, can you provide a full backtrace?

@wout
Copy link
Author

wout commented Jun 10, 2019

@mcmire Of course, here you go:

Failures:

  1) UsersController POST #create with valid params should (for POST #create) restrict parameters on :user to :name, :email, :password, and :password_confirmation
     Failure/Error:
       should permit(*allowed_params)
         .for(:create, params: { user: valid_attributes })
         .on(:user)

     ArgumentError:
       unknown keyword: user
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/actionpack-6.0.0.rc1/lib/action_controller/test_case.rb:457:in `process'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rails-controller-testing-1.0.4/lib/rails/controller/testing/template_assertions.rb:61:in `process'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/actionpack-6.0.0.rc1/lib/action_controller/test_case.rb:400:in `post'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rails-controller-testing-1.0.4/lib/rails/controller/testing/integration.rb:13:in `block (2 levels) in <module:Integration>'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/shoulda-matchers-3.1.3/lib/shoulda/matchers/action_controller/permit_matcher.rb:253:in `block in matches?'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/shoulda-matchers-3.1.3/lib/shoulda/matchers/doublespeak/world.rb:29:in `with_doubles_activated'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/2.6.0/forwardable.rb:230:in `with_doubles_activated'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/shoulda-matchers-3.1.3/lib/shoulda/matchers/action_controller/permit_matcher.rb:252:in `matches?'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rspec-expectations-3.8.3/lib/rspec/expectations/handler.rb:50:in `block in handle_matcher'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rspec-expectations-3.8.3/lib/rspec/expectations/handler.rb:27:in `with_matcher'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rspec-expectations-3.8.3/lib/rspec/expectations/handler.rb:48:in `handle_matcher'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/memoized_helpers.rb:81:in `should'
     # ./spec/controllers/users_controller_spec.rb:80:in `block (4 levels) in <top (required)>'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/example.rb:254:in `instance_exec'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/example.rb:254:in `block in run'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/example.rb:500:in `block in with_around_and_singleton_context_hooks'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/example.rb:457:in `block in with_around_example_hooks'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/hooks.rb:464:in `block in run'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/hooks.rb:604:in `block in run_around_example_hooks_for'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/example.rb:342:in `call'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/bundler/gems/rspec-rails-9c6d8f3eaa80/lib/rspec/rails/example/controller_example_group.rb:191:in `block (2 levels) in <module:ControllerExampleGroup>'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/example.rb:447:in `instance_exec'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/example.rb:447:in `instance_exec'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/hooks.rb:373:in `execute_with'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/hooks.rb:606:in `block (2 levels) in run_around_example_hooks_for'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/example.rb:342:in `call'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/bundler/gems/rspec-rails-9c6d8f3eaa80/lib/rspec/rails/adapters.rb:128:in `block (2 levels) in <module:MinitestLifecycleAdapter>'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/example.rb:447:in `instance_exec'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/example.rb:447:in `instance_exec'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/hooks.rb:373:in `execute_with'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/hooks.rb:606:in `block (2 levels) in run_around_example_hooks_for'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/example.rb:342:in `call'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/hooks.rb:607:in `run_around_example_hooks_for'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/hooks.rb:464:in `run'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/example.rb:457:in `with_around_example_hooks'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/example.rb:500:in `with_around_and_singleton_context_hooks'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/example.rb:251:in `run'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/example_group.rb:629:in `block in run_examples'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/example_group.rb:625:in `map'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/example_group.rb:625:in `run_examples'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/example_group.rb:591:in `run'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/example_group.rb:592:in `block in run'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/example_group.rb:592:in `map'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/example_group.rb:592:in `run'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/example_group.rb:592:in `block in run'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/example_group.rb:592:in `map'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/example_group.rb:592:in `run'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/runner.rb:116:in `block (3 levels) in run_specs'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/runner.rb:116:in `map'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/runner.rb:116:in `block (2 levels) in run_specs'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/configuration.rb:1989:in `with_suite_hooks'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/runner.rb:111:in `block in run_specs'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/reporter.rb:74:in `report'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/runner.rb:110:in `run_specs'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/runner.rb:87:in `run'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/runner.rb:71:in `run'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/runner.rb:45:in `invoke'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rspec-core-3.8.0/exe/rspec:4:in `<top (required)>'
     # /home/wout/.rbenv/versions/2.6.3/bin/rspec:23:in `load'
     # /home/wout/.rbenv/versions/2.6.3/bin/rspec:23:in `<top (required)>'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/bundler-2.0.1/lib/bundler/cli/exec.rb:74:in `load'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/bundler-2.0.1/lib/bundler/cli/exec.rb:74:in `kernel_load'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/bundler-2.0.1/lib/bundler/cli/exec.rb:28:in `run'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/bundler-2.0.1/lib/bundler/cli.rb:463:in `exec'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/bundler-2.0.1/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/bundler-2.0.1/lib/bundler/vendor/thor/lib/thor/invocation.rb:126:in `invoke_command'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/bundler-2.0.1/lib/bundler/vendor/thor/lib/thor.rb:387:in `dispatch'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/bundler-2.0.1/lib/bundler/cli.rb:27:in `dispatch'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/bundler-2.0.1/lib/bundler/vendor/thor/lib/thor/base.rb:466:in `start'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/bundler-2.0.1/lib/bundler/cli.rb:18:in `start'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/bundler-2.0.1/exe/bundle:30:in `block in <top (required)>'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/bundler-2.0.1/lib/bundler/friendly_errors.rb:124:in `with_friendly_errors'
     # /home/wout/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/bundler-2.0.1/exe/bundle:22:in `<top (required)>'
     # /home/wout/.rbenv/versions/2.6.3/bin/bundle:23:in `load'
     # /home/wout/.rbenv/versions/2.6.3/bin/bundle:23:in `<main>'

Finished in 0.35236 seconds (files took 3.26 seconds to load)
34 examples, 1 failure

Failed examples:

rspec ./spec/controllers/users_controller_spec.rb:79 # UsersController POST #create with valid params should (for POST #create) restrict parameters on :user to :name, :email, :password, and :password_confirmation

@mcmire
Copy link
Collaborator

mcmire commented Jun 10, 2019

Interesting, okay. I'll look into this further.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants