Advertisement
Guest User

Untitled

a guest
Jul 31st, 2017
476
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.51 KB | None | 0 0
  1. require File.dirname(__FILE__) '/../spec_helper'
  2.  
  3. def login_as(user)
  4. request.session[:user] = user ? users(user).id : nil
  5. end
  6.  
  7. def create_user(options = {})
  8. post :signup, :user => { :login => 'quire', :email => 'quire@example.com',
  9. :password => 'quire', :password_confirmation => 'quire' }.merge(options)
  10. end
  11.  
  12. def auth_token(token)
  13. CGI::Cookie.new('name' => 'auth_token', 'value' => token)
  14. end
  15.  
  16. def cookie_for(user)
  17. auth_token users(user).remember_token
  18. end
  19.  
  20. context "The AccountController" do
  21. fixtures :users
  22. controller_name :account
  23.  
  24. specify "should be a AccountController" do
  25. controller.should_be_an_instance_of AccountController
  26. end
  27.  
  28. specify "should redirect after successful login" do
  29. post :login, :login => 'quentin', :password => 'test'
  30. session[:user].should_not_be_nil
  31. response.should_be_redirect
  32. end
  33.  
  34. specify "should not redirect after failed login" do
  35. post :login, :login => 'quentin', :password => 'bad password'
  36. session[:user].should_be_nil
  37. response.should_be_success
  38. end
  39.  
  40. specify "should allow signup" do
  41. expected_users = User.count 1
  42. create_user
  43. response.should_be_redirect
  44. User.count.should == expected_users
  45. end
  46.  
  47. specify "should require login on signup" do
  48. expected_users = User.count
  49. create_user(:login => nil)
  50. assigns(:user).errors.on(:login).should_not_be_nil
  51. response.should_be_success
  52. end
  53.  
  54. specify "should require password on signup" do
  55. expected_users = User.count
  56. create_user(:password => nil)
  57. assigns(:user).errors.on(:password).should_not_be_nil
  58. response.should_be_success
  59. end
  60.  
  61. specify "should require password confirmation on signup" do
  62. expected_users = User.count
  63. create_user(:password_confirmation => nil)
  64. assigns(:user).errors.on(:password_confirmation).should_not_be_nil
  65. response.should_be_success
  66. end
  67.  
  68. specify "should require email on signup" do
  69. expected_users = User.count
  70. create_user(:email => nil)
  71. assigns(:user).errors.on(:email).should_not_be_nil
  72. response.should_be_success
  73. end
  74.  
  75. specify "should log out when requested" do
  76. login_as :quentin
  77. get :logout
  78. session[:user].should_not_be_nil
  79. response.should_be_redirect
  80. end
  81.  
  82. specify "should remember me" do
  83. post :login, :login => 'quentin', :password => 'test', :remember_me => '1'
  84. response.cookies["auth_token"].should_not_be_nil
  85. end
  86.  
  87. specify "should not remember me" do
  88. post :login, :login => 'quentin', :password => 'test', :remember_me => '0'
  89. response.cookies["auth_token"].should_be_nil
  90. end
  91.  
  92. specify "should delete auth token on logout" do
  93. login_as :quentin
  94. get :logout
  95. response.cookies["auth_token"].should == []
  96. end
  97.  
  98. specify "should login with cookie" do
  99. users(:quentin).remember_me
  100. request.cookies["auth_token"] = cookie_for(:quentin)
  101. get :index
  102. controller.should.satisfy {|c| c.send(:logged_in?)}
  103. end
  104.  
  105. specify "should fail to login with expired cookie" do
  106. users(:quentin).remember_me
  107. users(:quentin).update_attribute :remember_token_expires_at, 15.minutes.ago
  108. request.cookies["auth_token"] = cookie_for(:quentin)
  109. get :index
  110. controller.should_not.satisfy {|c| c.send(:logged_in?)}
  111. end
  112.  
  113. specify "should fail to login with invalid cookie" do
  114. users(:quentin).remember_me
  115. request.cookies["auth_token"] = auth_token('invalid_auth_token')
  116. get :index
  117. controller.should_not.satisfy {|c| c.send(:logged_in?)}
  118. end
  119. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement