Ich erstelle derzeit eine Anwendung, die OmniAuth zum Erstellen und Authentifizieren von Benutzern verwendet. Ich habe Probleme beim Testen, da Factory Girl keine Benutzer ohne OmniAuth generieren konnte.Erstellen Sie Benutzer in Factory Girl mit OmniAuth?
Ich habe mehrere verschiedene Möglichkeiten, Fabrikmädchen zu erhalten, um Benutzer mit Omniauth zu erstellen, aber keine waren erfolgreich.
Ich habe die folgenden zwei Zeilen in meiner spec_helper Datei
OmniAuth.config.test_mode = true \\ allows me to fake signins
OmniAuth.config.add_mock(:twitter, { :uid => '12345', :info => { :nickname => 'Joe Blow' }})
aktuelle factories.rb hinzugefügt
FactoryGirl.define do
factory :user do
provider "twitter"
sequence(:uid) { |n| "#{n}" }
sequence(:name) { |n| "Person_#{n}" }
end
end
Der folgende Test nicht zur Zeit, da kein Benutzer erzeugt wird
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
Wie sollte ich meine Fabriken/Tests ändern, damit Factory Girl Testbenutzer erstellen kann? OmniAuth?
Edit: Ich benutze das 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
hoffentlich auch nützlich
#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
Gibt es weitere Informationen, die ich Ihnen zur Verfügung stellen könnte, um Ihnen zu helfen? – SomberClock