songtianlun
f110f26c0b
- Update `destroy` action in `SessionsController` to log out only if the user is currently logged in. - Add a check in the `authenticated?` method of the `User` model to return false if `remember_digest` is nil. - Enhance integration tests to simulate logout in another browser session and verify that the logout link is not present after logging out. These changes improve the robustness of the session management by preventing unnecessary logout attempts and ensuring that authentication checks are more reliable.
81 lines
2.2 KiB
Ruby
81 lines
2.2 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
|
|
|
|
test "authenticated? should return false for a user with nil digest" do
|
|
assert_not @user.authenticated?('')
|
|
end
|
|
end
|