diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index bb6f5bb98..71451d04d 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -26,7 +26,8 @@ class UsersController < ApplicationController def index if params[:name].present? - @user = User.find_by_name!(params[:name]) + @user = User.find_by_name(params[:name]) + raise ActiveRecord::RecordNotFound if @user.blank? redirect_to user_path(@user, variant: params[:variant]) return end diff --git a/test/functional/users_controller_test.rb b/test/functional/users_controller_test.rb index 4e4cd8927..c6c02d522 100644 --- a/test/functional/users_controller_test.rb +++ b/test/functional/users_controller_test.rb @@ -3,7 +3,7 @@ require 'test_helper' class UsersControllerTest < ActionDispatch::IntegrationTest context "The users controller" do setup do - @user = create(:user) + @user = create(:user, name: "bob") end context "index action" do @@ -24,11 +24,16 @@ class UsersControllerTest < ActionDispatch::IntegrationTest assert_equal(User.count, response.parsed_body.css("urlset url loc").size) end - should "list all users for /users?name=" do + should "redirect to the user's profile for /users?name=" do get users_path, params: { name: @user.name } assert_redirected_to(@user) end + should "be case-insensitive when redirecting to the user's profile" do + get users_path, params: { name: @user.name.capitalize } + assert_redirected_to(@user) + end + should "raise error for /users?name=" do get users_path, params: { name: "nobody" } assert_response 404