2012-11-14 10 views
5

Mam problemy ze znalezieniem przykładów valid_session w RSpec, a teraz wszystkie moje testy na rusztowaniach są zepsute po dodaniu autoryzacji.Jak korzystać z RSPecs valid_session?

Przechodząc przez Michael Hartl za Rails Tutorial używam uwierzytelniania, która jest opisana here, chyba jestem wymagający logowania dla wszystkich stron i użyć „” dla signin skip_before_filter itp

Dodałem użytkownika Oprawa, które zostały zweryfikowane zostanie załadowany:

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

Następnie w specyfikacji kontrolera

def valid_session 
    { remember_token: "YXjPrFfsK8SFQOQDEa90ow" } 
end 

Kodeksu He Session 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 

Czy używam valid_session zgodnie z przeznaczeniem? Czy dostarczenie pliku remember_token z sesją będzie działało bez jawnego podpisywania się użytkownika za pomocą sign_in? Czy można to rozwiązać w inny sposób?

Odpowiedz

3

To powinno działać dla Ciebie ...

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

... opiera się na coś podobnego, który pracował dla mnie: D

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

Drugi sposób pracował dla mnie też! +1 – leomperes

+0

Używanie Rails4 nie działa dla mnie, ale znalazłem sol'n, pokazany tutaj: https://stackoverflow.com/questions/39881504/rspec-controller-specs-fail-after-adding-authorization-to -rails4-application – MERM