Sha256: b18fd9c23c827b796b30e2b79ebf3896fa593fe33cfa97b4f5f972da60a00982

Contents?: true

Size: 1.99 KB

Versions: 4

Compression:

Stored size: 1.99 KB

Contents

require File.dirname(__FILE__) + '/../spec_helper'

describe "Remember me strategy" do
  def do_valid_login
    put("/login", {:remember_me => "1", :pass_auth => true})
  end
  
  def do_valid_login_without_remember_me
    put("/login", {:pass_auth => true})
  end
  
  def do_invalid_login
    put("/login", { :pass_auth => false})
  end
  
  def do_home_with_auth_token
    get("/", { :pass_auth => true} ) do |controller|
      controller.request.cookies[:auth_token] = "auth_token_string"
    end
  end

  before :each do
    @user = mock(Merb::Authentication.user_class, :remember_me => true)
    User.stub!(:first).and_return(@user)
    @user.stub!(:remember_token?).and_return(true)
    @user.stub!(:remember_token).and_return(Time.now + 1.week)
    @user.stub!(:remember_token_expires_at).and_return(Time.now)
    @user.stub!(:forget_me).and_return(true)
  end

  it "should save remember_token and remember_token_expires_at if remember_me == '1'" do
    Merb::Authentication.user_class.should_receive(:first).and_return(@user)
    @user.should_receive(:remember_me)
    @user.remember_token.should_not be_nil
    @user.remember_token_expires_at.should_not be_nil
    do_valid_login.should redirect_to('/')
  end

  it "should not remember me unless remember_me == '1'" do 
    Merb::Authentication.user_class.should_receive(:first).and_return(true)
    @user.should_not_receive(:remember_me)
    do_valid_login_without_remember_me.should redirect_to('/')
  end

  it "should log in automatically if auth_token exists" do
    Merb::Authentication.user_class.should_receive(:first).and_return(@user)
    do_home_with_auth_token.should be_successful
  end

  it "should raise unauthenticated if auth_token doesn't exist" do
    lambda do
      do_invalid_login
    end.should raise_error(Merb::Controller::Unauthenticated, "Could not log in")
  end
  
  it "should clear auth_token after loging out" do
    delete('/logout') do |controller|
      controller.cookies.should_receive(:delete).with(:auth_token)
    end
  end
end

Version data entries

4 entries across 4 versions & 2 rubygems

Version Path
scottmotte-merb_auth_slice_multisite-0.8.4 spec/strategies/remember_me_spec.rb
scottmotte-merb_auth_slice_multisite-0.8.5 spec/strategies/remember_me_spec.rb
scottmotte-merb_auth_slice_multisite-0.8.6 spec/strategies/remember_me_spec.rb
merb_auth_slice_multisite-0.8.6 spec/strategies/remember_me_spec.rb