diff --git a/app/controllers/list_controller.rb b/app/controllers/list_controller.rb index cbdb6404604..89e602605eb 100644 --- a/app/controllers/list_controller.rb +++ b/app/controllers/list_controller.rb @@ -50,7 +50,7 @@ class ListController < ApplicationController ].flatten rescue_from ActionController::Redirecting::UnsafeRedirectError do - raise Discourse::NotFound + rescue_discourse_actions(:not_found, 404) end # Create our filters diff --git a/spec/requests/list_controller_spec.rb b/spec/requests/list_controller_spec.rb index 69f97f4e73a..4e86f5790a1 100644 --- a/spec/requests/list_controller_spec.rb +++ b/spec/requests/list_controller_spec.rb @@ -1227,17 +1227,27 @@ RSpec.describe ListController do end context "when redirect raises an unsafe redirect error" do + let(:fake_logger) { FakeLogger.new } + before do ListController .any_instance .stubs(:redirect_to) .raises(ActionController::Redirecting::UnsafeRedirectError) + Rails.logger.broadcast_to(fake_logger) end + after { Rails.logger.stop_broadcasting_to(fake_logger) } + it "renders a 404" do get "/c/hello/world/bye/#{subsubcategory.id}" expect(response).to have_http_status :not_found end + + it "doesn’t log an error" do + get "/c/hello/world/bye/#{subsubcategory.id}" + expect(fake_logger.fatals).to be_empty + end end context "when provided slug is gibberish" do