チャンネル登録者を認証するための次のコードがあります。
module ApplicationCable
class Connection < ActionCable::Connection::Base
identified_by :current_user
def connect
self.current_user = find_verified_user
end
protected
def find_verified_user
if current_user = User.find_by(id: cookies.signed[:user_id])
current_user
else
reject_unauthorized_connection
end
end
end
end
そして、すべてがうまくいきます。問題は機能テストにあります。このテストを実行すると:
require 'rails_helper'
feature 'Chat room' do
scenario "send one message" do
user = create(:user)
login_as(user, :scope => :user)
expect {
fill_in 'message', with: 'hello friend'
click_button 'Send'
byebug
}.to change(Message, :count).by(1)
expect(current_path).to eq root_path
expect(page).to have_content 'hello friend'
end
end
テストログには、「不正な接続試行が拒否されました」と書かれています。Cookie が空であるため、認証できません。
では、カピバラ テストで Cookie を設定するにはどうすればよいですか?
テストでこれを実行しようとしcookies.signed[:user_id] = user.id
ましたが、機能しません。
cookies.signed[:user_id] = user.id
テストでこのようにクッキーを設定するにはどうすればよいですか?