5

RSpecでvalid_sessionの例を見つけるのに問題があり、承認を追加した後、すべてのスキャフォールドテストが壊れています。

Michael HartlのRailsチュートリアルでは、ここで説明する認証を使用しています。ただし、すべてのページにログインする必要があり、サインインなどに「skip_before_filter」を使用する必要があります。

ユーザーフィクスチャを追加しました。これは、ロードされることを確認しました。

userexample:
  id: 1
  name: Example Name
  email: examplename@example.com
  password_digest: $2a$10$NuWL8f2X0bXaCof3/caiiOwlF2rago7hH10JECmw1p75kEpf0mkie
  remember_token: YXjPrFfsK8SFQOQDEa90ow

次に、コントローラーの仕様で

def valid_session
    { remember_token: "YXjPrFfsK8SFQOQDEa90ow" }
end

セッションヘルパーのコード

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

意図したとおりにvalid_sessionを使用していますか?セッションでremember_tokenを提供することは、sign_inでユーザーに明示的にサインインしなくても機能しますか?これは他の方法で解決できますか?

4

1 に答える 1

3

これはあなたのために働くはずです...

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

...私のために働いた同様の何かに基づいて:D

def valid_session
  controller.stub!(:authorize).and_return(User)
end
于 2013-07-01T22:37:40.087 に答える