1 require File.join(File.dirname(__FILE__), '..', 'spec_helper.rb')
2 require File.join( File.dirname(__FILE__), "..", "user_spec_helper")
3 require File.join( File.dirname(__FILE__), "..", "authenticated_system_spec_helper")
6 describe "Sessions Controller", "index action" do
10 User.clear_database_table
11 @quentin = User.create(valid_user_hash.with(:login => "quentin", :password => "test", :password_confirmation => "test"))
12 @controller = Sessions.new(fake_request)
16 it "should have a route to Sessions#new from '/login'" do
17 request_to("/login") do |params|
18 params[:controller].should == "Sessions"
19 params[:action].should == "create"
23 it "should route to Sessions#create from '/login' via post" do
24 request_to("/login", :post) do |params|
25 params[:controller].should == "Sessions"
26 params[:action].should == "create"
30 it "should have a named route :login" do
31 @controller.url(:login).should == "/login"
34 it "should have route to Sessions#destroy from '/logout' via delete" do
35 request_to("/logout", :delete) do |params|
36 params[:controller].should == "Sessions"
37 params[:action].should == "destroy"
41 it "should route to Sessions#destroy from '/logout' via get" do
42 request_to("/logout") do |params|
43 params[:controller].should == "Sessions"
44 params[:action].should == "destroy"
48 it 'logins and redirects' do
49 controller = post "/login", :login => 'quentin', :password => 'test'
50 controller.session[:user].should_not be_nil
51 controller.session[:user].should == @quentin.id
52 controller.should redirect_to("/")
55 it 'fails login and does not redirect' do
56 controller = post "/login", :login => 'quentin', :password => 'bad password'
57 controller.session[:user].should be_nil
58 controller.should be_successful
62 controller = get("/logout"){|controller| controller.stub!(:current_user).and_return(@quentin) }
63 controller.session[:user].should be_nil
64 controller.should redirect
68 controller = post "/login", :login => 'quentin', :password => 'test', :remember_me => "1"
69 controller.cookies["auth_token"].should_not be_nil
72 it 'does not remember me' do
73 controller = post "/login", :login => 'quentin', :password => 'test', :remember_me => "0"
74 controller.cookies["auth_token"].should be_nil
77 it 'deletes token on logout' do
78 controller = get("/logout") {|request| request.stub!(:current_user).and_return(@quentin) }
79 controller.cookies["auth_token"].should == nil
83 it 'logs in with cookie' do
85 controller = get "/login" do |c|
86 c.request.env[Merb::Const::HTTP_COOKIE] = "auth_token=#{@quentin.remember_token}"
88 controller.should be_logged_in
92 CGI::Cookie.new('name' => 'auth_token', 'value' => token)
96 auth_token user.remember_token