Files
fizzy/gems/fizzy-saas/test/controllers/signups_controller_test.rb
T
2025-10-31 16:24:30 +01:00

55 lines
1.7 KiB
Ruby

require "test_helper"
class SignupsControllerTest < ActionDispatch::IntegrationTest
setup do
@signup_params = {
full_name: "Brian Wilson",
email_address: "brian@example.com",
company_name: "Beach Boys"
}
@starting_tenants = ApplicationRecord.tenants
# Clear script_name for untenanted signup tests
integration_session.default_url_options[:script_name] = nil
end
test "should require http basic authentication" do
get saas.new_signup_url
assert_response :unauthorized
end
test "should get new" do
get saas.new_signup_url, headers: http_basic_auth_headers
assert_response :success
assert_select "h2", "Enter your email address to get started."
assert_select "input[name='signup[email_address]']"
end
test "should create signup and redirect to magic link page" do
assert_no_difference -> { ApplicationRecord.tenants.count } do
post saas.signup_url, params: { signup: { email_address: @signup_params[:email_address] } }, headers: http_basic_auth_headers
end
assert_redirected_to session_magic_link_path
end
test "should render new with errors when signup fails validation" do
invalid_params = { email_address: "" }
assert_no_difference -> { ApplicationRecord.tenants.count } do
post saas.signup_url, params: { signup: invalid_params }, headers: http_basic_auth_headers
end
assert_response :unprocessable_entity
assert_select ".alert--error"
end
private
def http_basic_auth_headers
credentials = ActionController::HttpAuthentication::Basic.encode_credentials("testname", "testpassword")
{ "HTTP_AUTHORIZATION" => credentials }
end
end