user_test.rb 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. require 'test_helper'
  2. class UserTest < ActiveSupport::TestCase
  3. def setup
  4. @user = User.new(login: "example", name: "Example User",
  5. email: "user@example.com",
  6. password: "foobar", password_confirmation: "foobar")
  7. end
  8. test "should be valid" do
  9. assert @user.valid?
  10. end
  11. test "name should be present" do
  12. @user.name = " "
  13. assert_not @user.valid?
  14. end
  15. test "login should be present" do
  16. @user.name = " "
  17. assert_not @user.valid?
  18. end
  19. test "email should be present" do
  20. @user.email = " "
  21. assert_not @user.valid?
  22. end
  23. test "login should not be too long" do
  24. @user.login = "a" * 51
  25. assert_not @user.valid?
  26. end
  27. test "email should not be too long" do
  28. @user.email = "a" * 244 + "@example.com"
  29. assert_not @user.valid?
  30. end
  31. test "email validation should accept valid addresses" do
  32. valid_addresses = %w[user@example.com USER@foo.COM A_US-ER@foo.bar.org
  33. first.last@foo.jp alice+bob@baz.cn]
  34. valid_addresses.each do |valid_address|
  35. @user.email = valid_address
  36. assert @user.valid?, "#{valid_address.inspect} should be valid"
  37. end
  38. end
  39. test "email validation should reject invalid addresses" do
  40. invalid_addresses = %w[user@example,com user_at_foo.org user.name@example.
  41. foo@bar_baz.com foo@bar+baz.com]
  42. invalid_addresses.each do |invalid_address|
  43. @user.email = invalid_address
  44. assert_not @user.valid?, "#{invalid_address.inspect} should be invalid"
  45. end
  46. end
  47. test "login validation should accept valid login" do
  48. valid_logins = %w[foobar FooBar Foo_Bar 1234_Foo_Bar_5678]
  49. valid_logins.each do |valid_login|
  50. @user.login = valid_login
  51. assert @user.valid?, "#{valid_login.inspect} should be valid"
  52. end
  53. end
  54. test "login validation should reject invalid login" do
  55. invalid_logins = %w[foo:bar Foo*Bar Foo_^^Bar 1234!"_Foo_Bar_-5678]
  56. invalid_logins.each do |invalid_login|
  57. @user.login = invalid_login
  58. assert_not @user.valid?, "#{invalid_login.inspect} should be invalid"
  59. end
  60. end
  61. test "login should be unique" do
  62. duplicate_user = @user.dup
  63. duplicate_user.email = "foo@bar.com"
  64. @user.save
  65. assert_not duplicate_user.valid?
  66. end
  67. test "email addresses should be unique" do
  68. duplicate_user = @user.dup
  69. duplicate_user.login = "bar_foo"
  70. duplicate_user.email = @user.email.upcase
  71. @user.save
  72. assert_not duplicate_user.valid?
  73. end
  74. test "email addresses should be saved as lower-case" do
  75. mixed_case_email = "Foo@ExAMPle.CoM"
  76. @user.email = mixed_case_email
  77. @user.save
  78. assert_equal mixed_case_email.downcase, @user.reload.email
  79. end
  80. test "password should be present (nonblank)" do
  81. @user.password = @user.password_confirmation = " " * 6
  82. assert_not @user.valid?
  83. end
  84. test "password should have a minimum length" do
  85. @user.password = @user.password_confirmation = "a" * 5
  86. assert_not @user.valid?
  87. end
  88. end