Files
Kevin McConnell 87c6557747 Limit length of full name during signup
If we don't validate for length, then signups that overflow the database
columns will unnecessarily create and cancel a tenant. Adding a
validation means we can avoid this.
2025-12-15 09:56:35 +00:00

89 lines
2.3 KiB
Ruby

require "test_helper"
class SignupTest < ActiveSupport::TestCase
test "validates email format for identity creation" do
signup = Signup.new(email_address: "not-an-email")
assert_not signup.valid?(:identity_creation)
assert signup.errors[:email_address].any?
signup = Signup.new(email_address: "valid@example.com")
assert signup.valid?(:identity_creation)
end
test "#create_identity" do
signup = Signup.new(email_address: "brian@example.com")
magic_link = nil
assert_difference -> { Identity.count }, 1 do
assert_difference -> { MagicLink.count }, 1 do
magic_link = signup.create_identity
end
end
assert_kind_of MagicLink, magic_link
assert_empty signup.errors
assert signup.identity
assert signup.identity.persisted?
signup_existing = Signup.new(email_address: "brian@example.com")
assert_no_difference -> { Identity.count } do
assert_difference -> { MagicLink.count }, 1 do
magic_link = signup_existing.create_identity
end
end
assert_kind_of MagicLink, magic_link
signup_invalid = Signup.new(email_address: "")
assert_raises do
signup_invalid.create_identity
end
end
test "#complete" do
Account.any_instance.expects(:setup_customer_template).once
Current.without_account do
signup = Signup.new(full_name: "Kevin", identity: identities(:kevin))
assert signup.complete
assert signup.account
assert signup.user
assert_equal "Kevin", signup.user.name
signup_invalid = Signup.new(
full_name: "",
identity: identities(:kevin)
)
assert_not signup_invalid.complete
assert_not_empty signup_invalid.errors[:full_name]
end
end
test "#complete with invalid data" do
Current.without_account do
signup = Signup.new
assert_not signup.complete
assert signup.errors[:full_name].any?
assert signup.errors[:identity].any?
assert_nil signup.account
assert_nil signup.user
end
end
test "#complete with name that is too long" do
Current.without_account do
signup = Signup.new(full_name: "A" * 241, identity: identities(:kevin))
signup.expects(:create_tenant).never
assert_not signup.complete
assert signup.errors[:full_name].any?
assert_nil signup.account
assert_nil signup.user
end
end
end