5

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 
+0

¿Hay más información que pueda proporcionar para ayudarlos a ayudarme? – SomberClock

Respuesta

2

¿Se acordó de hacer lo siguiente en algún lugar de la configuración de la prueba?

request.env [ "omniauth.auth"] = OmniAuth.config.mock_auth [gorjeo]

Si es así, ¿es posible UID del usuario no coincide con el UID simulacro?

Puede intentar cambiar la definición de fábrica de sequence(:uid) { |n| "#{n}" } a uid '12345'.

+0

¡Muchas gracias! – SomberClock

Cuestiones relacionadas