Tôi hiện đang tạo một ứng dụng sử dụng OmniAuth để tạo và xác thực người dùng. Tôi gặp phải sự cố trong khi thử nghiệm do Factory Girl không thể tạo người dùng mà không có OmniAuth.Tạo người dùng trong Factory Girl với OmniAuth?
Tôi có nhiều cách khác nhau để có được nhà máy để tạo người dùng với omniauth nhưng không có cách nào thành công.
Tôi đã thêm 2 dòng sau vào tập tin spec_helper tôi
OmniAuth.config.test_mode = true \\ allows me to fake signins
OmniAuth.config.add_mock(:twitter, { :uid => '12345', :info => { :nickname => 'Joe Blow' }})
factories.rb hiện
FactoryGirl.define do
factory :user do
provider "twitter"
sequence(:uid) { |n| "#{n}" }
sequence(:name) { |n| "Person_#{n}" }
end
end
Các thử nghiệm sau đây hiện không thành công vì không có người dùng đang được tạo
let(:user) { FactoryGirl.create(:user) }
before { sign_in user }
describe "registering" do
it "should increment" do
expect do
click_button 'register'
end.to change(user.rounds, :count).by(1)
end
Tôi nên thay đổi nhà máy/thử nghiệm của mình như thế nào để có được Factory Girl để tạo người dùng thử nghiệm OmniAuth?
Edit: tôi sử dụng RailsCast guide to setup Omniauth,
#create function inside user.rb
def self.create_with_omniauth(auth)
create! do |user|
user.provider = auth["provider"]
user.uid = auth["uid"]
user.name = auth["info"]["name"]
end
end
hy vọng cũng hữu ích
#create inside the session_controller
def create
auth = request.env["omniauth.auth"]
user = User.find_by_provider_and_uid(auth["provider"], auth["uid"]) || User.create_with_omniauth(auth)
session[:user_id] = user.id
redirect_to root_url, :notice => "Signed in!"
end
Có thêm thông tin mà tôi có thể cung cấp để giúp các bạn giúp tôi không? – SomberClock