I'm trying to test a Rails controller with rspec so I created a request spec. I need a user to be signed in so I included the needed Devise helper in my rspec config:
RSpec.configure do |config|
config.include Devise::Test::IntegrationHelpers, type: :request
end
When I call the sign_in method and I run all specs bundle exec rspec I get an FrozenError (FrozenError: can't modify frozen String):
RSpec.describe 'Name of my spec', type: :request do
it 'test' do
sign_in User.first
get some_route_path
end
end
When I run only this test everything is fine. This is the only request spec I have in my codebase. Did anyone come across this problem and know how to fix this issue?
Error log:
FrozenError:
can't modify frozen String
# /Users/smek/.rvm/gems/ruby-2.6.5/gems/warden-1.2.9/lib/warden/session_serializer.rb:27:in `store'
# /Users/smek/.rvm/gems/ruby-2.6.5/gems/warden-1.2.9/lib/warden/proxy.rb:187:in `set_user'
# /Users/smek/.rvm/gems/ruby-2.6.5/gems/warden-1.2.9/lib/warden/test/helpers.rb:21:in `block in login_as'
# /Users/smek/.rvm/gems/ruby-2.6.5/gems/warden-1.2.9/lib/warden.rb:40:in `block in test_mode!'
# /Users/smek/.rvm/gems/ruby-2.6.5/gems/warden-1.2.9/lib/warden/hooks.rb:15:in `block in _run_callbacks'
# /Users/smek/.rvm/gems/ruby-2.6.5/gems/warden-1.2.9/lib/warden/hooks.rb:10:in `each'
# /Users/smek/.rvm/gems/ruby-2.6.5/gems/warden-1.2.9/lib/warden/hooks.rb:10:in `_run_callbacks'
# /Users/smek/.rvm/gems/ruby-2.6.5/gems/warden-1.2.9/lib/warden/manager.rb:52:in `_run_callbacks'
# /Users/smek/.rvm/gems/ruby-2.6.5/gems/warden-1.2.9/lib/warden/proxy.rb:37:in `on_request'
# /Users/smek/.rvm/gems/ruby-2.6.5/gems/warden-1.2.9/lib/warden/manager.rb:35:in `block in call'
# /Users/smek/.rvm/gems/ruby-2.6.5/gems/warden-1.2.9/lib/warden/manager.rb:34:in `catch'
# /Users/smek/.rvm/gems/ruby-2.6.5/gems/warden-1.2.9/lib/warden/manager.rb:34:in `call'
# /Users/smek/.rvm/gems/ruby-2.6.5/gems/rack-2.2.4/lib/rack/tempfile_reaper.rb:15:in `call'
# /Users/smek/.rvm/gems/ruby-2.6.5/gems/rack-2.2.4/lib/rack/etag.rb:27:in `call'
# /Users/smek/.rvm/gems/ruby-2.6.5/gems/rack-2.2.4/lib/rack/conditional_get.rb:40:in `call'
# /Users/smek/.rvm/gems/ruby-2.6.5/gems/rack-2.2.4/lib/rack/head.rb:12:in `call'
# /Users/smek/.rvm/gems/ruby-2.6.5/gems/rack-2.2.4/lib/rack/session/abstract/id.rb:266:in `context'
# /Users/smek/.rvm/gems/ruby-2.6.5/gems/rack-2.2.4/lib/rack/session/abstract/id.rb:260:in `call'
# /Users/smek/.rvm/gems/ruby-2.6.5/gems/railties-6.0.5.1/lib/rails/rack/logger.rb:37:in `call_app'
# /Users/smek/.rvm/gems/ruby-2.6.5/gems/railties-6.0.5.1/lib/rails/rack/logger.rb:26:in `block in call'
# /Users/smek/.rvm/gems/ruby-2.6.5/gems/railties-6.0.5.1/lib/rails/rack/logger.rb:26:in `call'
# /Users/smek/.rvm/gems/ruby-2.6.5/gems/request_store-1.5.0/lib/request_store/middleware.rb:19:in `call'
# /Users/smek/.rvm/gems/ruby-2.6.5/gems/rack-2.2.4/lib/rack/method_override.rb:24:in `call'
# /Users/smek/.rvm/gems/ruby-2.6.5/gems/rack-2.2.4/lib/rack/runtime.rb:22:in `call'
# /Users/smek/.rvm/gems/ruby-2.6.5/gems/rack-2.2.4/lib/rack/sendfile.rb:110:in `call'
# /Users/smek/.rvm/gems/ruby-2.6.5/gems/railties-6.0.5.1/lib/rails/engine.rb:527:in `call'
# /Users/smek/.rvm/gems/ruby-2.6.5/gems/rack-test-2.0.2/lib/rack/test.rb:358:in `process_request'
# /Users/smek/.rvm/gems/ruby-2.6.5/gems/rack-test-2.0.2/lib/rack/test.rb:155:in `request'
# ./spec/requests/user_submits_a_note_spec.rb:24:in `block (2 levels) in <main>'