Guest User

Untitled

a guest
May 16th, 2018
233
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.00 KB | None | 0 0
  1. require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
  2.  
  3. module UserSpecHelper
  4. def valid_user_attributes
  5. { :username => 'jc00ke',
  6. :email => 'jc00ke@example.com',
  7. :password => 'p@ssw0rd' }
  8. end
  9.  
  10. def invalid_usernames
  11. # TODO this list of usernames needs to go in a config file
  12. %w(contact terms privacy what faqs signup login logout admin)
  13. end
  14. end
  15.  
  16. describe "A User" do
  17. include UserSpecHelper
  18. let(:user) { User.new }
  19.  
  20. setup do
  21. User.delete_all
  22. end
  23.  
  24. it "should be valid" do
  25. user.attributes = valid_user_attributes
  26.  
  27. user.should be_valid
  28. end
  29.  
  30. it "should not allow @ signs in the username" do
  31. user.attributes = valid_user_attributes.except(:username)
  32. user.username = '@jc00ke'
  33.  
  34. user.should_not be_valid
  35. end
  36.  
  37. it "should allow plus signs before the @ sign in an email address" do
  38. user.attributes = valid_user_attributes.except(:email)
  39. user.email = 'jc00ke+springee@example.com'
  40.  
  41. user.should be_valid
  42. end
  43.  
  44. it "should require a valid email address" do
  45. user.attributes = valid_user_attributes.except(:email)
  46. user.email = 'asdf'
  47.  
  48. user.should_not be_valid
  49. end
  50.  
  51. it "shouldn't allow certain usernames" do
  52. user.attributes = valid_user_attributes.except(:username)
  53.  
  54. # make sure none of the invalid usernames make it through
  55. all_disallowed = invalid_usernames.all? { |u|
  56. user.username = u
  57. user.should_not be_valid
  58. }
  59.  
  60. all_disallowed.should be_true
  61. end
  62.  
  63. it "shouldn't allow passwords less than 6 characters" do
  64. user.attributes = valid_user_attributes.except(:password)
  65.  
  66. lambda { user.password = '12345' }.should raise_error(ArgumentError, 'Password must have at least 6 characters')
  67. end
  68.  
  69. it "should be found by either username or email" do
  70. user.attributes = valid_user_attributes
  71. user.save
  72. by_username = User.find_by_username_or_email(user.username)
  73. by_email = User.find_by_username_or_email(user.email)
  74.  
  75. by_username.id.should == by_email.id
  76.  
  77. end
  78.  
  79. end
Add Comment
Please, Sign In to add comment