Actualmente estoy creando una aplicación que usa OmniAuth para crear y autenticar usuarios. Estoy teniendo problemas durante las pruebas debido a que Factory Girl no puede generar usuarios sin OmniAuth.Crear usuarios en Factory Girl con OmniAuth?
Tengo varias maneras diferentes de hacer que la chica de la fábrica cree usuarios con omniauth pero ninguna ha tenido éxito.
he añadido las siguientes 2 líneas a mi archivo spec_helper
OmniAuth.config.test_mode = true \\ allows me to fake signins
OmniAuth.config.add_mock(:twitter, { :uid => '12345', :info => { :nickname => 'Joe Blow' }})
factories.rb actual
FactoryGirl.define do
factory :user do
provider "twitter"
sequence(:uid) { |n| "#{n}" }
sequence(:name) { |n| "Person_#{n}" }
end
end
La siguiente prueba falla, porque actualmente se está generando ningún usuario
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
¿Cómo debo cambiar mis fábricas/pruebas para que Factory Girl cree usuarios de prueba con OmniAuth?
Edición: He utilizado el 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
con suerte también es útil
#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
¿Hay más información que pueda proporcionar para ayudarlos a ayudarme? – SomberClock