Files
fizzy/test/models/user_test.rb
T
Mike Dalessio 4602cd3cdd Add verified_at timestamp to use for spam prevention
User are marked as verified after a join code is redeemed. The user is
redirected to Users::VerificationsController, either:

- after submitting a valid magic link code,
- or immediately after redeeming the join code (if they're already
  authenticated with the correct identity)

Account owners are automatically verified when the account is
created (because they have already provided a magic link code at that
point).

This sets up for later commits that will backfill existing users and
require verification before sending notification emails.

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-05 21:51:44 -05:00

84 lines
2.0 KiB
Ruby

require "test_helper"
class UserTest < ActiveSupport::TestCase
test "create" do
user = User.create!(
account: accounts("37s"),
role: "member",
name: "Victor Cooper"
)
assert_equal [ boards(:writebook) ], user.boards
assert user.settings.present?
end
test "creation gives access to all_access boards" do
user = User.create!(
account: accounts("37s"),
role: "member",
name: "Victor Cooper"
)
assert_equal [ boards(:writebook) ], user.boards
end
test "deactivate" do
assert_changes -> { users(:jz).active? }, from: true, to: false do
assert_changes -> { users(:jz).accesses.count }, from: 1, to: 0 do
users(:jz).tap do |user|
user.stubs(:close_remote_connections).once
user.deactivate
end
end
end
end
test "initials" do
assert_equal "JF", User.new(name: "jason fried").initials
assert_equal "DHH", User.new(name: "David Heinemeier Hansson").initials
assert_equal "ÉLH", User.new(name: "Éva-Louise Hernández").initials
end
test "setup?" do
user = users(:kevin)
user.update!(name: user.identity.email_address)
assert_not user.setup?
user.update!(name: "Kevin")
assert user.setup?
end
test "verified? returns true when verified_at is present" do
user = users(:david)
user.update_column(:verified_at, Time.current)
assert user.verified?
end
test "verified? returns false when verified_at is nil" do
user = users(:david)
user.update_column(:verified_at, nil)
assert_not user.verified?
end
test "verify sets verified_at when not already verified" do
user = users(:david)
user.update_column(:verified_at, nil)
assert_nil user.verified_at
user.verify
assert_not_nil user.reload.verified_at
end
test "verify does not update verified_at when already verified" do
user = users(:david)
original_time = 1.day.ago
user.update_column(:verified_at, original_time)
user.verify
assert_equal original_time.to_i, user.reload.verified_at.to_i
end
end