2012-11-14 6 views
5

Non riesco a trovare esempi di valid_session in RSpec e ora tutti i miei test scaffolded vengono interrotti dopo aver aggiunto l'autorizzazione.Come utilizzare RS_sec valid_session?

Passando attraverso Rails Tutorial di Michael Hartl, sto utilizzando l'autenticazione che viene descritto here, tranne che sto richiedendo login per tutte le pagine e l'uso 'skip_before_filter' per signin ecc

ho aggiunto un utente apparecchio, che ho verificato viene caricato:

userexample: 
    id: 1 
    name: Example Name 
    email: [email protected] 
    password_digest: $2a$10$NuWL8f2X0bXaCof3/caiiOwlF2rago7hH10JECmw1p75kEpf0mkie 
    remember_token: YXjPrFfsK8SFQOQDEa90ow 

Poi nel controller spec

def valid_session 
    { remember_token: "YXjPrFfsK8SFQOQDEa90ow" } 
end 

il codice della sessione Lui lper

module SessionsHelper 
def sign_in(user) 
    cookies.permanent[:remember_token] = user.remember_token 
    self.current_user = user 
end 

def signed_in? 
    return !current_user.nil? 
end 

def sign_out 
    self.current_user = nil 
    cookies.delete(:remember_token) 
end 

def current_user=(user) 
    @current_user = user 
end 

def current_user 
    @current_user ||= User.find_by_remember_token(cookies[:remember_token]) 
end 
end 

Sto usando valid_session come previsto? Fornire un remember_token alla sessione funziona anche senza l'accesso esplicito all'utente con sign_in? Questo potrebbe essere risolto in qualche altro modo?

risposta

3

Questo dovrebbe funzionare per voi ...

def valid_session 
    controller.stub!(:signed_in?).and_return(true) 
end 

... sulla base di qualcosa di simile che ha funzionato per me: D

def valid_session 
    controller.stub!(:authorize).and_return(User) 
end 
+0

Secondo modo ha lavorato anche per me! +1 – leomperes

+0

Utilizzando Rails4 questo non ha funzionato per me, ma ho trovato un sol'n, mostrato qui: https://stackoverflow.com/questions/39881504/rspec-controller-specs-fail-after-adding-authorization-to -rails4 applicazione – MERM