songtianlun
cd558466be
- Add User model with validations for name and email - Implement UsersController with new action for signup - Create views for user signup and home page - Update routes to include signup path - Add bcrypt gem for password security - Include tests for user model and controller actions This commit establishes the foundation for user registration in the application, ensuring proper validation and security measures are in place. It also enhances the user experience by providing a dedicated signup page.
77 lines
2.1 KiB
Ruby
77 lines
2.1 KiB
Ruby
require "test_helper"
|
|
|
|
class UserTest < ActiveSupport::TestCase
|
|
# test "the truth" do
|
|
# assert true
|
|
# end
|
|
def setup
|
|
@user = User.new(name: "Example User", email: "user@example.com",
|
|
password: "foobar", password_confirmation: "foobar")
|
|
end
|
|
|
|
test "should be valid" do
|
|
assert @user.valid?
|
|
end
|
|
|
|
test "name should be present" do
|
|
@user.name = " " * 6
|
|
assert_not @user.valid?
|
|
end
|
|
|
|
test "email should be present" do
|
|
@user.email = " " * 6
|
|
assert_not @user.valid?
|
|
end
|
|
|
|
test "name should not be too long" do
|
|
@user.name = "a" * 51
|
|
assert_not @user.valid?
|
|
end
|
|
|
|
test "email should not be too long" do
|
|
@user.email = "a" * 244 + "@example.com"
|
|
assert_not @user.valid?
|
|
end
|
|
|
|
test "email validation should accept valid addresses" do
|
|
valid_addresses = %w[user@example.com USER@foo.COM A_US-ER@foo.bar.org
|
|
first.last@foo.cn alice+bob@baz.cn]
|
|
valid_addresses.each do |valid_address|
|
|
@user.email = valid_address
|
|
assert @user.valid?, "#{valid_address.inspect} should be valid"
|
|
end
|
|
end
|
|
|
|
test "email validation should reject invalid addresses" do
|
|
invalid_addresses = %w[user@example,com user_at_foo.org user.name@example.
|
|
foo@bar_baz.com foo@bar+baz.com foo@bar...cc]
|
|
invalid_addresses.each do |invalid_address|
|
|
@user.email = invalid_address
|
|
assert_not @user.valid?, "#{invalid_address.inspect} should be invalid"
|
|
end
|
|
end
|
|
|
|
test "email addresses should be unique" do
|
|
duplicate_user = @user.dup
|
|
@user.save
|
|
assert_not duplicate_user.valid?
|
|
end
|
|
|
|
test "email addresses should be saved as lower-case" do
|
|
mixed_case_email = "Foo@ExAMPle.CoM"
|
|
@user.email = mixed_case_email
|
|
@user.save
|
|
assert_equal mixed_case_email.downcase, @user.reload.email
|
|
end
|
|
|
|
test "password should be present (non blank)" do
|
|
@user.password = @user.password_confirmation = " " * 6
|
|
assert_not @user.valid?
|
|
end
|
|
|
|
test "password should have a minimum length" do
|
|
@user.password = @user.password_confirmation = " " * 5
|
|
assert_not @user.valid?
|
|
end
|
|
end
|