mirror of
https://github.com/discourse/discourse.git
synced 2024-11-22 13:39:42 +08:00
FIX: Don’t log an error when rendering a 404
Currently, in the list controller, when encountering an unsafe redirect error, a 404 is rendered. The problem is that it’s done in a way that it also logs a fatal error (because a `Discourse::NotFound` exception was raised inside a `rescue_from` block). This patch addresses that issue by simply rendering a 404 without raising any error.
This commit is contained in:
parent
4c0af24173
commit
bf3d8a0a94
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue
Block a user